Some guidelines for statisticians/mathematicians writing samplers and minimizers if they want them to be useful to scientists.
- We don't need bespoke, highly-trained algorithms: we need general methods that need minimal human supervision.
- If your algorithm isn't parallel then it is unlikely to be useful (we have a lot of CPUs).
- We don't have the derivative of the likelihood in most cases. It's hard enough calculating the likelihood itself.
- Dumb down the paper a little for us; we spend most of our time doing other things.
- If you supply some code along with your algorithm we are vastly more likely to at least give it a try.
- Write your code in Python or C (or maybe C++ if you must). We need to integrate your it into more general frameworks, not statistical toolboxes.
- Write your code as a library that we can call from our own programmes, not as a top-level program on its own.
- Don't do I/O yourself in your code. We'll handle that, just return some samples/values/metadata/whatever.
- Sometimes our log-likelihoods are going to return -inf or Nan. You need to deal with this.