v1.1.x series (next stable)¶
v1.1.0 (23rd March 2026)¶
This major release upgrades our codebase to support more Python versions and improve maintainability. This long overdue maintenance notably includes:
Full support of Numpy 2. The development environment is now based on Python 3.10.
Critical fixes to the CKD database lookup functions, now offloaded to the new AxsDB library, which allow the safe use of recent xarray versions. Before this change, the performance penalty incurred by using xarray 2025 or later would slow down computations to a point where Eradiate would become unusable. For more information about this performance issue, see the AxsDB documentation.
The update of our radiometric kernel to Mitsuba v3.7.1. With this, we support Python 3.9 to 3.13.
Changes to our dependency tree: we replace the graph management infrastructure of Hamilton, used in our post-processing, with a home-grown solution based on NetworkX, greatly simplifying our pipeline definitions; and we replace astropy with Skyfield, which has a lower footprint and a narrower scope.
Addition of a polarized surface reflection model based on the work of Maignan et al. (2009).
Changed¶
⚠️ The radiometric kernel is upgraded to upstream Mitsuba v3.7.1 (PR531). This has the following consequences:
When outputting Stokes vector components and variance, the variance product only contains data for the I component (the others are set to NaN).
The kernel log redirection feature was removed and the
eradiate.kernel.loggingmodule was deleted.Expert interface users should now use the new
arectangleshape plugin instead ofrectangle. The latter has been modified to describe rectangles as triangulated meshes, which can be problematic as the native kd-tree used for double-precision ray intersections is lacking safeguards to guarantee that meshes are watertight:arectanglebrings back the prior implementation ofrectangle, which doesn’t have these problems.The
mitsuba.load_dict()’s default behaviour has changed and performs optimizations that are generally not wanted within Eradiate. A newmi_load_dict()wrapper disables these optimizations, preserving prior behaviour, and should be preferred to load Mitsuba objects in Eradiate.
The
ParticleLayerclass’s constructor now warns if the specified reference wavelength (default: 550 nm) is missing from thewcoordinate of the aerosol optical property dataset (PR530).⚠️ Astropy is replaced by Skyfield for astronomical calculations (PR532). In practice, this applies to the
SolarIrradianceSpectrumclass.The documentation and default parameters of the Hapke BSDF have been updated (PR536).
⚠️ 🖥️ The development environment now uses Python 3.10 (PR539).
🖥️ The suite of system tests was redesigned to improve reliability (PR517). Plots can now be disabled for improved performance.
⚠️ 🖥️ Absorption database lookup is transferred to the AxsDB library (PR545). This notably allows to register custom absorption databases through the
radprops.absdb_factoryfactory instance.⚠️ 🖥️ Post-processing pipelines now use a home-grown engine that replaces Hamilton (PR551). The underlying motivation is documented in the PR and pipeline engine design note.
🖥️ Updated all source code to use Pinttrs’s new-style API (PR557). This change does not affect users.
The
make_gaussian()function is transferred to a class method ofBandSRF(PR558). The previous entry point is kept for compatibility.The
BandSRFnow has anameattribute and can be exported to an xarray DataArray (PR558).
Added¶
The
AstroObjectIlluminationclass now has the additional factory aliasastroobject, consistent with the associated Mitsuba plugin (PR529).Added the
MaignanBSDFclass, a polarized surface reflection model introduced by [Maignan et al., 2009] (PR534).RNG seed sequence initialization can now be controlled by the user (PR543).
🖥️ The phase function of the
MolecularAtmosphereclass can now be forced to a user-defined value for debugging purposes (PR550).The
BandSRFclass now provides a method to get the associated band central wavelength (PR560).Band-weighted output variables now have a
w_srfscalar coordinate that contains the central wavelength of the band (PR560).
Fixed¶
Several dependency caps have been removed (PR539): NumPy 2 is now supported, and recent xarray versions (2025+) are supported.
Fixed a bug where the contents of the
ERADIATE_PATHenvironment variable were not converted properly (PR542).Fixed a bug where, when processing simultaneously multiple measures with different SRFs, all kernel sensors were rendered at each iteration of the spectral loop, regardless of whether the sensor is active at the current spectral index (PR555).