{"action":"opened","issue":{"url":"https://api.github.com/repos/jmichel80/jmichel80.github.io/issues/7","labels_url":"https://api.github.com/repos/jmichel80/jmichel80.github.io/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/jmichel80/jmichel80.github.io/issues/7/comments","events_url":"https://api.github.com/repos/jmichel80/jmichel80.github.io/issues/7/events","html_url":"https://github.com/jmichel80/jmichel80.github.io/issues/7","id":106876755,"number":7,"title":"Integrating subsets of atoms","user":{"login":"wouterboomsma","id":994311,"avatar_url":"https://avatars.githubusercontent.com/u/994311?v=3","gravatar_id":"","url":"https://api.github.com/users/wouterboomsma","html_url":"https://github.com/wouterboomsma","followers_url":"https://api.github.com/users/wouterboomsma/followers","following_url":"https://api.github.com/users/wouterboomsma/following{/other_user}","gists_url":"https://api.github.com/users/wouterboomsma/gists{/gist_id}","starred_url":"https://api.github.com/users/wouterboomsma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wouterboomsma/subscriptions","organizations_url":"https://api.github.com/users/wouterboomsma/orgs","repos_url":"https://api.github.com/users/wouterboomsma/repos","events_url":"https://api.github.com/users/wouterboomsma/events{/privacy}","received_events_url":"https://api.github.com/users/wouterboomsma/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-09-16T22:30:28Z","updated_at":"2015-09-16T22:30:28Z","closed_at":null,"body":"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.\r\n\r\nOne 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.\r\n\r\nIn 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(?).\r\n\r\nAnother 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.\r\n"}}