exoplanet is a toolkit for probabilistic modeling of transit and/or radial velocity observations of exoplanets and other astronomical time series using PyMC3. PyMC3 is a flexible and high-performance model building language and inference engine that scales well to problems with a large number of parameters. exoplanet extends PyMC3’s language to support many of the custom functions and distributions required when fitting exoplanet datasets. These features include:
A fast and robust solver for Kepler’s equation.
Scalable Gaussian Processes using celerite.
Fast and accurate limb darkened light curves using starry.
And many others!
All of these functions and distributions include methods for efficiently calculating their gradients so that they can be used with gradient-based inference methods like Hamiltonian Monte Carlo, No U-Turns Sampling, and variational inference. These methods tend to be more robust than the methods more commonly used in astronomy (like ensemble samplers and nested sampling) especially when the model has more than a few parameters. For many exoplanet applications, exoplanet (the code) can improve the typical performance by orders of magnitude.
Some tutorials have been moved to the case studies page.
Copyright 2018, 2019, 2020 Daniel Foreman-Mackey.
The source code is made available under the terms of the MIT license.
If you make use of this code, please cite this package and its dependencies. You can find more information about how and what to cite in the Citing exoplanet & its dependencies documentation.
Fixes compatibility with PyMC3 version 3.9
Fixes a documentation bug introduced in v0.3.1
Adds support for light travel time when computing positions in Keplerian orbits
SecondaryEclipseLightCurve for modeling eclipsing binaries
UnitDisk distribution for fitting eccentricity vectors
Adds tests and support for Windows
Adds a “Jacobian” interface to the orbit objects for reparameterization
Adds support for fitting circular orbits with duration
bls_estimator for transit search using Astropy’s
Improves infrastructure for generating documentation
EclipsingBinaryLightCurve for building binary star models
DensityDist implementation for celerite GP likelihoods
rebound an optional dependency
DotLOp for scalable conditional mean calculation
and prior sampling with celerite
Adds developer documentation
Moves documentation to a separate repository
Switches tutorials to lightkurve for data access
Improves packaging and code style features
Fixes bugs and improves interface to
Adds a new interface for tuning dense mass matrices with less overhead
Adds support for photodynamics using rebound
Adds a new interface for assigning units to Theano variables
Adds new physically-motivated distributions for impact parameter and eccentricity
Improves test coverage
Fixes bug in diagonal elements of the
Fixes bug in indexing for
TTVOrbit models with large TTVs
starry to get much better performance for high order spherical
Restructures the C++ backend to reduce code duplication
Adds support for fitting of astrometric observations
Adds support for exposure time integration in
Adds new distributions for periodic parameters and U(0, 1).
Fixes many small bugs
Fixes some edge case failures for Kepler solver
Improves reliability of contact point solver and fails (more) gracefully when this doesn’t work; this reduces the number of divergences when fitting a transit model
Improves contact point solver using companion matrix to solve quadratic
Improves reliability of
Angle distribution when the value of the angle
is well constrained
Improves the reliability of the PyMC3Sampler
Adds a new
optimize function since the
in PyMC3 is deprecated
Adds cronjob script for automatically updating tutorials.
Adds a more robust and faster Kepler solver (ref)
Fixes minor behavioral bugs in PyMC3 sampler wrapper
Adds regular grid interpolation Op for Theano
Fixes major bug in handling of the stellar radius for transits
Fixes small bugs in packaging and installation
Fixes handling of diagonal covariances in
Initial public release