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:
- 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.
- 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:
- 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).
- 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 ofiy_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]¶
-
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 argumentv
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]
- u(str): The
-
iy_unit_setter
(u)[source]¶ Custom setter for
iy_unit
for passive sensors. Checks that the argumentu
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)"]
- u(str): The
-
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 ARTSiy_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
isFalse
the returned function will use theyCalc
WSV to simulate the measurement. OtherwiseyCalcAppend
will be used.Parameters:
- append(bool): If
True
the produced function will use - yCalcAppend to calculate the measured signal.
- append(bool): If
-
-
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.- the line of sight data by calling the
-
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 workspacews
.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 runningy_calc
.- Parameters:
- append(bool): Whether the call should use
yCalcAppend
- or not. Active sensors will probably have to throw an exception here.
- append(bool): Whether the call should use
-
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.
- append(bool): Whether the call should use
-
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.