An adaptive Metropolis-Hastings sampler with simulated annealing and multiple parallel chains. The proposal dsistribution can be generated chain by chain or from the ensemble.
See the Jupyter notebooks in Test for examples of how to use this code. In particular, Test6 shows the power of the code to detect and sample multimodal probability distributions in an N-dimensional space.