bilby.core.sampler.pymc.Pymc
- class bilby.core.sampler.pymc.Pymc(likelihood, priors, outdir='outdir', label='label', use_ratio=False, plot=False, skip_import_verification=False, **kwargs)[source]
Bases:
MCMCSampler
bilby wrapper of the PyMC sampler (https://www.pymc.io/)
All keyword arguments (i.e., the kwargs) passed to run_sampler will be propapated to pymc.sample where appropriate, see documentation for that class for further help. Under Other Parameters, we list commonly used kwargs and the bilby, or where appropriate, PyMC defaults.
- Parameters:
- draws: int, (1000)
The number of sample draws from the posterior per chain.
- chains: int, (2)
The number of independent MCMC chains to run.
- cores: int, (1)
The number of CPU cores to use.
- tune: int, (500)
The number of tuning (or burn-in) samples per chain.
- discard_tuned_samples: bool, True
Set whether to automatically discard the tuning samples from the final chains.
- step: str, dict
Provide a step method name, or dictionary of step method names keyed to particular variable names (these are case insensitive). If passing a dictionary of methods, the values keyed on particular variables can be lists of methods to form compound steps. If no method is provided for any particular variable then PyMC will automatically decide upon a default, with the first option being the NUTS sampler. The currently allowed methods are ‘NUTS’, ‘HamiltonianMC’, ‘Metropolis’, ‘BinaryMetropolis’, ‘BinaryGibbsMetropolis’, ‘Slice’, and ‘CategoricalGibbsMetropolis’. Note: you cannot provide a PyMC step method function itself here as it is outside of the model context manager.
- step_kwargs: dict
Options for steps methods other than NUTS. The dictionary is keyed on lowercase step method names with values being dictionaries of keywords for the given step method.
- __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_expected_outputs
([outdir, label])Get lists of the expected outputs directories and files.
get_initial_points_from_prior
([npoints])Method to draw a set of live points from the prior
Get a random draw from the prior distribution
log_likelihood
(theta)log_prior
(theta)Prints logging info as to how nburn was calculated
prior_transform
(theta)Prior transform method that is passed into the external sampler.
A template method to run in subclasses
Convert any bilby likelihoods to PyMC distributions.
Set the PyMC prior distributions.
Set the mapping between predefined bilby priors and the equivalent PyMC distributions.
write_current_state
()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
abbreviation
check_point_equiv_kwargs
list: List of parameters providing prior constraints
default_kwargs
default_nuts_kwargs
external_sampler_name
list: List of parameter keys that are not being sampled
hard_exit
dict: Container for the kwargs.
nburn_equiv_kwargs
int: Number of dimensions of the search parameter space
npool
npool_equiv_kwargs
nwalkers_equiv_kwargs
sampler_name
sampling_seed_equiv_kwargs
Name of keyword argument for setting the sampling for the specific sampler.
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
- classmethod get_expected_outputs(outdir=None, label=None)[source]
Get lists of the expected outputs directories and files.
These are used by
bilby_pipe
when transferring files via HTCondor. Both can be empty. Defaults to a single directory:"{outdir}/{name}_{label}/"
, wherename
isabbreviation
if it is defined for the sampler class, otherwise it defaults tosampler_name
.- Parameters:
- outdirstr
The output directory.
- labelstr
The label for the run.
- Returns:
- list
List of file names.
- list
List of directory names.
- 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
- 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
- sampling_seed_key = 'random_seed'
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
- setup_prior_mapping()[source]
Set the mapping between predefined bilby priors and the equivalent PyMC distributions.
- 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 aSystemExit
.