Module: sasktran.emission

Classes that describe the emissions from atmospheric constituents.

See our Useful Shorthands for emissions that we use a lot.

Base Classes

class sasktran.Emission(**kwargs)

Bases: sasktran.emission.EmissionBase

Class which represents the emission of a species in the atmosphere. Most of the time it is not recommended to use this class and more specific classes, such as EmissionTable, should be used instead.


name (str) – Name handle of the emission to create.


Calculates the isotropic emission rate.

  • atmospheric_state (sasktran.Climatology) – Atmospheric state (sometime called background climatology, corresponds to sasktran.Atmosphere.atmospheric_state). Typically the background climatology must support temperature and pressure, e.g. msis90. Some optical properties may not need a background climatology, for example Mie aerosols, however one must still be passed in for the function to operate.

  • latitude (float) – Latitude in degrees.

  • longitude (float) – Longitude in degrees.

  • altitude (float) – Altitude in meters.

  • mjd (float) – Modified Julian Date.

  • wavelengths (np.array) – Wavelengths in nm.

  • isground (bool, Optional) – Set to true if this is a ground emission, default is False.


emission – Array of emissions in [photons/sec/nm/ster/cm2], same length at wavelengths

Return type


Useful Shorthands

class sasktran.EmissionTable(altitude_m: numpy.ndarray, wavel_nm: numpy.ndarray, volumeemission: numpy.ndarray)

Bases: sasktran.emission.Emission

Defines an emission in the atmosphere represented with a table of volume emission rates on an altitude/wavelength grid.

  • altitude_m (np.ndarray) – Array of altitudes in [m] defining the altitude dimension of the emission grid

  • wavel_nm (np.ndarray) – Array of wavelengths in [nm] defining the wavelength dimension of the altitude grid

  • volumeemission (np.ndarray) – Two dimensional array of volume emission rates in [photons/nm/sec/ster] with dimension (len(alts), len(wavel))


>>> import sasktran as sk
>>> alts = np.arange(500, 100500, 1000)
>>> wavel = np.linspace(300, 350, 50)
>>> ver = np.ones((len(alts), len(wavel)))
>>> emission = sk.EmissionTable(alts, wavel, ver)
>>> print(emission)
class sasktran.EmissionThermal(emissivity=1.0)

Bases: sasktran.emission.Emission

Class used to enable thermal emissions within the HR radiative transfer model. Currently only works as part of a full radiative transfer calculation.


>>> import sasktran as sk
>>> emission = sk.EmissionThermal()
>>> geometry = sk.VerticalImage()
>>> geometry.from_sza_saa(sza=60, saa=60, lat=0, lon=0, tanalts_km=[10, 20, 30, 40], mjd=54372, locallook=0,         satalt_km=600, refalt_km=20)
>>> atmosphere = sk.Atmosphere()
>>> atmosphere['ozone'] = sk.Species(sk.O3OSIRISRes(), sk.Labow())
>>> atmosphere['air'] = sk.Species(sk.Rayleigh(), sk.MSIS90())
>>> atmosphere.emissions['thermal'] = emission
>>> engine = sk.EngineHR(geometry, atmosphere, wavelengths=[1000])
>>> engine.num_orders_of_scatter = 1
>>> engine.include_emissions = True
>>> engine.calculate_radiance()
array([[ 0.01218222,  0.00270503,  0.00055809,  0.00013423]])
class sasktran.ABandEmission(altArray_km)

Bases: sasktran.emission.Emission

run_model(atmosphere, refPoint, sunPos)
  • atmosphere (sk.Atmosphere) – Atmospheric state to run the emission model at. Note that the atmosphere MUST contain the keys ‘ozone’, ‘air’, and ‘O2’

  • refPoint (List) – 4 element list of [latitude, longitude, altitude, mjd] which defines the location to run the model at. The altitude parameter is generally not used.

  • sunPos (np.array) – 3 element unit vector of (x, y, z) in geocentric coordinates pointing towards the sun.


Source function for emission as a two dimensional array (wavelength, altitude), and corresponding wavelength array (wavlenA)

Return type

Jemi_nm, wavlenA

See Also


An object that describes the atmospheric constituents, and surface type to the engine. Atmospheric constituents are defined by a list of Species, and surfaces are defined by a given BRDF.