Skip to content

Commit

Permalink
Updates for JOSS review 1 (#186)
Browse files Browse the repository at this point in the history
* make batman an optional dependency for tests

* fixing citation formatting

* add a few more tool references

* adding phoebe reference

* adding a figure
  • Loading branch information
dfm committed Jun 10, 2021
1 parent f7ad980 commit ddc35b3
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 24 deletions.
Binary file added joss/figures/figure.png
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

0 comments on commit ddc35b3

Please sign in to comment.