ARTS Sensors

Class hierarchy that represents the different types of sensors in ARTS. The purpose of this hierarchy is to encapsulate all required settings and configurations related to the sensor in an ARTS simulation.

An ARTS simulation contains one or more sensors. The interaction between ARTS simulation and sensor object is structured as follows:

  1. Setup: During the setup phase the ARTS simulation calls the setup method of each sensor object. During this call the sensor is expected to setup all necessary workspace variables on the provided workspace and perform all necessary preparatory calculations, such as calculating absorption and scattering data.
  2. Run: During the run phase, the simulation calls the get_data(…) method of the sensor during which the sensor is supposed to request all necessary data, that hasn’t been set in advance.

In addition to that, the simulation needs to know which WSMs to call to compute the measurement vector. To this end, each sensor needs to provide the following factory methods:

  1. make_preparation_function: This function should generate a function that runs all necessary preparations on a provided workspace. Currently, this requires setting only the stokes dimension (because of an inconsistency in ARTS).
  2. make_y_calc_function: This function should generate a functions that runs the necessary workspace methods to simulate the measurements on a given workspace.

Both of these factory methods must produce functions that can be converted into an ARTS agenda, so that they can be used also within the inversion iterate agenda for retrievals.

In general, sensors should store important within their own, anonymous workspace variables, which should then just be used to replace the input WSV in all sensor-related WSM calls. Due to the inconsistency metioned abover, however, this principle does not work for the stokes dimension as it is not consistently passed to the surface agenda.

Attributes:

wsm(dict): Alias for the :code:’workspace_methods’ dictionary
from ‘typhon.arts.workspace.methods’
wsv(dict): Alias for the workspace_variables dictionary
from typhon.arts.workspace.variables
class parts.sensor.sensor.ActiveSensor(name, f_grid, stokes_dimension, range_bins=None)[source]

Bases: parts.sensor.sensor.Sensor

Specialization of the abstract Sensor class that implements active sensors (Radar).

iy_transmitter_agenda

The iy_transmitter_agenda which is required for active sensors. Input arguments of iy_transmitter_agenda are replaced by the private workspace variables of the sensor.

Returns:

The iy_transmitter_agenda for the active sensor.
make_iy_main_agenda(scattering=False)[source]

The :code: iy_main_agenda for active sensor. Currently uses the single scattering radar module, but might be extended at some point.

make_preparation_function()[source]

Return the workspace preparation function, which prepares a workspace for simulating the signal recorded by the sensor.

Returns:

The function to prepare the workspace.
make_y_calc_function(append=False, scattering=False)[source]

Returns y_calc function, which computes the radar signal on an accordingly prepared workspace. This function can be converted into an ARTS agenda and thus included in the other agendas using the INCLUDE statement.

Returns:

The function to compute the radar signal.
setup(ws, scattering=True)[source]

General setup for an ARTS sensor.

This method performs the following steps to setup the sensor:

  • Copy the iy_main_agenda of the sensor into a private workspace variable in the workspace
  • Copy the f_grid into a private workspace variable
  • Compute and check scat_data and copy results into private workspace variables.
  • Copy iy_aux_vars and iy_unit to the workspace and store in prive workspace variables.

Paremters:

ws(typhon.arts.workspace.Workspace): The workspace on which
to perform the setup of the sensor.
class parts.sensor.sensor.CloudSat(name='cloud_sat', range_bins=array([ 500., 1000., 1500., 2000., 2500., 3000., 3500., 4000., 4500., 5000., 5500., 6000., 6500., 7000., 7500., 8000., 8500., 9000., 9500., 10000., 10500., 11000., 11500., 12000., 12500., 13000., 13500., 14000., 14500., 15000., 15500., 16000., 16500., 17000., 17500., 18000., 18500., 19000., 19500.]), stokes_dimension=2)[source]

Bases: parts.sensor.sensor.ActiveSensor

class parts.sensor.sensor.ICI(name='ici', channels=None, stokes_dimension=2)[source]

Bases: parts.sensor.sensor.PassiveSensor

class parts.sensor.sensor.PassiveSensor(name, f_grid, stokes_dimension=1)[source]

Bases: parts.sensor.sensor.Sensor

Specialization of the abstract Sensor class for passive sensors.

iy_aux_vars_setter(v)[source]

Custom setter for iy_aux_vars for passive sensors. Checks that the argument v has a valid value for passive simulations.

Parameters:
u(str): The iy_aux_vars to use for passive simulations. Must
be a list containing any of ["Radiative background", "Optical depth]
iy_unit_setter(u)[source]

Custom setter for iy_unit for passive sensors. Checks that the argument u has a valid value for passive simulations.

Parameters:
u(str): The iy_unit to use for passive simulations. Must
be one of ["1", "RJBT", "PlackBT", "W(m^2 m sr)", "W/(m^2 m-1 sr)"]
make_iy_main_agenda(scattering=False)[source]

Factory property that returns the iy_main_agenda that has to be used for passive sensors.

Return:

The ARTS iy_main_agenda
make_preparation_function()[source]

Return the workspace preparation function, which prepares a workspace for simulating the signal recorded by the sensor.

Returns:

The function to prepare the workspace.
make_y_calc_function(append=False, scattering=False)[source]

Factory function that produces a function that simulates a passive measurement with the given sensor on an accordingly prepared workspace.

If append is False the returned function will use the yCalc WSV to simulate the measurement. Otherwise yCalcAppend will be used.

Parameters:

append(bool): If True the produced function will use
yCalcAppend to calculate the measured signal.
class parts.sensor.sensor.Sensor(name, f_grid=None, stokes_dimension=1)[source]

Bases: parts.arts_object.ArtsObject

Defines an interface and implementes common functionality for classes representing ARTS sensors.

Declares ARTS properties common to all types of sensors handled by ARTS.

Arts Attributes:

properties: The ARTS properties that hold the data common to
all sensors in ARTS.
get_data(ws, data_provider, *args, **kwargs)[source]

Get required data from data provided.

This function obtains required data from the data provider if it has not been fixed in advance. The data expected from the data provider are the following:

  • the line of sight data by calling the get_line_of_sight method of the provided data provider.
  • the sensor position data by calling the :code: get_sensor_pos method of the provided data provider.
  • the pencil beam offsets by calling the :code: get_line_of_sight_offsets

This function also checks the sensor data by calling sensor_checkedCalc and stores the result in a private WSV.

make_iy_main_agenda(scattering=False)[source]

Property that takes the role of a factory function that creates the iy_main_agenda for the given sensor. This will depend on the sensor type and its specific settings, so must be implemented by the inhereting classes.

make_preparation_function(append=False)[source]

Factory method for a preparation function f(ws) which sets all workspace variables that are required before simulating a measurement on a given workspace ws.

The separation into a preparation function and a y_calc function is currently necessary as the scattering solver can be chosen independently from the sensor, so the simulation object must be able to run the scattering solver between the sensor preparations and running y_calc.

Parameters:
append(bool): Whether the call should use yCalcAppend
or not. Active sensors will probably have to throw an exception here.
make_y_calc_function(append=False, scattering=False)[source]

Factory method that should create a function f that runs the actual radiative transfer on a provided workspace.

Parameters:
append(bool): Whether the call should use yCalcAppend
or not. Active sensors will probably have to throw an exception here.
setup(ws, scattering=True)[source]

General setup for an ARTS sensor.

This method performs the following steps to setup the sensor:

  • Copy the iy_main_agenda of the sensor into a private workspace variable in the workspace
  • Copy the f_grid into a private workspace variable
  • Compute and check scat_data and copy results into private workspace variables.
  • Copy iy_aux_vars and iy_unit to the workspace and store in prive workspace variables.

Paremters:

ws(typhon.arts.workspace.Workspace): The workspace on which
to perform the setup of the sensor.