This directory contains the relevant sourcecode for replicating the results within the paper
"Semi-Empirical Objective Functions for MCMC Proposal Optimization"

Python scripts for replicating results from the paper can be found by following 
the directory structure according to the result's location within the paper.

The scripts are intended to be run from this directory.  Copy the desired script into 
this directory before running.

For results from Section 7.3 and Appendix G, *sample_generator.py scripts must be run 
before attempting to run experiments in order to generate the long HMC chain.

##Regarding ESS Calculations##
These scripts calculate ESS using the python package ArviZ, which performs a 
similar (but not exactly identical) calculation of ESS as that used within the paper.
The primary difference is when ESS per proposal exceeds 1.0, otherwise the results are
comparible.

The paper's calculation of ESS is performed following Jack Walton's modification of 
PyMC's calculation of ESS.  We were unsure whether we could redistribute this.
This is available at:

https://github.com/jwalton3141/jwalton3141.github.io/blob/master/assets/posts/ESS/rwmh.py

To entirely replicate paper's results, replace ArviZ's ESS function (referenced as 'calc_ess'
within these scripts) with Walton's 'my_ESS' function.

##Required Packages##
PyTorch (1.8.0)
ArviZ (0.11.1)
hamiltorch - https://github.com/AdamCobb/hamiltorch.git
matplotlib
numpy