What’s new?#


For now, Eradiate uses a “ZeroCalVer” versioning scheme. The ZeroVer part reflects the relative instability of our API: breaking changes may happen at any time. The CalVer part gives an idea of how fresh the version you are running is. We plan to switch to a versioning scheme more similar to SemVer in the future.

Updates are tracked in this change log. Every time you decide to update to a newer version, we recommend that you to go through the list of changes. We try hard to remain backward-compatible and warn in advance for deprecation when necessary—we also advise to not ignore DeprecationWarnings.

Entries marked with a ︎⚠️ symbol require particular attention during upgrade.

v0.23.1 (21 April 2023)#

Breaking changes#

  • The coddington_2021-1_nm dataset is now the default solar irradiance spectrum (PR300). If you used to work with the default value when defining the illumination in your experiments, this change might affect the measured radiance values.

  • The newly introduced DEMExperiment now holds the support for digital elevation models. Accordingly, the AtmosphereExperiment does no longer support digital elevation models.

Deprecations and removals#

Improvements and fixes#

  • Added support for loading spectral response function data sets from custom paths (PR270).

  • ⚠️ Complete rewrite of the MultiDistantMeasure construction code (PR274, PR281). Previous functionality is preserved in the form of more specialized and simpler interfaces, and we now support a gridded coverage of the hemisphere specified as the Cartesian product of zenith and azimuth lists of values.

  • Added a helper to grid against VZA and VAA the results obtained with a MultiDistantMeasure with a grid layout (PR274). See unstack_mdistant_grid().

  • MeasureSpectralConfig.srf’s converter loads the prepared SRF version first, by default, and falls back to the raw version if the former does not exist, in the case where srf is specified by a keyword (PR278).

  • Fixed the behaviour of the MeshTreeElement constructor when no units are specified (PR279).

  • Extended the distant measure line with the possibility to control the distance between ray origins and the target (PR275). The default behaviour is unchanged, effectively positioning ray origins at an infinite distance from the target.

  • All measures can now be attached a non-default sampler (PR280).

  • Fixed unnecessary memory allocations (PR282).

  • Added utility functions to srf_tools module (PR283).

  • Added MQDiffuseBSDF reflection model (PR286).

  • Fixed a bug where the bilambertian BSDF plugin would produce incorrect results when used with LLVM Mitsuba variants (PR297).

  • ⚠️ Refactoring of the Mode infrastructure (PR298).

  • Added versions 1 and 2 and the full spectrum extension of the TSIS-1 HSRS solar irradiance spectra (PR300).

  • The coddington_2021-1_nm dataset is now the default solar irradiance spectrum (PR300).

  • Introduced the DEMExperiment to handle scenes with digital elevation models. At this point it only supports plane-parallel atmospheric geometries (PR289).

  • ⚠️ Rewrite of the kernel interface (PR296).

  • ⚠️ Updates to the scene type hierarchy (PR296).

  • ⚠️ All measures are now batch-computed at each iteration of the spectral loop (PR296).

  • ⚠️ Atmosphere type hierarchy updates: altitude grid control, common spectral evaluation interface (PR296).

  • BlendPhaseFunction code was transitioned from a recursive to an iterative loop-based implementation (PR296).

  • RadProfile evaluation on arbitrary altitude grids is now permitted (PR296).

  • Introduced the SpotIllumination, which points a beam of light of fixed angular width at a target location (PR302).

  • Added a new module eradiate.constants to store physical constants used in Eradiate (PR312).

  • Added absorption and scattering bypass switches to the ParticleLayer class (PR316).

  • ⚠️ Moved Mitsuba logs to the mitsuba logger (PR318).

  • ⚠️ Centralized geometric information to SceneGeometry (PR319).

  • ⚠️ Made Atmosphere’s _params_* properties abstract for improved safety (PR319).

  • Fixed a major issue in volume definitions and parameter updates of BlendPhaseFunction (PR319).


  • Upgraded Sphinx Book theme to v1.0.0 (PR306).

Internal changes#

v0.22.5 (17 October 2022)#

New features#

  • Added support for various azimuth definition conventions (PR247).

  • Added an offline mode which disables all data file downloads (PR249).

  • Added support for Digital Elevation Models (DEM) (PR246).

Breaking changes#

  • Dropped the xarray metadata validation system (PR266).

Deprecations and removals#

  • Removed the deprecated Experiment.run() method (PR210).

  • Removed the path resolver component (PR251).

  • Renamed Experiment classes (PR252).

    • OneDimExperimentAtmosphereExperiment

    • RamiExperimentCanopyExperiment

    • Rami4ATMExperimentCanopyAtmosphereExperiment

Improvements and fixes#

  • Added the atmo-centimeter, a.k.a. atm-cm, to the unit registry (PR245).

  • Added spectral response functions for the VIIRS instrument onboard JPSS1 and NPP platforms (PR253).

  • Submodules and packages are now imported lazily (PR254, PR261). This significantly decreases import time for most use cases.

  • Optimized calls to Quantity.m_as() in InstancedCanopyElement.kernel_instances() (PR256).

  • Fixed incorrect scaling formula for datetime-based scaling of Solar irradiance spectra (PR258).

  • Added system information report to the eradiate show command-line utility (PR264).

  • Some dependencies are now optional, although recommended (PR266).

  • Added new sahara and continental particle radiative properties including the full scattering phase matrix (PR259).

  • Allow mixing a purely absorbing MolecularAtmosphere with a ParticleLayer (PR239).

  • Change the ExponentialParticleDistribution formulation to rate-based; allow scale-based parametrization for initialisation (PR271).

  • Fixed missing parameters in the LeafCloud.sphere() constructor (PR272).

  • Add spectral response function filtering utility (PR269).


  • Dependencies are now listed explicitly (PR266).

  • Major tutorial overhaul (PR209).

  • Rendered tutorial notebooks and added thumbnail galleries (PR273).

Internal changes#

  • Updated Mitsuba submodule to v3.0.2 (PR250, PR255, PR267). This notably fixes the sampling method of the tabphase plugin and a Dr.Jit warning on some Linux machines.

  • Aligned the tabphase_irregular plugin with the fix tabphase code (PR255).

  • Updated codebase to use attrsnext-generation APIs (PR268).

v0.22.4 (17 June 2022)#

New features#

  • Added a InterpolatedSpectrum.from_dataarray() class method constructor (PR243).

Breaking changes#

  • Removed temporary volume files used by the AbstractHeterogeneousAtmosphere line and the BlendPhaseFunction class (replaced by in-memory buffers). Corresponding file name and cache directory control parameters were removed as well (PR231).

Deprecations and removals#

  • Updated all tests to use eradiate.run() instead of the deprecated Experiment.run() method (PR227).

Improvements and fixes#

  • Added spectral response function data sets for POLDER instrument onboard PARASOL platform (PR232).

  • Added an extrapolated version of the thuillier_2003 solar irradiance spectrum to cover the full wavelength range of Eradiate (PR233).

  • Fixed a bug where converting an integer to a Spectrum would fail (PR236).

  • Fixed a bug where the two BSDFs in the CentralPatchSurface would be assigned in the wrong order (PR237).

  • Raise an exception when molecular concentrations are out of bounds (PR237).

  • Various fixes to the rpv plugin, among which a missing PDF term in the sample() method (PR240).

  • Fix incorrect spectral indexing of result datasets in CKD mode (PR241).

  • Improve the Solar irradiance spectrum initialisation sequence (PR242).

  • The thuillier_2003_extrapolated dataset is now the default Solar irradiance spectrum (PR242).

Internal changes#

  • Transitioned dependency management to pyproject.toml following PEP 621 (PR203).

  • Updated Mitsuba submodule (PR228).

  • Removed the angular regridding feature in TabulatedPhaseFunction and replaced with plugin selection (PR229).

v0.22.3 (22 May 2022)#

New features#

  • Added entry point eradiate.run(), which executes a full experiment pipeline and returns results as an xarray dataset (PR210).

Breaking changes#

  • Changed the ParticleLayer.dataset field’s default value to the more useful the continental aerosol dataset spectra/particles/govaerts_2021-continental.nc (PR212).

  • Changed the interface of the ParticleLayer: the tau_550 field is replaced by a more general tau_ref which sets the extinction optical thickness of the particle layer at a reference wavelength specified by the w_ref field. w_ref defaults to 550 nm, thus preserving prior behaviour (PR221).

Deprecations and removals#

  • Removed deprecated function ensure_array() (6228214).

  • Deprecated instance method Experiment.run() (PR210).

Improvements and fixes#

  • Added support for all missing AFGL 1986 reference atmospheres in CKD mode (PR185).

  • Fixed incorrect phase function blending in multi-component atmospheres (PR197, PR206).

  • Fixed incorrect volume data transform for spherical heterogeneous atmospheres (PR199).

  • Added default value for CKDSpectralContext.bin_set (PR205).

  • Added a -l option to the eradiate data info command-line utility. If this flag is set, the tool displays the list of files registered to each data store (PR208).

  • Added an optional DATA_STORES argument to the eradiate data info command-line utility which may be used to select the data stores for which information is requested (PR208).

  • Added a new load_dataset() converter. It allows to set fields expecting an x array dataset using a path to a file or a data store resource (PR212).

  • The ParticleLayer class no longer opens a dataset upon collision coefficient evaluation; instead, its dataset field now holds an xarray dataset (instead of a path), which does not change over the instance lifetime. This reduces the amount of time spent on I/O (PR212).

  • Added the possibility to optionally export extra fields useful for analysis and debugging upon calling AbstractHeterogeneousAtmosphere.eval_radprops() (PR206, PR212).

  • Re-formatted spectra/particles/govaerts_2021-*-extrapolated.nc data sets (PR213).

  • Replaced leftover calls to deprecated eradiate.data.open with eradiate.data.open_dataset (PR220).

  • Improved TabulatedPhaseFunction’s behaviour. If the phase function lookup table coordinate mu defines a regular grid, the phase function is no longer resampled on a regular grid, which results in improved performance. Otherwise, i.e. if mu defines an irregular grid, phase function data is resampled on a regular mu grid with a step equal to the smallest detected step in the mu coordinate array, which preserves accuracy (PR226).


  • Added tutorials on homogeneous and molecular atmospheres (PR194).

  • Added uninstallation instructions (PR217).

  • ParticleLayer: document format of dataset attribute (PR223).

Internal changes#

  • The progress configuration variable is now an IntEnum, allowing for string-based setting while retaining comparison capabilities (PR202).

  • Internal _util library is now util.misc (5a593d3).

  • Added a Numpydoc docstring parsing module (PR200).

  • Added a deprecated() decorator to mark a component for deprecation (PR200).

  • Updated regression testing interface for improved robustness and ease of use (PR207).

  • Rewrote eradiate data info CLI for improved maintainability (PR208).

  • Refactored ParticleLayer unit tests and added system tests (PR219, PR222, PR224).

v0.22.2 (23 March 2022)#

New features#

Improvements and fixes#

  • Account for spectral dependency of the King correction factor (PR187).

  • Fix wrong atmosphere shape size in plane parallel geometry with no scattering (PR195).


  • Major update of all documentation contents (PR192, PR193 and many commits).

  • Add Sphinx roles for GitHub links (2789499).

  • Add SVG to PNG export script (9e942a4).

  • Update logos with a more modern style (a3dfe36).

Internal changes#

  • Refactor regression testing framework to handle more use cases and make it more robust (PR188).

v0.22.1 (14 March 2022)#

This is the first official release of Eradiate.