Imaging Simulator

Simulator

class ImagingSimulator(sensors: List[ALISensor | ALISensorDualChannel], optical_axis: List[OpticalGeometry], atmosphere: Atmosphere, options: Dict | None = None, frontend_radiance: List[Dataset] | None = None, grid: OrbitalPlaneGrid | None = None)[source]

Given a sensor, position, and an atmosphere the ImagingSimulator generates a set of measurements.

Parameters:
  • sensors (List[ALISensor]) – A list of sensors that will be used to create the level 1 data. Should be derived from an imaging simulator.

  • optical_axis (List[OpticalGeometry]) – The optical geometry of each measurement. Should be a list the same length as sensors.

  • atmosphere (sk.Atmosphere) – The Sasktran atmosphere.

  • options – A dictionary of radiative transfer options.

  • frontend_radiance (List[xr.Dataset]) – A dataset containing the pre-calculated front-end radiances. This can be useful if radiance calculations take a substantial amount of time. If not provided front-end radiances will be calculated.

  • grid (sk.OrbitalPlaneGrid) – An optional OrbitalPlaneGrid in the case that an orbit is being simulated.

Examples

>>> import sasktran as sk
>>> from ali.instrument.sensor import ALISensor
>>> from ali.instrument.simulator import ImagingSimulator
>>> from ali.util.geometry import optical_axis_from_geometry
>>> import numpy as np
>>> ali = ALISensor(np.array([750.0]))
>>> geometry = sk.VerticalImage()
>>> geometry.from_sza_ssa(sza=60, ssa=90, lat=45.0, lon=0, tanalts_km=image_center_alts, mjd=mjd, locallook=0, satalt_km=500)
>>> optical_geometry = optical_axis_from_geometry(geometry)
>>> atmosphere = sk.Atmosphere()
>>> atmosphere['air'] = sk.Species(sk.Rayleigh(), sk.MSIS90())
>>> sim = ImagingSimulator([ali], [optical_geometry], atmosphere)
>>> l1 = sim.calculate_radiance()
class OMPSImagingSimulator(sensors: List[SpectrographFast], optical_axis: List[OpticalGeometry], atmosphere: Atmosphere, options: Dict | None = None)[source]