Distribution Statement
Algorithms in GeoIPS#
An algorithm is a GeoIPS plugin designed to manipulate and convert datasets. Algorithms cannot operate independently; they take raw meteorological data and transform them. These manipulations may include quality control, time and location filtering, and derived variable calculations.
For example, an algorithm could scale data to a specific range useful for plotting.
Algorithms vary in complexity based on requirements.
A simple example is the wind barb algorithm, which primarily converts wind speed units and optionally applies data bounds.
More complex algorithms include the single channel algorithm, which involves masking, solar zenith corrections, scaling, normalization, and unit conversion. The stitched data fusion algorithm is another complex algorithm. It combines overlapping satellite data, adjusting for satellite zenith angle and parallax correction in the overlap zones.
Algorithms can be executed in two ways:
Direct Invocation: Call the algorithm from within a program:
from geoips.interfaces import algorithms algorithm_name = "single_source" algorithms.get_plugin(algorithm_name)
2. Inclusion in Product Specifications: Include the algorithm in a product or product default specification, which can be executed via the command line or a test script using a GeoIPS procflow.
For examples of including an algorithm in a product implementation, see the product defaults and products tutorials.
Plugin arguments#
The arguments accepted by a algorithm step (validated in Order-Based Processing workflows) are defined by the model below. These fields are generated directly from the code, so they always reflect the current validation rules.
- pydantic model geoips.pydantic_models.v1.algorithms.AlgorithmArgumentsModel[source]
Algorithm step argument definition.
Pydantic model defining and validating Algorithm step arguments.
- Fields:
- Validators:
- field gamma_list: List[float] | None = None
- field grid_geo: bool | None = None
- field input_units: str = None
Units of input data, for applying necessary conversions. Defaults to None, resulting in no unit conversions.
- field inverse: bool = None
Boolean flag indicating whether to inverse (True) or not (False) * If True, returned data will be inverted * If False, returned data will not be inverted
- Constraints:
strict = True
- field mask_day: bool = None
- field mask_night: bool = None
- field max_day_zen: float | None = None
- field max_night_zen: float | None = None
- field max_outbounds: str | None = None
Method to use when applying maximum value of’output_data_range’, if specified. Valid values are: * retain: keep all pixels as is * mask: mask all pixels that are out of range * crop: set out of range values to the nearest bound (min_val or max_val)
- field min_night_zen: float | None = None
- field min_outbounds: str | None = None
Method to use when applying minimum value of’output_data_range’, if specified. Valid values are: * retain: keep all pixels as is * mask: mask all pixels that are out of range * crop: set out of range values to the nearest bound (min_val or max_val)
- field norm: bool = None
Boolean flag indicating whether to normalize (True) or not (False)* * If True, returned data will be in the range from 0 to 1: * If False, returned data will be in the range from min_val to max_val
- Constraints:
strict = True
- field output_data_range: tuple[typing.Annotated[float, Strict(strict=True)], typing.Annotated[float, Strict(strict=True)]] | None = None
list of min and max value for output data product. This is applied LAST after all other corrections/adjustments. If None, use data.min() and data.max()
- field output_units: str = None
Units of input data, for applying necessary conversions. Defaults to None, resulting in no unit conversions.
- field pressure_key: str | None = None
- field pressure_level_range: tuple[float, float] | None = None
list of min and max pressure levels to filter derived motion wind retrievals. Defaults to None, which results in using all wind retrievals.
- field satellite_zenith_angle_cutoff: float | None = None
Cutoff for masking data where satellite zenith angle exceedsthreshold. None, no masking
- field scale_factor: float | None = None
- field sun_zen_correction: bool | None = None
Boolean flag indicating whether to apply solar zenith correction(True) or not (False) * If True, returned data will have solar zenith correction applied (see data_manipulations.corrections.apply_solar_zenith_correction) * If False, returned data will not be modified based on solar zenith angle)
- field time_dim: int | None = None (alias 'Time_Dimension')
- field time_fcst: int | None = None
- field time_key: str = None
- field var_map: Dict[str, str] | None = {}
Dictionary that maps input variables to names used in xobj
- field variables: List[str] | None = None
List of input variables used in algorithm processing