Skip to content

kemasuda/jnkepler

Repository files navigation

jnkepler

A differentiable N-body model for multi-planet systems.

jnkepler is a Python package for modeling photometric and radial velocity data of multi-planet systems via N-body integration. Built with JAX, it leverages automatic differentiation for efficient computation of model gradients. This enables seamless integration with gradient-based optimizers and Hamiltonian Monte Carlo methods, including the No-U-Turn Sampler (NUTS) in NumPyro. The package is particularly suited for efficiently sampling from multi-planet posteriors involving a larger number of parameters and strong degeneracy.

Subpackages

  • jnkepler.jaxttv: A differentialble N-body model for analyzing transit timing variations (TTVs) and radial velocities (RVs) of multi-planet systems.
  • jnkepler.nbodytransit: A differentialble photodynamical model. jaxoplanet needs to be installed for using this package.
  • jnkepler.nbodyrv: A differentiable RV model taking into account mutual interactions between planets.

See readthedocs for more details.

Installation

pip install jnkepler

or

python setup.py install from source

Examples

Explore example notebooks in the examples/ directory to see jnkepler in action:

  • minimal example for computing transit times: examples/minimal_example.ipynb

  • TTV modeling: examples/kep51_ttv_iidnormal.ipynb

  • Photodynamical modeling: examples/kep51_photodynamics_gp.ipynb

    • SVI optimization & posterior sampling with NUTS
    • noise modeling using Gaussian Process with celerite2.jax

Applications

  • TOI-1136: TTV modeling of 6-planets in a resonance chain [paper]
  • TOI-2015: joint TTV & RV modeling of a two-planet system [paper]
  • Kepler-51: four-planet modeling including JWST data [paper] [repository]

References

About

JAX code for modeling nearly-Keplerian orbits

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages