Skip to main content

nested sampling post-processing

Project description

Authors:

Will Handley and Lukas Hergt

Version:
2.0.0-beta.14
Homepage:

https://github.com/williamjameshandley/anesthetic

Documentation:

http://anesthetic.readthedocs.io/

Build Status Test Coverage Status Documentation Status PyPi location Permanent DOI for this release Review Status License information Online interactive notebook

anesthetic brings together tools for processing nested sampling chains by leveraging standard scientific python libraries.

You can see example usage and plots in the plot gallery, or in the corresponding Jupyter notebook.

Current functionality includes:

  • Computation of Bayesian evidences, Kullback-Liebler divergences and Bayesian model dimensionalities.

  • Marginalised 1d and 2d plots.

  • Dynamic replaying of nested sampling.

This tool was designed primarily for use with nested sampling outputs, although it can be used for normal MCMC chains.

For an interactive view of a nested sampling run, you can use the anesthetic script.

$ anesthetic <ns file root>
https://github.com/williamjameshandley/anesthetic/raw/master/images/anim_1.gif

Features

  • Both samples and plotting axes are stored as a pandas.DataFrame, with parameter names as indices, which makes for easy access and modification.

  • Sensible color scheme for plotting nearly flat distributions.

  • For easy extension/modification, uses the standard python libraries: numpy, scipy, matplotlib and pandas.

Installation

anesthetic can be installed via pip

pip install anesthetic

or from the repository

git clone https://github.com/williamjameshandley/anesthetic
cd anesthetic
python -m pip install .

You can check that things are working by running the test suite:

export MPLBACKEND=Agg     # only necessary for OSX users
python -m pip install ".[test]"
python -m pytest
flake8 anesthetic tests
pydocstyle --convention=numpy anesthetic

Dependencies

Basic requirements:

Documentation:

Tests:

Documentation

Full Documentation is hosted at ReadTheDocs. To build your own local copy of the documentation you’ll need to install sphinx. You can then run:

cd docs
make html

Citation

If you use anesthetic to generate plots for a publication, please cite as:

Handley, (2019). anesthetic: nested sampling visualisation. Journal of Open
Source Software, 4(37), 1414, https://doi.org/10.21105/joss.01414

or using the BibTeX:

@article{anesthetic,
    doi = {10.21105/joss.01414},
    url = {http://dx.doi.org/10.21105/joss.01414},
    year  = {2019},
    month = {Jun},
    publisher = {The Open Journal},
    volume = {4},
    number = {37},
    pages = {1414},
    author = {Will Handley},
    title = {anesthetic: nested sampling visualisation},
    journal = {The Journal of Open Source Software}
}

Contributing

There are many ways you can contribute via the GitHub repository.

  • You can open an issue to report bugs or to propose new features.

  • Pull requests are very welcome. Note that if you are going to propose major changes, be sure to open an issue for discussion first, to make sure that your PR will be accepted before you spend effort coding it.

Questions/Comments

Another posterior plotting tool?

This is my posterior plotter. There are many like it, but this one is mine.

There are several excellent tools for plotting marginalised posteriors:

Why create another one? In general, any dedicated user of software will find that there is some functionality that in their use case is lacking, and the designs of previous codes make such extensions challenging. In my case this was:

  1. For large numbers of samples, kernel density estimation is slow, or inaccurate (particularly for samples generated from nested sampling). There are kernel density estimators, such as fastKDE, which ameliorate many of these difficulties.

  2. Existing tools can make it difficult to define new parameters. For example, the default cosmomc chain defines omegabh2, but not omegab. The transformation is easy, since omegab = omegabh2/ (H0/100)**2, but implementing this transformation in existing packages is not so trivial. anesthetic solves this issue by storing the samples as a pandas array, for which the relevant code for defining the above new parameter would be

from anesthetic import MCMCSamples
samples = MCMCSamples(root=file_root)                         # Load the samples
samples['omegab'] = samples.omegabh2/(samples.H0/100)**2      # Define omegab
samples.tex['omegab'] = '$\Omega_b$'                          # Label omegab
samples.plot_1d('omegab')                                     # Simple 1D plot
  1. Many KDE plotting tools have conventions that don’t play well with uniformly distributed parameters, which presents a problem if you are trying to plot priors along with your posteriors. anesthetic has a sensible mechanism, by defining the contours by the amount of iso-probability mass they contain, but colouring the fill in relation to the probability density of the contour.

What’s in a name?

There is an emerging convention for naming nested sampling packages with words that have nest in them (nestle and dynesty, nestorflow). Doing a UNIX grep:

grep nest /usr/share/dict/words

yields a lot of superlatives (e.g. greenest), but a few other cool names for future projects:

  • amnesty

  • defenestrate

  • dishonestly

  • inestimable

  • minestrone

  • rhinestone

I chose anesthetic because I liked the soft ‘th’, and in spite of the US spelling.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anesthetic-2.0.0b14.tar.gz (80.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anesthetic-2.0.0b14-py3-none-any.whl (62.3 kB view details)

Uploaded Python 3

File details

Details for the file anesthetic-2.0.0b14.tar.gz.

File metadata

  • Download URL: anesthetic-2.0.0b14.tar.gz
  • Upload date:
  • Size: 80.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for anesthetic-2.0.0b14.tar.gz
Algorithm Hash digest
SHA256 7a090b159dd6c4d430948be9b45b1302c1ca301cbad46cded0c3546981e75b21
MD5 9589643458c555fcddd56b250fe6b7ad
BLAKE2b-256 f880c864fe1fedfecec429b5f1258fe0ae18d763d854b46179841ecdfa5514ae

See more details on using hashes here.

File details

Details for the file anesthetic-2.0.0b14-py3-none-any.whl.

File metadata

  • Download URL: anesthetic-2.0.0b14-py3-none-any.whl
  • Upload date:
  • Size: 62.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for anesthetic-2.0.0b14-py3-none-any.whl
Algorithm Hash digest
SHA256 84a67105af89b111bc2769c029094c9e15b516e0b5be38872815853f7c9d39fc
MD5 6a3c8313a44be31268e16e1aa0423a06
BLAKE2b-256 08d078b4fc046cf2a304f75a70df34e39625a8d96890a23cccf54b8168488dee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page