-
Notifications
You must be signed in to change notification settings - Fork 85
Add PeriodicNonequilibriumIntegrator #466
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
Conversation
Co-Authored-By: Josh Fass <[email protected]>
…m/choderalab/openmmtools into loopy_alchemical_customintegrator
…ors from @domrufa)
|
Weird---there are issues that seem unrelated: Any ideas here @dominicrufa ? |
| >>> # Run one periodic cycle: (eq 0) > (neq 0->1) > (eq 1) > (neq 1->0) | ||
| >>> context.setPositions(testsystem.positions) | ||
| >>> nsteps_per_period = 2*nsteps_eq + 2*nsteps_neq | ||
| >>> integrator.step(nsteps_per_period) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it seems like this class was written to allow for single integrator.step() calls which don't complete the nonequilibrium cycle; is this correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's correct! It's the same way that AlchemicalNonequilibriumLangevinIntegrator works, except instead of halting after n_steps_neq, it continues periodic cycling infinitely. This way, we can also measure the work at various points through the switching, and this allows us to capture useful information about the efficiency of the protocol.
I think your integrators are super useful as well, so I'll come back to those in a couple of days.
openmmtools/integrators.py
Outdated
| lambda_control_expression = "lambda"\ | ||
| " + delta_lambda*step((step+0.5)-n_steps_eq)*step((n_steps_eq+n_steps_neq) - (step+0.5))"\ | ||
| " - delta_lambda*step((step+0.5)-(n_steps_eq+n_steps_neq+n_steps_eq))*step(n_steps_per_cycle - (step+0.5));"\ | ||
| "delta_lambda = 1/n_lambda_steps;" # Note that there may be multiple H per integrator string, so we correct for this here |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you split this expression into substrings and provide a short comment on each part? it's not too easy to read in this format
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great idea!
hm. never seen this before. can you post the whole traceback? |
|
@dominicrufa : I was just picking the errors out of the travis failures, but it looks like there are a variety of odd errors I haven't seen before. |
|
Thanks for the great feedback, @dominicrufa ! |
Description
This PR adds a
PeriodicNonequilibriumIntegrator, a simple extension ofAlchemicalNonequilibriumLangevinIntegratorthat supports periodic alchemical protocols.@dominicrufa : This is heavily based on your
Loopyand bidirectional integrators, but since this is simpler and more compatible with the current Folding@home infrastructure, I'm going to merge this first and then return to #464 in a day or two.Todos
Status