bilby.core.sampler.ptmcmc.PTMCMCSampler

class bilby.core.sampler.ptmcmc.PTMCMCSampler(likelihood, priors, outdir='outdir', label='label', use_ratio=False, plot=False, skip_import_verification=False, **kwargs)[source]

Bases: MCMCSampler

bilby wrapper of PTMCMC (https://github.com/jellis18/PTMCMCSampler/)

All positional and keyword arguments (i.e., the args and kwargs) passed to run_sampler will be propagated to PTMCMCSampler.PTMCMCSampler, see documentation for that class for further help. Under Other Parameters, we list commonly used kwargs and the bilby defaults.

Parameters:
Niter: int (2*10**4 + 1)

The number of mcmc steps

burn: int (5 * 10**3)

If given, the fixed number of steps to discard as burn-in

thin: int (1)

The number of steps before saving the sample to the chain

custom_proposals: dict (None)

Add dictionary of proposals to the array of proposals, this must be in the form of a dictionary with the name of the proposal, then a list containing the jump function and the weight e.g {‘name’ : [function , weight]} see (https://github.com/rgreen1995/PTMCMCSampler/blob/master/examples/simple.ipynb) and (http://jellis18.github.io/PTMCMCSampler/PTMCMCSampler.html#ptmcmcsampler-ptmcmcsampler-module) for examples and more info.

logl_grad: func (None)

Gradient of likelihood if known (default = None)

logp_grad: func (None)

Gradient of prior if known (default = None)

verbose: bool (True)

Update current run-status to the screen

__init__(likelihood, priors, outdir='outdir', label='label', use_ratio=False, plot=False, skip_import_verification=False, **kwargs)[source]
__call__(*args, **kwargs)

Call self as a function.

Methods

__init__(likelihood, priors[, outdir, ...])

calc_likelihood_count()

calculate_autocorrelation(samples[, c])

Uses the emcee.autocorr module to estimate the autocorrelation

check_draw(theta[, warning])

Checks if the draw will generate an infinite prior or likelihood

get_initial_points_from_prior([npoints])

Method to draw a set of live points from the prior

get_random_draw_from_prior()

Get a random draw from the prior distribution

log_likelihood(theta)

Parameters:

log_prior(theta)

Parameters:

print_nburn_logging_info()

Prints logging info as to how nburn was calculated

prior_transform(theta)

Prior transform method that is passed into the external sampler.

run_sampler(*args, **kwargs)

A template method to run in subclasses

write_current_state()

TODO: implement a checkpointing method

write_current_state_and_exit([signum, frame])

Make sure that if a pool of jobs is running only the parent tries to checkpoint and exit.

Attributes

check_point_equiv_kwargs

constraint_parameter_keys

list: List of parameters providing prior constraints

custom_proposals

default_kwargs

external_sampler_name

fixed_parameter_keys

list: List of parameter keys that are not being sampled

hard_exit

kwargs

dict: Container for the kwargs.

nburn_equiv_kwargs

ndim

int: Number of dimensions of the search parameter space

npool

npool_equiv_kwargs

nwalkers_equiv_kwargs

sampler_function_kwargs

sampler_init_kwargs

sampling_seed_equiv_kwargs

sampling_seed_key

Name of keyword argument for setting the sampling for the specific sampler.

search_parameter_keys

list: List of parameter keys that are being sampled

calculate_autocorrelation(samples, c=3)[source]

Uses the emcee.autocorr module to estimate the autocorrelation

Parameters:
samples: array_like

A chain of samples.

c: float

The minimum number of autocorrelation times needed to trust the estimate (default: 3). See emcee.autocorr.integrated_time.

check_draw(theta, warning=True)[source]

Checks if the draw will generate an infinite prior or likelihood

Also catches the output of numpy.nan_to_num.

Parameters:
theta: array_like

Parameter values at which to evaluate likelihood

warning: bool

Whether or not to print a warning

Returns:
bool, cube (nlive,

True if the likelihood and prior are finite, false otherwise

property constraint_parameter_keys

list: List of parameters providing prior constraints

property fixed_parameter_keys

list: List of parameter keys that are not being sampled

get_initial_points_from_prior(npoints=1)[source]

Method to draw a set of live points from the prior

This iterates over draws from the prior until all the samples have a finite prior and likelihood (relevant for constrained priors).

Parameters:
npoints: int

The number of values to return

Returns:
unit_cube, parameters, likelihood: tuple of array_like

unit_cube (nlive, ndim) is an array of the prior samples from the unit cube, parameters (nlive, ndim) is the unit_cube array transformed to the target space, while likelihood (nlive) are the likelihood evaluations.

get_random_draw_from_prior()[source]

Get a random draw from the prior distribution

Returns:
draw: array_like

An ndim-length array of values drawn from the prior. Parameters with delta-function (or fixed) priors are not returned

property kwargs

dict: Container for the kwargs. Has more sophisticated logic in subclasses

log_likelihood(theta)[source]
Parameters:
theta: list

List of values for the likelihood parameters

Returns:
float: Log-likelihood or log-likelihood-ratio given the current

likelihood.parameter values

log_prior(theta)[source]
Parameters:
theta: list

List of sampled values on a unit interval

Returns:
float: Joint ln prior probability of theta
property ndim

int: Number of dimensions of the search parameter space

print_nburn_logging_info()[source]

Prints logging info as to how nburn was calculated

prior_transform(theta)[source]

Prior transform method that is passed into the external sampler.

Parameters:
theta: list

List of sampled values on a unit interval

Returns:
list: Properly rescaled sampled values
run_sampler(*args, **kwargs)[source]

A template method to run in subclasses

sampling_seed_key = None

Name of keyword argument for setting the sampling for the specific sampler. If a specific sampler does not have a sampling seed option, then it should be left as None.

property search_parameter_keys

list: List of parameter keys that are being sampled

write_current_state()[source]

TODO: implement a checkpointing method

write_current_state_and_exit(signum=None, frame=None)[source]

Make sure that if a pool of jobs is running only the parent tries to checkpoint and exit. Only the parent has a ‘pool’ attribute.

For samplers that must hard exit (typically due to non-Python process) use os._exit that cannot be excepted. Other samplers exiting can be caught as a SystemExit.