Skip to main content

Adaptive Parallel Tempering MCMC Ensemble Sampler

Project description

reddemcee

reddemcee light

reddemcee dark

Adaptive Parallel Tempering MCMC Ensemble Sampler, made for the exoplanet finder algorithm EMPEROR. This sampler works as a stand-alone program, so the community might find it useful.

Overview

reddemcee is an Adaptive Parallel Tempering MCMC implementation based on the excellent emcee code, and a modified version of the Vousden et al. implementation.

It's coded in such a way that minimal differences in input are required compared to emcee (v. 3.1.3). Make sure to check reddemcee's documentation !

Dependencies

This code makes use of:

tqdm is used to display progress bars on the terminal. emcee is used for calculating the autocorrelation times.

Installation

Pip

In the console type

pip install reddemcee

From Source

In the console type

git clone https://github.com/ReddTea/reddemcee
cd reddemcee
python -m pip install -e .

Usage

For a complete tutorial please refer to the documentation's tutorial or the test file in the tests folder.

import numpy as np
import reddemcee

def log_like(x, ivar):
    return -0.5 * np.sum(ivar * x ** 2)

def log_prior(x):
    return 0.0

ndim = 2
ntemps, nwalkers, nsweeps, nsteps = 5, 50, 100, 2

ivar = 1. / np.random.rand(ndim)
p0 = np.random.randn(10, nwalkers, ndim)
sampler = reddemcee.PTSampler(nwalkers,
                             ndim,
                             log_like,
                             log_prior,
                             ntemps=ntemps,
                             loglargs=[ivar],
                             )
                             
sampler.run_mcmc(p0, nsweeps, nsteps)  # starting coords, nsweeps, nsteps

Configuring the Sampler

When setting up PTSampler, you can use the arguments:

Arg Type Description
ntemps int The number of temperatures. If None, determined from betas.
betas list The inverse temperatures of the parallel chains.
pool Pool A pool object for parallel processing.
loglargs list Positional arguments for the log-likelihood function.
loglkwargs list Keyword arguments for the log-likelihood function.
logpargs list Positional arguments for the log-prior function.
logpkwargs list Keyword arguments for the log-prior function.
backend Backend A backend object for storing the chain.
smd_history bool Whether to store swap mean distance history.
tsw_history bool Whether to store temperature swap history.
adapt_tau float Halflife of adaptation hyper-parameter.
adapt_nu float Rate of adaptation hyper-paramter.
adapt_mode 0-4 Mode of adaptation.

The adaptation modes try to equalise the following quantity:

Mode Description
0 Temperature Swap Rate
1 Swap Mean Distance
2 Specific Heat
3 dE/sig
4 Thermodynamic Length

Additional Functions

Additional functions on the sampler include:

Function Description
get_evidence_ti Calculates evidence by Thermodynamic Integration
get_evidence_ss Calculates evidence by Stepping Stones
get_evidence_hybrid Calculates evidence by Stepping Stones
get_autocorr_time Auto-correlation time.
get_betas Returns beta history
get_chain Returns chain
get_log_like Returns log likelihoods
get_logprob Returns log posteriors

All these functions accept as arguments:

Arg Description
flat Flatten the walkers.
thin Take one every thin samples.
discard Drop the first discard steps in samples.

For example, the previous chain would have shape (5, 200, 50, 2), for 5 temperatures, 200 steps (nsweeps*nsteps), 50 walkers, and 2 dimensions.

sampler.get_chain(discard=100)

Would return the samples with shape (5, 100, 50, 2). Dropping the first 100 for every walker.

sampler.get_chain(discard=100, flat=True)

Would return the samples with shape (5, 5000, 2), 'linearising' the walkers.

Project details


Download files

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

Source Distribution

reddemcee-0.9.10.tar.gz (31.9 kB view details)

Uploaded Source

Built Distribution

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

reddemcee-0.9.10-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file reddemcee-0.9.10.tar.gz.

File metadata

  • Download URL: reddemcee-0.9.10.tar.gz
  • Upload date:
  • Size: 31.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for reddemcee-0.9.10.tar.gz
Algorithm Hash digest
SHA256 6d1995b52fc9fe55a233f4f886d269d2b61072984d7aef5c272a0ac4e3fc4036
MD5 ae5146bbe957edb87357f85d1b7241cf
BLAKE2b-256 10f7abc1318291eccc32b8fbe0a5857376e9b9996277cabf9b0b09df9ce8eec8

See more details on using hashes here.

File details

Details for the file reddemcee-0.9.10-py3-none-any.whl.

File metadata

  • Download URL: reddemcee-0.9.10-py3-none-any.whl
  • Upload date:
  • Size: 33.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for reddemcee-0.9.10-py3-none-any.whl
Algorithm Hash digest
SHA256 fa1a481d92d8f412c32305e1665df3476a6204690d8145d026842f5d6f5c18ad
MD5 d35296a58a814e26fd83bcb79cdc0491
BLAKE2b-256 3d22390f6d5b58133ce6ea80918caacae53fc72b03303019c4ed6f96ffc5a64e

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