Skip to content

Releases: PlanetFormationLab/eddy

v3.0.0

13 May 14:08

Choose a tag to compare

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' in fit_map() and Annulus3D.get_vlos_GP(). emcee remains the default. Legacy nwalkers/nburnin/nsteps kwargs map onto numpyro's num_chains/num_warmup/num_samples internally.
  • Class hierarchy split: datacubeimagecube (shared FITS I/O) + momentmap (2D) + linecube (3D); AnnulusAnnulus2D / Annulus3D. Legacy import aliases retained.
  • imagecube.to_fits() and linecube.to_momentmap() (via bettermoments).
  • GP backend swapped from celerite to tinygp.quasisep.Matern32 for JAX compatibility.
  • Performance: ~16× cumulative speedup in warm fit_map calls 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).
  • celerite is no longer a dependency (replaced by tinygp). Drop it from pinned environments.
  • A few previously-hidden DeprecationWarnings may surface (notably from emcee 3.x sampler.chain).

See the full CHANGELOG entry for the complete list of added, changed, removed, and fixed items, plus migration notes.

JOSS Accepted

22 Jan 18:50

Choose a tag to compare

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.