v0.4.0
Added
AerosolOpticsDatadataclass — generic multi-wavelength optical property container with auto-computed Legendre moments (optics_export.py)from_optical_results()factory function buildsAerosolOpticsDatafromlist[OpticalResult]AerosolOpticsData.to_netcdf()/.from_netcdf()for NetCDF persistence- Visualization functions:
plot_spectral_properties,plot_phase_function,plot_optical_comparison,plot_phase_function_comparison,plot_legendre_convergence,plot_legendre_moments_spectrum,generate_comparison_summary - Smoke tests for all new visualization functions (
test_optics_vis_new.py) - Unit tests for
AerosolOpticsDataconstruction, Legendre auto-computation, and NetCDF round-trip (test_optics_export.py)
Changed
- Replaced
pyradtran_export.pywith format-agnosticoptics_export.py— aerosol3d no longer produces pyRadtran-specific output - Simplified
compute_optics.pyexample (-204 lines) — usesfrom_optical_results()and library visualization - Simplified
compare_results.pyexample (-192 lines) — uses library comparison functions run_radiative_transfer.pynow loadsAerosolOpticsData.from_netcdf()and passes Legendre moments to pyRadtran
Fixed
- Legendre moments from phase functions are now auto-computed and passed through the RT pipeline (previously fell back to Henyey-Greenstein approximation)
- Convert k_l → beta_l (divide by 2l+1) before passing to DISORT PMOM — DISORT expects normalized moments, not raw coefficients
plot_phase_function_comparisonhandles datasets with different theta grid sizes via interpolation
Documentation
- Updated README.md features, API overview, quick start, and examples table to reflect Mie solver,
AerosolOpticsData, and optical visualization - Added
optics_export,visualization,legendremodules to Sphinx API reference - Added optical data export, Legendre moments, and visualization sections to optical-computation user guide
- Added step 4 (export and visualize) to quickstart guide
- Added DDA-Mie-pyRadtran pipeline tutorial and coated fractal aggregate tutorial
- Added optional dependencies section (matplotlib, xarray, netCDF4, pyRadtran) to installation guide
- Expanded mie-vs-dda-validation tutorial with detailed explanations
- Added documentation contribution guidelines to contributing guide
- Synced CONTRIBUTING.md with Sphinx version
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.