SimTk/openmm — pull request #406 by swails (2014-04-09 20:26:49+00:00)
Title: Add support for native CHARMM files

This PR adds the ability to read in CHARMM PSF files as well as the standard parameter, residue topology file (RTF), and CHARMM stream files that are used to run simulations in the CHARMM package. You can create a ``System`` object directly from these files. The procedure is a little bit more complex than using Amber files, which reflects the added complexity in standard CHARMM runs.

Basically, CHARMM PSF files provide only pointers into the parameter databases that are assigned at runtime, so the app layer here also requires that users read in the parameter sets they want to use and load them into their molecule.

The PSF parser here has been tested successfully with PSF files created by VMD, CHARMM GUI Builder, and CHARMM itself (it works with both XPLOR and CHARMM-format PSFs).

I have validated this against the ``chamber`` program in Amber which converts a CHARMM system to an Amber system; the energies here match the Amber energies to within .01 or better kcal/mol for every component of the total force. The Amber energies have, themselves, been validated to match CHARMM results to machine precision.

I have included an example in ``examples/simulateCharmm.py``. I am also willing to add this to the documentation if that's what people would like me to do (is it MS Word? Windows? Mac OK? Anything special I should do?)

I ported my implementation of the CHARMM force field that I added to ParmEd the past week, but none of the new files have any OpenMM copyright headers. I can also add those if necessary.

Notably missing is the NBFIX feature which allows off-diagonal elements of the combined sigma/epsilon LJ parameter matrix to be modified. This requires use of a ``CustomNonbondedForce`` that implements a lookup table (something that is on my to-do list somewhere).

This PR also includes the pedantic permissions fixes and small typo that I recently closed (#393).