Importing other atmospheric components#
This page documents the method SignalCreation.Lidar.Lidar.import_other_atmospheric_component(),
which loads additional atmospheric species into the SignalCreation.Lidar.Lidar dataset,
such as ozone, along with their climatological profiles and absorption cross-sections.
These auxiliary fields are essential for optical transmission and DIAL-type ozone retrievals.
Overview#
##############################
# 3. Other Atmospheric Data #
##############################
lidar.import_other_atmospheric_component("ozone")
This method complements SignalCreation.Lidar.Lidar.import_atmospheric_component()
by adding species-specific data (currently ozone) to the internal dataset _lidar.
The resulting variables include:
Ozone climatology (mean and standard deviation)
Ozone absorption cross-sections for each active LIDAR wavelength
Method signature#
def import_other_atmospheric_component(
self,
atm_cpt: str | list = 'all'
) -> None:
"""
Import into the dataset other atmospheric components (like ozone)
"""
Parameters#
Parameter |
Description |
|---|---|
|
Component(s) to import (e.g., |
Currently supported components#
ozone: adds climatological and spectroscopic data for ozoneOther atmospheric species will be added in future versions (e.g., SO₂, NO₂)
XML configuration#
All input files are defined in the XML parameter file, under the <Read> section.
Example configuration for ozone:
<Dial>
<Read>
<!-- Ozone climatology -->
<Climatology_ozone_file>
<filenames type="relativepath">
Configuration_files/Climatology_files/climatology_ozone_ohp.nc
</filenames>
<format>netcdf</format>
</Climatology_ozone_file>
<!-- Ozone absorption cross-sections -->
<Cross_section_file>
<filenames type="relativepath">
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_218K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_228K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_243K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_273K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_295K.dat
</filenames>
<format>Bass And Paur files</format>
<fill_value>nan</fill_value>
</Cross_section_file>
</Read>
</Dial>
Fields description#
Climatology_ozone_file Points to a NetCDF file containing ozone climatological profiles (mean and standard deviation). The file must contain altitude as the vertical coordinate and optionally time or month dimensions.
Cross_section_file Defines one or more text data files containing ozone absorption cross-sections at different temperatures. The supported format (e.g., Bass and Paur, BDM, etc.) must match the reader implemented in the
SignalCreation.CrossSection.CrossSectionclass.fill_value Defines how missing values should be handled (default:
nan).
Supported ozone cross-section formats#
The program currently supports four cross-section file formats.
Use one of the following strings in the XML tag <Cross_section_file><format>…</format>:
Format string (XML) |
Internal constant |
Notes |
|---|---|---|
|
|
Tabulated Serdyuchenko values |
|
|
|
|
|
Brion–Daumont–Malicet temperature sets |
|
|
Classic Bass & Paur datasets |
Example (choose the correct format string for your dataset):
<Dial>
<Read>
<Cross_section_file>
<filenames type="relativepath">
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_218K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_228K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_243K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_273K.dat,
Configuration_files/Main_files/Ozone_cross_section/O3_CRS_BDM_295K.dat
</filenames>
<format>BDM files</format>
<fill_value>nan</fill_value>
</Cross_section_file>
</Read>
</Dial>
Warning
The <format> value must match exactly one of the four supported strings above.
Otherwise the code raises a RuntimeError indicating the allowed types.
Tip
If you switch to Serdyuchenko data, update both the filenames and the format, e.g.:
<format>SERDYUNCHENKO values file</format> or
<format>SERDYUNCHENKO coefficient file</format>.
Processing steps#
Checks and validation Ensures requested components are supported (currently only ozone). Raises a runtime error if the component is unknown.
Ozone climatology import Reads the file defined under
Climatology_ozone_fileand loads:Climatology_ozone(mean profile)Climatology_ozone_std(standard deviation)
These profiles are interpolated on the LIDAR altitude grid and stored as
xarray.DataArrayobjects.Cross-section import Reads the ozone absorption cross-sections defined in
Cross_section_file. Each section is loaded and stored in the internal dictionary_cross_section["Ozone"].Wavelength loop For each wavelength present in the LIDAR raw data (laser and received), the method computes and stores the corresponding ozone cross-section as a function of altitude.
The resulting variables are named:
ozone_cross_section_<λ>(e.g.,ozone_cross_section_355)
Dataset update All resulting arrays are added to the internal dataset
_lidarviatf.add_new_dataarray_to_dataset(), with proper units and metadata.
Example usage#
from SignalCreation.Lidar import Lidar
lidar = Lidar("Configuration_files/Parameters/example_station.xml", "2024-03-28")
lidar.import_lidar_data()
lidar.import_atmospheric_component()
lidar.import_other_atmospheric_component("ozone")
print(lidar._lidar[["Climatology_ozone", "ozone_cross_section_355"]])
Resulting variables in _lidar#
Variable |
Description |
|---|---|
|
Mean ozone number density (m⁻³) |
|
Standard deviation of ozone (m⁻³) |
|
Absorption cross-section (m²) at λ nm |
Units and conventions#
All concentration values are expressed in number density (m⁻³).
Cross-sections are expressed in m² per molecule.
Altitude is interpolated on the same grid as the LIDAR signal.
Wavelengths are retrieved automatically from channel metadata in _lidar.
Note
These ozone profiles are primarily used for: - computing optical transmissions, - comparing retrieval outputs with climatology, - or constraining inversion algorithms.
Status and development#
Warning
Currently, only ozone is implemented and tested in production. The structure is designed to accommodate other species in the future (SO₂, NO₂, etc.).
Planned enhancements include:
Interpolation of climatology by month and latitude
Temperature-dependent cross-section interpolation
Integration with ACTRIS standard datasets for species climatologies
Consistency check between auxiliary files and retrieval configuration