Ozone retrieval (DIAL)#

This page documents SignalCreation.Lidar.Lidar.ozone_process(), which computes ozone number-density profiles from on/off DIAL channels, with optional aerosol correction and binomial prefiltering.

Overview#

  • Selects slope inputs (default prefix) over Signal_Type in [100,129].

  • For each even Signal_Type (on-track), pairs with the corresponding odd off-track.

  • Runs DialProcess to compute ozone, with configurable cross-sections and options.

  • Writes ozone value + uncertainty and several diagnostic arrays.

Function signature#

def ozone_process(
    self,
    list_data_name: None | list = None,
    error_suffix: None | str = None,
    input_prefix: str | None = None,
    prefix_output: str | None = None,
    binomial_filter_number_of_point: str | int | None = None,
    rayleigh_cross_section_method: str | None = None,
    target_molecule: str | None = None,
    ozone_cross_section_name: str | None = None,
    atm_cross_section_name: str | None = None,
    density_name: str | None = None,
    aerosol_extinction_name: str | None = None,
    aerosol_diffusion_name: str | None = None,
    atm_diffusion_name: str | None = None,
    angstrom_coef_alpha: np.ndarray | float | int | None = None,
    angstrom_coef_beta: np.ndarray | float | int | None = None,
    replace_backscatter_ratio_less_than_1: bool | None = None,
    apply_aerosol_correction: bool = None,
) -> None:
    \"\"\"Compute ozone profiles from DIAL on/off channels and store outputs.\"\"\"

Parameters (highlights)#

  • input_prefix (str | None, default: :code:`nv.get_var_name(‘slope’)`)

  • prefix_output (str | None, default: :code:`nv.get_var_name(‘ozone’)`)

  • binomial_filter_number_of_point (int | str, default from XML)

  • Aerosol correction toggled via Ozone/apply_aerosol_correction; if true, also uses angstrom_coef_alpha, angstrom_coef_beta, and aerosol extinction/diffusion inputs (auto-detected if missing).

Workflow#

  1. Discover input variables if list_data_name is empty.

  2. Identify on/off pairs by Signal_Type parity.

  3. Instantiate DialProcess with provided cross-sections and options.

  4. Compute ozone concentration and uncertainty.

  5. Save outputs under prefix_output; also write diagnostics if missing:

    • diff_atmospheric_correction

    • diff_ozone_cross_section

    • corayl (Rayleigh-related diagnostic)

Outputs#

  • Ozone variable + uncertainty written via nv.add_lidar_da().

  • Resolution attribute copied from the on-track input.

  • Returns None (modifies dataset in place).

See also#