Add a built-in mcmc sampler
This adds a built-in MCMC sampler. Predominantly, the ideas used are built on the ideas of Veitch et al. (2015). This started off as an exercise in understanding the LALInference_MCMC implementation.
Motivation
- It would be nice to have an MCMC sampler which we can easily customize/modify
- I decided it was easier to implement from scratch than use existing packages
Current feature set
- Custom jump proposals
- Parallel-tempering (tested to resolve sampling issues for a simple bimodal problem)
- Parallelization using a map
Required features
-
A user interface for selecting/weighting custom jump proposals -
More proposal options (including GW-specific versions) -
Thermodynamic integration to estimate the evidence -
Checkpointing -
Between chain swap-acceptance information -
Profile and optimize the sample storage: currently used pandas dataframes, but I believe this is adding significant overhead.
Nice features I'd like to add
-
Improve parallelization: currently the efficiency is awful, I think it might be because I'm passing data around -
Samples from the finite-temperature chains (use resampling to reweight from the finite-temperature distribution to the zero-temperature distribution) -
Specify initial positions per-chain -
Specify the temperature ladder -
Implement dynamic temperature selection: arXiv:1501.05823
Edited by Gregory Ashton