v0.25.x series#

v0.25.0 (20th December 2023)#

In this major release, we change the atmospheric profile interface for improved flexibility.

  • Eradiate’s atmospheric thermophysical profiles are no longer restricted to the built-in profiles. You can now use any profile, including data curated by yourself. Of course, the built-in profiles are still available. Thermophysical property handling is now externalized to a new library Joseki. Joseki’s output format is documented here.

  • We added an interface to customize atmospheric absorption data. If you need to fit the data for a specific use case (e.g. to work with an atmosphere from another planet than Earth), it is now possible. The data format is described in our data guide.

  • The quadrature rule used for spectral discretization in CKD mode can now be specified in a flexible way. The number of quadrature points is no longer set to a built-in value, and the atmospheric absorption datasets ship metadata that can be leveraged to dynamically select a quadrature that minimizes the error on atmospheric transmittance.

Important

This update changes the MolecularAtmosphere constructor. While we believe the new defaults improve consistency and convenience, existing codebases will require adaptation. In particular, the spectral range specified for data loading must be consistent with the spectral range covered by the sensor’s spectral response function. We strongly recommend going through the Molecular atmosphere basics tutorial. See also the Changed section below for more detail.

Added#

  • The quadrature rule used for spectral discretization in CKD mode can now be specified in a flexible way using the QuadSpec class and subclasses (PR344, PR375). This is configured at the Experiment through the quad_spec attribute.

  • Added the Ross Thick-Li Sparse (RTLS) surface reflection model (PR355).

  • Added the HeterogeneousAtmosphere.eval_transmittance() method (PR375).

Changed#

  • ⚠️ The MolecularAtmosphere.afgl_1986() and MolecularAtmosphere.ussa_1976() constructors are removed (PR344). Radiative property profile setup is now entirely controlled by the MolecularAtmosphere.thermoprops parameter. To construct these profiles, set MolecularAtmosphere.thermoprops to {"identifier": "afgl_1986-us_standard"} or {"identifier": "ussa_1976"}. See the API reference for details.

  • ⚠️ Standard profile-specific radiative profile classes AFGL1986RadProfile and US76ApproxRadProfile are replaced by the generic AtmosphereRadProfile (PR344).

  • ⚠️ Thermophysical profile components have been offloaded to Joseki (PR344), a new independent library that extends what was in our thermoprops subpackage.

  • Eradiate now uses Pint’s application registry (PR366). This improves compatibility with other software using Pint. The duplicate unit definition handling policy silently ignores repeated definitions of identical units.

  • Updated default data file lists available for usage with the eradiate data fetch tool (see Command-line interface reference for details) (PR375).

  • 📖 Many documentation updates and cleanup.

Fixed#

  • Fixed atmosphere state update during experiment setup (ensures that experiment scene geometry propagates down to each component of a HeterogeneousAtmosphere) (PR344).

  • Fixed the default path to the download directory when not using a development setup (PR375).

Internal changes#

  • 🖥️ Dependencies: added joseki (required; PR344, PR375); removed iapws (PR344); upgraded Mitsuba kernel from 0.1.0 to 0.1.1 (PR375).

  • 🖥️ Added a cfconventions.py module to store variable attributes (PR375).

  • 🖥️ Added wavenumber to the physical quantity definitions (PR344).

  • 🖥️ Add unit test for experiment with CAMS atmosphere (PR375).

  • 🖥️ Added converters convert_thermoprops() and convert_absorption_data() to convert atmospheric thermophysical profiles and absorption data specifications (PR344).

  • 🖥️ Added function locate_absorption_data() to locate the absorption data on the Eradiate online stable data store corresponding to a given codename and wavelength range (PR344).

  • 🖥️ Added interpolated-related exception types (PR344).

  • 🖥️ Modified the .AggregateCKDQuad pipeline step to work with a g coordinate instead of the previously used index coordinate (PR344).

  • 🖥️ Updated the reference dataset for regression test test_rami4atm_hom00_bla_sd2s_m03_z30a000_brfpp.py (PR344).

  • 🖥️ Renamed module _molecular_atmosphere.py to _molecular.py (PR344).

  • 🖥️ Modified BinSet class methods to take into account quadrature specifications (PR344).

  • 🖥️ Defined two convenient pytest fixtures for molecular atmospheres: us_standard_mono and us_standard_ckd_550nm (PR344).

  • 🖥️ Our codebase is now linted using Ruff.