Preconditioned Monte Carlo
Project description
pocoMC is a Python implementation of the Preconditioned Monte Carlo method for accelerated Bayesian inference
Getting started
Brief introduction
pocoMC
utilises a Normalising Flow in order to precondition the target distribution by removing any correlations between its parameters. The code then generates posterior samples, that can be used for parameter estimation, using a powerful adaptive Sequential Monte Carlo algorithm manifesting a sampling effiency that can be orders of magnitude higher than without precondition. Furthermore, pocoMC
also provides an unbiased estimate of the model evidence that can be used for the task of Bayesian model comparison.
Documentation
Read the docs at pocomc.readthedocs.io for more information, examples and tutorials.
Installation
To install pocomc
using pip
run:
pip install pocomc
or, to install from source:
git clone https://github.com/minaskar/pocomc.git
cd pocomc
python setup.py install
Basic example
For instance, if you wanted to draw samples from a 10-dimensional Rosenbrock distribution with a uniform prior, you would do something like:
import pocomc as pc
import numpy as np
ndim = 10 # Number of dimensions
def log_prior(x):
if np.any((x < -10.0) | (x > 10.0)): # If any dimension is out of bounds, the log prior is -infinity
return -np.inf
else:
return -const
def log_likelihood(x):
return -np.sum(10.0*(x[:,::2]**2.0 - x[:,1::2])**2.0 \
+ (x[:,::2] - 1.0)**2.0, axis=1)
nwalkers = 1000
prior_samples = np.random.uniform(size=(nwalkers, ndim), low=-10.0, high=10.0)
sampler = pc.Sampler(nwalkers,
ndim,
log_likelihood,
log_prior,
vectorize_likelihood=True,
bounds=(-10.0, 10.0)
)
sampler.run(prior_samples)
results = sampler.results # Dictionary with results
Attribution & Citation
Please cite the following papers if you found this code useful in your research:
@article{karamanis2022pmc,
title={Accelerating astronomical and cosmological inference with Preconditioned Monte Carlo},
author={Karamanis, Minas and Beutler, Florian and Peacock, John A and Nabergoj, David, and Seljak, Uro\v{s}},
journal={in prep},
year={2022}
}
@article{karamanis2022pocomc,
title={pocoMC: A Python package for accelerated Bayesian inference in astronomy and cosmology},
author={Karamanis, Minas and Nabergoj, David, and Beutler, Florian and Peacock, John A and Seljak, Uro\v{s}},
journal={in prep},
year={2022}
}
Licence
Copyright 2022-Now Minas Karamanis and contributors.
zeus is free software made available under the GPL-3.0 License. For details see the LICENSE
file.
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.