-
Notifications
You must be signed in to change notification settings - Fork 50
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
Stable simulations after geometry proposal #44
Comments
A couple of extra thoughts here:
|
For GHMC, you could turn off the Monte Carlo step and see if it explodes. If not, it's the thermostat that is helping. For both GHMC and MMC, we can add a counter that counts how many times
This would be super hard because you either need to make proposals in bond-angle-torsion variables and compute Jacobians for the M-H acceptance criteria, or you need to rewrite the OpenMM constraint algorithm to give you the Lagrange multipliers and compute the Jacobians from that.
I think we can use GHMC in NCMC by modifying the acceptance criteria, but we have to compute the correct criteria for this. We probably want to understand why it works so much better than VV in case we are missing something.
We can definitely add that to the roadmap.
Good point. What would the API look like? Which schemes should it support? |
I think the Monte Carlo step is really what's helping here, since it still explodes when I remove that bit.
Ok, nevermind then.
I agree, I'd like to know as well. Besides the presence of an extra energy computation, is there any reason we should not prefer GHMC or its variants for the propagation of the system (even outside of NCMC)?
I will open another issue for brainstorming this. |
GHMC will be much more expensive than VV for propagating NCMC switches. Maybe 2-10 times per timestep depending on the overhead of energy computation, extra force computation, the global kinetic energy sums, and the accept/reject step. |
It could still end up being more efficient to use GHMC, of course, but from a cost per timestep view, VV is most efficient. |
I think we're good here. Can re-open later if necessary. |
Just wanted to start a thread to discuss the best way to ensure we get stable simulations after the geometry proposal step.
In order for NCMC to work, we'll need to have a stable simulation for the alchemically-modified lambda=0 state after the geometry proposal step for some timestep. If we can't get stable dynamics with lambda=0, NCMC is not going to help us improve acceptance probabilities. In principle, this should be relatively straightforward since we should only be dealing with intramolecular valence terms at this point.
Obviously, the best solution would be to see if we can improve the geometry proposal, but there are always possibilities where we can't control what is going on with more complex intramolecular interactions or steric clashes that will occur when we start switching lambda from 0 to 1.
Ideas @pgrinaway has suggested are:
NaN
s (good!), but does not respect constraints and makes unbiased Gaussian proposals in each atomic coordinate (bad).NaN
s (good!) and uses gradient information to achieve high acceptance probabilities (also good). Timestep could potentially be autotuned, or even more sophisticated schemes could be used (e.g. extra-chance GHMC). We have to change the NCMC engine to accumulate the appropriate form of work for this, however, since it will be the potential energy change accumulated from each step since Metropolization already handles the shadow work.Do we want to have the flexibility to try multiple integrators inside of
NCMCEngine
? If so, what should the API for that look like?I'm happy to take a stab at this once we decide what the appropriate functionality and API would be.
The text was updated successfully, but these errors were encountered: