Skip to content

Latest commit

 

History

History
103 lines (95 loc) · 5.11 KB

paper.md

File metadata and controls

103 lines (95 loc) · 5.11 KB
title tags authors affiliations date bibliography
emcee v3: A Python ensemble sampling toolkit for affine-invariant MCMC
Python
astronomy
name orcid affiliation
Daniel Foreman-Mackey
0000-0003-0872-7098
1
name orcid affiliation
Will M. Farr
0000-0003-1540-8562
1, 2
name orcid affiliation
Manodeep Sinha
0000-0002-4845-1228
3, 4
name orcid affiliation
David W. Hogg
0000-0003-2866-9403
1, 5
name orcid affiliation
Jeremy S. Sanders
0000-0003-2189-4501
6
name orcid affiliation
Joe Zuntz
0000-0001-9789-9646
7
name orcid affiliation
Peter K. G. Williams
0000-0003-3734-3587
8, 9
name orcid affiliation
Andrew R. J. Nelson
0000-0002-4548-3558
10
name orcid affiliation
Tobias Erhardt
0000-0002-6683-6746
11
name orcid affiliation
Ilya Pashchenko
0000-0002-9404-7023
12
name orcid affiliation
Oriol Abril Pla
0000-0002-1847-9481
13
name orcid affiliation
Miguel de Val-Borro
0000-0002-0455-9384
14
name index
Center for Computational Astrophysics, Flatiron Institute
1
name index
Department of Physics and Astronomy, Stony Brook University, United States
2
name index
Centre for Astrophysics & Supercomputing, Swinburne University of Technology, Australia
3
name index
ARC Centre of Excellence for All Sky Astrophysics in 3 Dimensions (ASTRO 3D)
4
name index
Center for Cosmology and Particle Physics, Department of Physics, New York University
5
name index
Max Planck Institute for Extraterrestrial Physics
6
name index
Institute for Astronomy, University of Edinburgh, Edinburgh, EH9 3HJ, UK
7
name index
Center for Astrophysics | Harvard & Smithsonian
8
name index
American Astronomical Society
9
name index
Australian Nuclear Science and Technology Organisation, NSW, Australia
10
name index
Climate and Environmental Physics and Oeschger Center for Climate Change Research, University of Bern, Bern, Switzerland
11
name index
P.N. Lebedev Physical Institute of the Russian Academy of Sciences, Moscow, Russia
12
name index
Universitat Pompeu Fabra, Barcelona
13
name index
Planetary Science Institute, 1700 East Fort Lowell Rd., Suite 106, Tucson, AZ 85719, USA
14
17 October 2019
paper.bib

Summary

emcee is a Python library implementing a class of affine-invariant ensemble samplers for Markov chain Monte Carlo (MCMC). This package has been widely applied to probabilistic modeling problems in astrophysics where it was originally published [@Foreman-Mackey:2013], with some applications in other fields. When it was first released in 2012, the interface implemented in emcee was fundamentally different from the MCMC libraries that were popular at the time, such as PyMC, because it was specifically designed to work with "black box" models instead of structured graphical models. This has been a popular interface for applications in astrophysics because it is often non-trivial to implement realistic physics within the modeling frameworks required by other libraries. Since emcee's release, other libraries have been developed with similar interfaces, such as dynesty [@Speagle:2019]. The version 3.0 release of emcee is the first major release of the library in about 6 years and it includes a full re-write of the computational backend, several commonly requested features, and a set of new "move" implementations.

This new release includes both small quality of life improvements—like a progress bar using tqdm—and larger features. For example, the new backends interface implements real time serialization of sampling results. By default emcee saves its results in memory (as in the original implementation), but it now also includes a HDFBackend class that serializes the chain to disk using h5py.

The most important new feature included in the version 3.0 release of emcee is the new moves interface. Originally, emcee was implementation of the affine-invariant "stretch move" proposed by @Goodman:2010, but there are other ensemble proposals that can get better performance for certain applications. emcee now includes implementations of several other ensemble moves and an interface for defining custom proposals. The implemented moves include:

  • The "stretch move" proposed by @Goodman:2010,
  • The "differential evolution" and "differential evolution snooker update" moves [@Ter-Braak:2006; @Ter-Braak:2008], and
  • A "kernel density proposal" based on the implementation in the kombine library [@Farr:2015].

emcee has been widely used and the original paper has been highly cited, but there have been many contributions from members of the community. This paper is meant to highlight these contributions and provide citation credit to the academic contributors. A full up-to-date list of contributors can always be found on GitHub.

References