The Pocomc sampler

Preconditioned Monte Carlo for Accelerated Bayesian Computation

Name

pocomc

Version

1.2.1

Author(s)

Minas Karamanis, David Nabergoj, Florian Beutler, John Peacock, Uros Seljak

URL

https://github.com/minaskar/pocomc

Citation(s)

https://arxiv.org/abs/2207.05660, https://arxiv.org/abs/2207.05652

Parallelism

parallel

pocoMC is a Python package for fast Bayesian posterior and model evidence estimation. It leverages the Preconditioned Monte Carlo (PMC) algorithm, offering significant speed improvements over traditional methods like MCMC and Nested Sampling. Ideal for large-scale scientific problems with expensive likelihood evaluations, non-linear correlations, and multimodality, pocoMC provides efficient and scalable posterior sampling and model evidence estimation. Widely used in cosmology and astronomy, pocoMC is user-friendly, flexible, and actively maintained.

It generates both posterior samples and Bayesian evidences.

Installation

if using conda, do this first to ensure consistent dependencies:

conda install -c conda-forge corner pytorch tqdm

pip install pocomc

Parameters

These parameters can be set in the sampler’s section in the ini parameter file. If no default is specified then the parameter is required. A listing of “(empty)” means a blank string is the default.

Name

Type

Default

Description

n_effective

integer, default=512

Number of effective particles/walkers. It should be at least twice the number of active particles.

n_active

integer, default=256

Number of active particles/walkers. It should no more than half of the number of effective particles. It is recommended to be a multiple of the number of CPUs for optimal performance.

flow

string

The type of normalizing flow to use. Default is “nsf6” (Neural Spline Flow with 6 transforms). Other options include “nsf3”, “nsf12”, “maf3”, “maf6”, “maf12” (Masked Autoregressive Flow).

precondition

bool, default=True

Whether to use Normalizing Flow Preconditioning to accelerate sampling.

dynamic

bool, default=True

Whether to use dynamic particle allocation.

n_total

integer, default=4096

Total number of effective samples to generate. Higher values will increase the accuracy of the posterior estimate (recommended ~10000 for publication quality corner plots).

n_evidence

integer, default=4096

Number of samples to generate for the Bayesian evidence calculation.

n_steps

integer, default=None

Number of MCMC steps. This will be automatically adjusted based on the sampling efficiency. Default is n_steps=n_dim. Larger values will provide more robust results at higher computational cost.

n_max_steps

integer, default=None

Maximum number of MCMC steps. Default is n_max_steps=10*n_dim. This should be greater than n_steps.

save_every

int, default=None

Save the state of the sampler every save_every iterations. If not provided, the sampler will not save intermediate states.

seed

int

0

A random seed for reproducibility. Default is to generate automatically.

progress

bool, default=True

Whether to show a progress bar during sampling.