Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrating subsets of atoms #7

Open
wouterboomsma opened this issue Sep 16, 2015 · 0 comments
Open

Integrating subsets of atoms #7

wouterboomsma opened this issue Sep 16, 2015 · 0 comments

Comments

@wouterboomsma
Copy link

We're in the process of writing a version 2.0 of our Monte Carlo molecular simulation framework Phaistos. This new version builds on OpenMM (there is support for multiple backends, but this is currently the one furthest in development). Since Monte Carlo is not supported out-of-the-box in OpenMM we've implemented simple Monte Carlo integrators as an OpenMM plugin, and we have a library for conducting internal coordinate updates on general molecular topologies.

One of the primary goals of the new version of the framework is to allow seamless integration of Monte Carlo and molecular dynamics simulation techniques, in the spirit of Hybrid Monte Carlo and non-equilibrium candidate Monte Carlo (NCMC). For instance, we are currently working on sampling side-chain rotamers using using NCMC, allowing the water molecules to relax during the process of driving the system to switch rotameric states.

In our work with NCMC, we've been uncertain about how to implement it most efficiently in OpenMM. The problem is that we have several integrators working on different subsets of the atom positions. In the implementation accompanying the original NCMC paper (PNAS, 2011), John Chodera chose to reimplement velocity Verlet in Python's numpy operations in order to control which positions were updated. It would be nice to be able to use the existing integrators for this purpose. Currently, I do this by maintaining several OpenMM systems, and setting mass=0 for the atoms that should not be modified by the associated integrator (in the perturbation step). This works, but requires copying atom positions back and forth between the systems in each iteration. I was wondering if there would be a more natural way to express things like this in OpenMM. As a simple test case, we could take the WCA dimer example from the NCMC paper (I have a C++ implementation ready). Both Peter Eastman and John Chodera would be relevant to talk to about these considerations, although I assume that the implementation details in OpenMM are perhaps primarily the domain of Peter(?).

Another issue which I could use some help on is whether it is possible to write up a Reporter in OpenMM that returns the energy contributions from the individual terms in the forcefield. This is a feature we have become accustomed to in the old version of Phaistos, and it would be nice to be able to support it again in this new version. However, I couldn't immediately see how this information could be retrieved in OpenMM. Input on this matter would be very helpful as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant