Releases: PlanetFormationLab/eddy
Releases · PlanetFormationLab/eddy
v3.0.0
A major refactor centred on a JAX-backed model, a new class hierarchy, and an opt-in gradient-based MCMC sampler. All user-facing call signatures from 2.x are preserved.
Highlights
- JAX backend for the rotation map model and likelihood: JIT-compiled, autodifferentiable, and GPU-aware.
- numpyro NUTS sampler as an opt-in MCMC backend via
mcmc='numpyro'infit_map()andAnnulus3D.get_vlos_GP(). emcee remains the default. Legacynwalkers/nburnin/nstepskwargs map onto numpyro'snum_chains/num_warmup/num_samplesinternally. - Class hierarchy split:
datacube→imagecube(shared FITS I/O) +momentmap(2D) +linecube(3D);Annulus→Annulus2D/Annulus3D. Legacy import aliases retained. imagecube.to_fits()andlinecube.to_momentmap()(via bettermoments).- GP backend swapped from celerite to
tinygp.quasisep.Matern32for JAX compatibility. - Performance: ~16× cumulative speedup in warm
fit_mapcalls via JIT-closure +vmap'd batch log-probability. - Test suite (
tests/) and GitHub Actions CI (pytest matrix on Python 3.11 + 3.13, ruff lint gate). - Tutorial 6 demonstrates the numpyro path end-to-end.
Breaking changes
- Minimum Python is now 3.10 (was 3.8).
celeriteis no longer a dependency (replaced bytinygp). Drop it from pinned environments.- A few previously-hidden
DeprecationWarnings may surface (notably from emcee 3.xsampler.chain).
See the full CHANGELOG entry for the complete list of added, changed, removed, and fixed items, plus migration notes.
JOSS Accepted
The version of code submitted to JOSS.
Adds the functionality to fit Keplerian rotation profile to a 2D velocity map including a flared emission surface. Some improvements to the minimization approach have also been made to make the results more robust.