Changelog
All notable changes to Furax will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.11.3 - 2026-07-14
Changed
- Migrated the documentation website from Sphinx to Zensical (Material for MkDocs), with the API reference now generated by mkdocstrings
0.11.2 - 2026-07-14
Added
Changed
- Backed
Stokesmaps with a single dense array (#165) - Optimised
PointingOperatormatvec usinglax.map(#172) - Streamed fused scan-block bodies (#170)
- Improved logging in the multi-observation mapmaker (#171)
0.11.1 - 2026-07-01
Added
- Nested PCG capabilities in the multi-observation mapmaker (#162)
- Elevation modulation in the atmosphere pointing operator (#161)
WeightOperatorbundling noise weights and mask (#158)- Spline-based HWP-synchronous signal template (#146)
- Basis-template operators for mapmaking (#144)
IDEMPOTENToperator tag andP @ P = Preduction rule (#155)- Sharding-aware CG solver (#83)
- Direct loading of sotodlib observations from the preproc db (#152)
cudadependency group to installjax[cuda](#139)
Changed
- Split binary rules into composition/addition flavours (#137)
- Rebased observation timestamps to a zero origin before the float32 downcast (#145)
- Supported static leaves and scalar fusion in scan-block operators (#143)
- Improved reader fields handling (#148)
- Structure compatibility now checks only shape and dtype (#153)
Fixed
- CG instability past convergence with stabilisation enabled (#159)
- dtype of
MaskOperator.to_boolean_mask()(#160) - Scan-block fusion to keep obs-axis sharding (#147)
MapMakingConfig.double_precision=False(non-functional path) (#118)
0.11.0 - 2026-06-05
Drops support for Python 3.10 (now requires JAX 0.10+) and includes breaking changes to the mapmaking configuration.
Added
- Distributed multi-observation mapmaking (#117, #132)
- Identity noise option to disable noise weighting (#120)
- Low-rank approximation using the Lanczos algorithm (#80, #122, #123)
atomicflag onQURotationOperatorto prevent reduction (#119)- SHT beam convolution support (#114)
Changed
- Breaking: Dropped support for Python 3.10; now requires JAX 0.10+ (#104, #112, #115)
- Breaking: Refactored the mapmaking noise weighting configuration (#126)
- Observation handling now returns host (NumPy) arrays and pads host-side (#128, #130)
- Moved the SO multi-observation CLI to the standalone
so_mapmakingpackage (#133) - Improved error messages for incompatible operator composition and comparison (#113, #116)
Fixed
- Metadata hashing in gap-filling noise realizations (#131)
- Various mapmaking and ATOP/MLMapMaker hotfixes (#108, #109, #111)
0.10.4 - 2026-04-10
Added
- Improved FFT and overlap-and-save methods in
SymmetricBandToeplitzOperator(#100)
Changed
Fixed
- Computation of pixel indices in the expanded pointing operator (#102)
- POMME operator with no tail (#105, #106)
0.10.3 - 2026-04-01
Added
- Bilinear interpolation (#95)
- Atmosphere separation infrastructure (#96)
- ATOP support in the multi-observation mapmaker (#93)
Changed
- Reorganised
MapMakingConfig(#92) - Reduced memory usage in
MultiObsMapMaker(#97) - Improved
MapMakingResults(#99)
0.10.2 - 2026-03-25
Added
tree.norm(#82)WCSLandscapewith CAR projection (#89)asoperatorfactory (#32)- SO-specific mapmaking configuration (#88)
Changed
- Refactored
MapMakingResults(#84) and multi-observation logic into a helper class (#87) - Improved JAX compatibility of the FGBuster instrument (#85)
- Improved documentation (#75)
- Bumped pre-commit hooks and GitHub actions (#78)
Fixed
- Stacking when creating
DetectorArray(#81)
0.10.1 - 2026-03-06
Changed
- Avoid a direct dependency on
litebird_sim(#76)
0.10 - 2026-03-06
Major mapmaking and observation release.
Added
- Multi-observation mapmaker (#40) with gap-filling (#54) and noise-weighting improvements (#53)
- Data reader for sotodlib-format observations (#29, #30, #33, #39) and multi-observation mapmaking script (#65)
MaskOperator, supporting PyTree inputs (#31, #72)FourierOperator(#35) and noise weighting built on it (#49)furax.linalgmodule with analytic 2×2 and 3×3eigvalsh(#73)- Analytic likelihood gradient (#58)
- Preliminary LiteBIRD (
lbs) interface (#57) - Support for demodulated data in mapmaking (#68)
quat2indexfor anyStokesLandscape(#41)- Citation metadata (#38, #52)
Changed
- Dataclass-based abstract linear operators (#62)
- Mapmaking renaming (#27)
- Simplified
PointingOperator(#45) and factored out QU rotation logic (#74) - Made
fft_sizestatic in the Toeplitz operator (#46) - Clarified angle conventions (#70)
- Bumped
sotodlibfor Python 3.13 support (#63); faster CI (#51); revisited ruff rules (#55)
Fixed
- Traced arrays used in scanning mask (#34)
- FGBuster instrument PyTree (#61)
- Error if
solver_optionsis passed directly to parametrize an inverse (#71)
0.9 - 2025-07-25
Added
Changed
Fixed
- Tests involving inexact arrays on the CPU platform (#14)
- Block row operator with a single leaf (#13)
IndexOperatorandReshapeOperatoredge cases (#15, #23)
0.8 - 2025-02-05
First public release with CI and a release workflow.
Added
- Continuous integration (#2) and release workflow
- Generic
IndexOperator(#3) - Gap filling (#4)
- SED operators for component separation (#1)
TreeOperatorand basic PyTree operations: matvec, vecmat, matmat (#9)
Changed
- Reorganised the codebase
- Renamed
StokesPyTree→Stokes,StokesIQUPyTree→StokesIQU, etc. - Updated installation instructions (#10)
Fixed
- Toeplitz operator fix (#8)
0.7 - 2024-10-30
Added
FrequencyLandscapeand tests
0.6 - 2024-08-02
Changed
SymmetricBandToeplitzOperator: broadcastable and multidimensional band values
0.5 - 2024-07-02
Added
ToastObservationMatrixOperator
0.4 - 2024-05-31
Added
.I(inverse) for all operators
0.3 - 2024-05-06
Added
- Multidimensional landscapes
0.2 - 2024-05-13
Fixed
- Deployment
0.1 - 2024-02-12
Initial tagged release.
Added
- Project classifiers and editable-mode installation instructions