v0.29.x series¶
v0.29.0 (7th October 2024)¶
In this major release, we add official support for polarized radiative
transfer simulation. Polarization is currently supported for the atmosphere
(molecular and aerosol components), stay tuned for updates on polarized surface
models. This feature is controlled by the mode switcher: just call
eradiate.set_mode("mono_polarized") or
eradiate.set_mode("ckd_polarized") when you start setting up your
simulation. After post-processing, the four Stokes vector components are added
to the output product.
We also heavily refactored the components that handle the spectral dimension. We clarified the spectral discretization model and modified some interface points to make things more explicit. We significantly improved spectral component inspection (typically, the spectral grid and spectral response functions). Have a look at our revamped spectral discretization guide.
Finally, we updated our surface mesh generation component to also add texture coordinates to the produced mesh. This allows to define surface textures, a key feature when it comes to assembling 3D scenes.
Warning
When upgrading, pay attention to the following:
When setting up an experiment, the parameter controlling the spectral quadrature point count configuration is changed from
quad_spectockd_quad_config. This parameter now accepts aCKDQuadConfiginstance or a dictionary. You will have to update this if you were using this feature.Instrument spectral response functions are now specified using the
SpectralResponseFunctiontype. The dictionary syntax remains unchanged. SRF objects can now be visualized in Jupyter notebooks.
Removed¶
⚠️ The
SpectralSetclass and children are removed (PR439). Spectral discretization is now handled by theSpectralGridclass and its children.⚠️ The
Atmosphere.spectral_set()method is removed (PR439). The responsibility of deriving a spectral grid from a molecular absorption database is transferred to theSpectralGrid.from_absorption_database()constructor.⚠️ The
MultiDeltaSpectrumclass is removed (PR439). Spectral response functions are now modelled using dedicated types (SpectralResponseFunctionand children).⚠️ Several SRF-related methods of the
Spectrumfamily are removed (PR439). The corresponding functionality is transferred to theSpectralResponseFunctionfamily.⚠️ The
QuadSpecclass is removed (PR439). Its functionality is transferred to theCKDQuadConfigtype.⚠️ The
AbstractHeterogeneousAtmosphere.eval_transmittance_accross_spectral_set()is removed and its functionality transferred to theeval_transmittance_mono()andeval_transmittance_ckd()helpers (PR439).
Added¶
The
mesh_from_dem()function optionally adds texture coordinates to the generated mesh (PR435).The
BufferMeshShapeclass can now initialize texture coordinates as well (PR435).Added polarized mode, Rayleigh and tabulated phase functions (PR438, PR445).
A new
SpectralGridtype hierarchy is added (PR439). It handles the spectral discretization.A new
SpectralResponseFunctiontype hierarchy is added (PR439). It models the spectral response function of instruments.🖥️ A new
SubtypeDispatchertype is added (PR439). This class is a very simple factory intended to dispatch subtypes of a parent type depending on the current active mode.🖥️ A new
is_sorted()validator is added (PR439).
Changed¶
The CLI now displays standard stack traces instead of prettifying them with Rich (PR434). The previous behaviour is still available with the
--debugCLI option.Improved error reporting when loading absorption databases with corrupt index files (PR434).
🖥️ Updated Mitsuba submodule to v0.3.0 (PR444).
⚠️ The
quad_specparameter of theExperimentconstructors is replaced by theckd_quad_configparameter (PR439).⚠️ The
Measure.srffield is now aSpectralResponseFunctioninstance (PR439). The dictionary interface used inMeasureconstructors remains unchanged.⚠️ The
eradiate.spectralsubpackage is reorganized (PR439). The main components are still exposed ineradiate.spectraldirectly.⚠️ The background spectral grid, formerly exposed as
Experiment.default_spectral_set, is now private and renamed_background_spectral_grid(PR439). It can still be configured by thebackground_spectral_gridparameter.📖 Overhauled the Spectral discretization guide (PR439).
📖 Improved factory documentation (PR441).
Internal changes¶
🖥️ Added an explicit CKD spectral quadrature calculation step to the initialization sequence of
Experimentinstances (PR439).🖥️ Removed unused
rad_profile_factory(PR441).⚠️ 🖥️ Refactored attrs-based features (PR437).
⚠️ 🖥️ The
Mode.check()method’s signature is changed (PR439). It accepts now a combination ofModeFlagvalues.⚠️ 🖥️ The
MultiGeneratoris moved toeradiate.util.misc(PR439).⚠️ 🖥️ Refactored DEM handling infrastructure (PR428).
v0.29.1 (25th October 2024)¶
This is a minor feature release. It updates the radiometric kernel to v0.3.1,
which adds the selectbsdf plugin, and introduces the transitional expert
interface, which allows to inject Mitsuba scene dictionary fragments manually
in an experiment.
This interface is called ‘transitional’ because, although its syntax and idioms can be considered stable, it has not been fully propagated through the Eradiate codebase yet. This upgrade is planned for the next major release.
Added¶
Introducing the transitional expert interface (PR452).
Changed¶
Fixed¶
Fixed incorrect CKD absorption database index generation method (PR454).
v0.29.2 (9th November 2024)¶
Deprecated¶
The
eradiate.srf_tools.make_gaussian()function is deprecated. It will be removed in v0.31.0. Useeradiate.spectral.response.make_gaussian()as an alternative.
Added¶
Automatically flatten nested dictionaries used for initialization or assignments to
KernelDictTemplate(PR459).Added
spectral_dataparameter to theload_rami_scenario()function (PR462).
Changed¶
Transferred the Gaussian SRF dataset creation function
make_gaussian()to theeradiate.spectral.responsesubpackage (PR458).