Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates for JOSS review 1 #186

Merged
merged 5 commits into from
Jun 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added joss/figures/figure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
74 changes: 74 additions & 0 deletions joss/paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -687,3 +687,77 @@ @software{jax
version = {0.2.5},
year = {2018}
}

@article{parviainen15b,
author = {{Parviainen}, H. and {Aigrain}, S.},
title = {{LDTK: Limb Darkening Toolkit}},
journal = {Monthly Notices of the Royal Astronomical Society},
keywords = {gravitational lensing: micro, methods: numerical, techniques: interferometric, planets and satellites: general, binaries: eclipsing, Astrophysics - Earth and Planetary Astrophysics, Astrophysics - Instrumentation and Methods for Astrophysics, Astrophysics - Solar and Stellar Astrophysics},
year = 2015,
month = nov,
volume = {453},
number = {4},
pages = {3821-3826},
doi = {10.1093/mnras/stv1857},
archiveprefix = {arXiv},
eprint = {1508.02634},
primaryclass = {astro-ph.EP},
adsurl = {https://ui.adsabs.harvard.edu/abs/2015MNRAS.453.3821P},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

@article{irwin11,
author = {{Irwin}, Jonathan M. and {Quinn}, Samuel N. and {Berta}, Zachory K. and {Latham}, David W. and {Torres}, Guillermo and {Burke}, Christopher J. and {Charbonneau}, David and {Dittmann}, Jason and {Esquerdo}, Gilbert A. and {Stefanik}, Robert P. and {Oksanen}, Arto and {Buchhave}, Lars A. and {Nutzman}, Philip and {Berlind}, Perry and {Calkins}, Michael L. and {Falco}, Emilio E.},
title = {{LSPM J1112+7626: Detection of a 41 Day M-dwarf Eclipsing Binary from the MEarth Transit Survey}},
journal = {The Astrophysical Journal},
keywords = {binaries: eclipsing, stars: low-mass, Astrophysics - Solar and Stellar Astrophysics},
year = 2011,
month = dec,
volume = {742},
number = {2},
eid = {123},
pages = {123},
doi = {10.1088/0004-637X/742/2/123},
archiveprefix = {arXiv},
eprint = {1109.2055},
primaryclass = {astro-ph.SR},
adsurl = {https://ui.adsabs.harvard.edu/abs/2011ApJ...742..123I},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

@article{southworth04,
author = {{Southworth}, J. and {Maxted}, P.~F.~L. and {Smalley}, B.},
title = {{Eclipsing binaries in open clusters - II. V453 Cyg in NGC 6871}},
journal = {Monthly Notices of the Royal Astronomical Society},
keywords = {binaries: eclipsing, binaries: spectroscopic, stars: early-type, stars: fundamental parameters, stars: individual: V453 Cyg, open clusters and associations: individual: NGC 6871, Astrophysics},
year = 2004,
month = jul,
volume = {351},
number = {4},
pages = {1277-1289},
doi = {10.1111/j.1365-2966.2004.07871.x},
archiveprefix = {arXiv},
eprint = {astro-ph/0403572},
primaryclass = {astro-ph},
adsurl = {https://ui.adsabs.harvard.edu/abs/2004MNRAS.351.1277S},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

@article{conroy20,
author = {{Conroy}, Kyle E. and {Kochoska}, Angela and {Hey}, Daniel and {Pablo}, Herbert and {Hambleton}, Kelly M. and {Jones}, David and {Giammarco}, Joseph and {Abdul-Masih}, Michael and {Pr{\v{s}}a}, Andrej},
title = {{Physics of Eclipsing Binaries. V. General Framework for Solving the Inverse Problem}},
journal = {The Astrophysical Journal Supplement Series},
keywords = {Eclipsing binary stars, 444, Astrophysics - Solar and Stellar Astrophysics, Astrophysics - Earth and Planetary Astrophysics, Astrophysics - Instrumentation and Methods for Astrophysics},
year = 2020,
month = oct,
volume = {250},
number = {2},
eid = {34},
pages = {34},
doi = {10.3847/1538-4365/abb4e2},
archiveprefix = {arXiv},
eprint = {2006.16951},
primaryclass = {astro-ph.SR},
adsurl = {https://ui.adsabs.harvard.edu/abs/2020ApJS..250...34C},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
60 changes: 36 additions & 24 deletions joss/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ related.
that must be compiled for performance. These include an efficient solver for
Kepler's equation [based on the algorithm proposed by @raposo17] and limb
darkened transit light curves [@agol20]. Besides the implementation for
`PyMC3` and `Theano`, `exoplanet-core` includes implementations in `numpy`
[@numpy] and `jax` [@jax].
`PyMC3`, `exoplanet-core` includes implementations in `numpy` [@numpy] and
`jax` [@jax].
- `celerite2`[^celerite2], is an updated implementation of the _celerite_
algorithm[^celerite] [@foremanmackey17; @foremanmackey18] for scalable
Gaussian Process regression for time series data. Like `exoplanet-core`,
Expand All @@ -157,8 +157,8 @@ related.
- `pymc3-ext`[^pymc3-ext], includes a set of helper functions to make `PyMC3`
more amenable to the typical astronomical data analysis workflow. For example,
it provides a tuning schedule for `PyMC3`'s sampler [based on the method used
by the `Stan` project @carpenter17] that provides better performance on models
with correlated parameters.
by the `Stan` project and described by @carpenter17] that provides better
performance on models with correlated parameters.
- `rebound-pymc3`[^rebound-pymc3] provides an interface between _REBOUND_
[@rein12], _REBOUNDx_ [@tamayo20], and `PyMC3` to enable inference with full
N-body orbit integration.
Expand All @@ -183,6 +183,14 @@ automatically executed using GitHub Actions, but at lower cadence (once a week
and when a new release of the `exoplanet` library is made) since the runtime is
much longer.

![Some examples of datasets fit using `exoplanet`. The full analyses behind
these examples are available on the "Case Studies" page as Jupyter notebooks.
(left) A fit to the light curves of a transiting exoplanet observed by two
different space-based photometric surveys: Kepler and TESS. (right) The phase
folded radial velocity time series for an exoplanet observed from different
observatories with different instruments, fit simultaneously using `exoplanet`.
\label{fig:figure}](figures/figure.png)

# Similar tools

There is a rich ecosystem of tooling available for inference with models such as
Expand All @@ -194,32 +202,35 @@ context.
Some of the most popular tools in this space include (and note that this is far
from a comprehensive list!) `EXOFAST` [@eastman13; @eastman19], `radvel`
[@fulton18], `juliet` [@espinoza19], `exostriker` [@trifonov19], `PYANETI`
[@barragan19], `allesfitter` [@guenther20], and `orbitize` [@blunt20]. These
packages all focus on providing a high-level interface for designing models and
then executing a fit. `exoplanet`, however, is designed to be lower level and
more conceptually similar to tools like `batman` [@kreidberg15], `PyTransit`
[@parviainen15], `ellc` [@maxted16], `starry` [@luger19], or `Limbdark.jl`
[@agol20], which provide the building blocks for evaluating the models required
for inference with exoplanet datasets. In fact, several of the higher-level
packages listed above include these lower-level libraries as dependencies, and
our hope is that `exoplanet` could provide the backend for future high-level
libraries.
[@barragan19], `allesfitter` [@guenther20], and `orbitize` [@blunt20]. Similar
tools also exist for modeling observations of eclipsing binary systems,
including `JKTEBOP` [@southworth04], `eb` [@irwin11], and `PHOEBE` [@conroy20].
These packages all focus on providing a high-level interface for designing
models and then executing a fit. `exoplanet`, however, is designed to be lower
level and more conceptually similar to tools like `batman` [@kreidberg15],
`PyTransit` [@parviainen15], `ldtk` [@parviainen15b], `ellc` [@maxted16],
`starry` [@luger19], or `Limbdark.jl` [@agol20], which provide the building
blocks for evaluating the models required for inference with exoplanet datasets.
In fact, several of the higher-level packages listed above include these
lower-level libraries as dependencies, and our hope is that `exoplanet` could
provide the backend for future high-level libraries.

As emphasized in the title of this paper, the main selling point of `exoplanet`
when compared to other tools in this space is that it supports differentiation
of all components of the model and is designed to integrate seamlessly with the
`aesara` [@aesara; formerly known as `Theano`, @theano] automatic
differentiation framework used by `PyMC3`. This allows the use of modern
inference algorithms such as No U-Turn Sampling [@hoffman14] or Automatic
Differentiation Variational Inference [@kucukelbir17]. These algorithms can have
some computational and conceptual advantages over inference methods that do not
use gradients, especially for high-dimensional models. The computation of gradients
`aesara` [@aesara] automatic differentiation framework used by `PyMC3`. It is
worth noting that `aesara` was previously known as `Theano` [@theano], so these
names are sometimes used interchangeably in the `PyMC3` or `exoplanet`
documentation[^theano-aesara]. This allows the use of modern inference
algorithms such as No U-Turn Sampling [@hoffman14] or Automatic Differentiation
Variational Inference [@kucukelbir17]. These algorithms can have some
computational and conceptual advantages over inference methods that do not use
gradients, especially for high-dimensional models. The computation of gradients
is also useful for model optimization; this is necessary when, say, searching
for new exoplanets, mapping out degeneracies or multiple modes of a posterior,
or estimating uncertainties from a Hessian. Care has been taken to provide gradients
which are numerically stable, and more accurate and faster to evaluate than
finite-difference gradients which can be subject to significant numerical errors
and require 2N computations of a model with N free parameters.
or estimating uncertainties from a Hessian. Care has been taken to provide
gradients which are numerically stable, and more accurate and faster to evaluate
than finite-difference gradients.

# Acknowledgements

Expand All @@ -243,3 +254,4 @@ Besides the software cited above, `exoplanet` is also built on top of `ArviZ`
[^celerite]: [https://celerite.readthedocs.io](https://celerite.readthedocs.io)
[^pymc3-ext]: [https://github.com/exoplanet-dev/pymc3-ext](https://github.com/exoplanet-dev/pymc3-ext)
[^rebound-pymc3]: [https://github.com/exoplanet-dev/rebound-pymc3](https://github.com/exoplanet-dev/rebound-pymc3)
[^theano-aesara]: More information about this distinction is available at [https://docs.exoplanet.codes/en/stable/user/theano/](https://docs.exoplanet.codes/en/stable/user/theano/)
7 changes: 7 additions & 0 deletions tests/orbits/keplerian_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@
)
from exoplanet.units import with_unit

try:
import batman
except ImportError:
batman = None


@pytest.mark.skipif(batman is None, reason="batman is not installed")
def test_sky_coords():
from batman import _rsky

Expand Down Expand Up @@ -313,6 +319,7 @@ def test_in_transit_circ():
assert np.all(inds == inds_circ)


@pytest.mark.skipif(batman is None, reason="batman is not installed")
def test_small_star():
from batman import _rsky

Expand Down