Citing exoplanet & its dependencies

Citing exoplanet & its dependencies#

The exoplanet package is mostly just glue that connects many other ideas and software. In a situation like this, it can be easy to forget about the important infrastructure upon which our science is built. In order to make sure that you can easily give credit where credit is due, we have tried to make it as painless as possible to work out which citations are expected for a model fit using exoplanet by including a exoplanet.citations.get_citations_for_model() function that introspects the current PyMC model and constructs a list of citations for the functions used in that model.

For example, you might compute a quadratically limb darkened light curve using starry (via the exoplanet.LimbDarkLightCurve class):

import pymc as pm
import exoplanet as xo

with pm.Model() as model:
    u = xo.distributions.quad_limb_dark("u")
    orbit = xo.orbits.KeplerianOrbit(period=10.0)
    light_curve = xo.LimbDarkLightCurve(u[0], u[1])
    transit = light_curve.get_light_curve(r=0.1, orbit=orbit, t=[0.0, 0.1])

    txt, bib = xo.citations.get_citations_for_model()
WARNING (pytensor.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

The exoplanet.citations.get_citations_for_model() function would generate an acknowledgment that cites:

  • PyMC: for the inference engine and modeling framework,

  • AstroPy: for units and constants,

  • Kipping (2013): for the reparameterization of the limb darkening parameters for a quadratic law, and

  • Luger, et al. (2018): for the light curve calculation.

The first output from exoplanet.citations.get_citations_for_model() gives the acknowledgment text:

print(txt)
This research made use of \textsf{exoplanet} \citep{exoplanet:joss,
exoplanet:zenodo} and its dependencies \citep{exoplanet:agol20,
exoplanet:arviz, exoplanet:astropy13, exoplanet:astropy18, exoplanet:kipping13,
exoplanet:luger18}.

And the second output is a string with BibTeX entries for each of the citations in the acknowledgment text:

print(bib.split("\n\n")[0] + "\n\n...")
@article{exoplanet:joss,
       author = {{Foreman-Mackey}, Daniel and {Luger}, Rodrigo and {Agol}, Eric
                and {Barclay}, Thomas and {Bouma}, Luke G. and {Brandt},
                Timothy D. and {Czekala}, Ian and {David}, Trevor J. and
                {Dong}, Jiayin and {Gilbert}, Emily A. and {Gordon}, Tyler A.
                and {Hedges}, Christina and {Hey}, Daniel R. and {Morris},
                Brett M. and {Price-Whelan}, Adrian M. and {Savel}, Arjun B.},
        title = "{exoplanet: Gradient-based probabilistic inference for
                  exoplanet data \& other astronomical time series}",
      journal = {arXiv e-prints},
         year = 2021,
        month = may,
          eid = {arXiv:2105.01994},
        pages = {arXiv:2105.01994},
archivePrefix = {arXiv},
       eprint = {2105.01994},
 primaryClass = {astro-ph.IM},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2021arXiv210501994F},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

...