zeus is a Python implementation of the Ensemble Slice Sampling method.
- Fast & Robust Bayesian Inference,
- Efficient Markov Chain Monte Carlo (MCMC),
- Black-box inference, no hand-tuning,
- Excellent performance in terms of autocorrelation time and convergence rate,
- Scale to multiple CPUs without any extra effort.
For instance, if you wanted to draw samples from a 10-dimensional Normal distribution, you would do something like:
import zeus
import numpy as np
def log_prob(x, ivar):
return - 0.5 * np.sum(ivar * x**2.0)
nsteps, nwalkers, ndim = 1000, 100, 10
ivar = 1.0 / np.random.rand(ndim)
start = np.random.randn(nwalkers, ndim)
sampler = zeus.EnsembleSampler(nwalkers, ndim, log_prob, args=[ivar])
sampler.run_mcmc(start, nsteps)
To install zeus
using pip
run:
pip install zeus-mcmc
- See the :doc:`cookbook` page to learn how to perform Bayesian Inference using
zeus
. - See the :doc:`faq` page for frequently asked questions about
zeus
' operation. - See the :doc:`api` page for detailed API documentation.
Please cite Karamanis & Beutler (2020) if you find this code useful in your research. The BibTeX entry for the paper is:
@article{zeus, title={zeus: A Python Implementation of the Ensemble Slice Sampling method}, author={Minas Karamanis and Florian Beutler}, year={2020}, note={in prep} } @article{ess, title={Ensemble Slice Sampling}, author={Minas Karamanis and Florian Beutler}, year={2020}, eprint={2002.06212}, archivePrefix={arXiv}, primaryClass={stat.ML} }
Copyright 2019-2020 Minas Karamanis and contributors.
zeus
is free software made available under the GPL-3.0 License
.
2.1.0 (29/10/20)
- Added
blobs
interface to track arbitrary metadata. - Updated
GlobalMove
and multimodal example. - Fixed minor bugs.
2.0.0 (05/10/20)
- Added new
Moves
interface (e.g.DifferentialMove
,GlobalMove
, etc). - Plotting capabilities (i.e.
cornerplot
). - Updated docs.
- Fixed minor bugs.
1.2.2 (19/09/20)
Sampler
class is deprecated. NewEnsembleSampler
class in now available.- New estimator for the Integrated Autocorrelation Time. It's accurate even with short chains.
- Updated
ChainManager
to handle thousands of CPUs.
1.2.1 (04/08/20)
- Changed to Flat-not-nested philosophy for diagnostics and
ChainManager
.
1.2.0 (03/08/20)
- Extended
ChainManager
withgather
,scatter
, andbcast
tools.
1.1.0 (02/08/20)
- Added
ChainManager
to deploy into supercomputing clusters, parallelizing both chains and walkers. - Added Convergence diagnostic tools (Gelman-Rubin, Geweke).
1.0.7 (11/05/20)
- Improved parallel distribution of tasks
.. toctree:: :maxdepth: 1 :caption: Cookbook Recipes :hidden: Overview <cookbook> notebooks/normal_distribution.ipynb notebooks/datafit.ipynb notebooks/multiprocessing.ipynb notebooks/MPI.ipynb
.. toctree:: :maxdepth: 3 :caption: Help & Reference :hidden: faq api