AlchemicalNonequilibriumLangevinIntegrator acceptance
See original GitHub issueCopying from the alchemistry Slack channel from @davidlmobley:
We’re having some issues with our work on binding mode sampling with NCMC (in BLUES), especially as we try to switch to the AlchemicalNonequilibriumLangevinIntegrator
, where we are having large energies/forces that lead to crashes as we are turning back on alchemical interactions between the ligand and the protein. Part of this seems to potentially be due to problems with the alchemical correction factor in certain cases, but we think that actually forces are getting large enough to cause the integrator to lose stability first. Do you have suggestions? We were wondering whether we ought to be checking for forces that exceed some sort of cutoff and automatically rejecting cases where that happens (naively it seems to me there ought to be some sort of force to timestep ratio which determines the largest force that can be tolerated without risking crashes, and that anything exceeding that value by many orders of magnitude should certainly be rejected).
Some notes
•For the AlchemicalNonequilibriumLangevinIntegrator we were using R V O H O V R
(g-baoab) splitting. •The “alchemical correction factor” is the correction for transform the real system to/from the alchemical system (it was in perses.annihilation.ncmc_switching at one point, https://github.com/choderalab/perses/blob/3c0e672728c0acb87a0efc9fa76bc893f1b5dfed/perses/annihilation/ncmc_switching.py#L162-L182 but glancing over the master branch I don’t see it there now)
Issue Analytics
- State:
- Created 6 years ago
- Comments:51 (28 by maintainers)
Top GitHub Comments
We’ve got a fix for the speed issue in the works: https://github.com/choderalab/openmmtools/pull/218
When I construct
AbsoluteAlchemicalFactory
withdisable_alchemical_dispersion_correction=True
, the slowdown is eliminated:What about
LangevinIntegrator
instead inheriting from a baseTrotterSplittingIntegrator
that would allow velocity Verlet-style integrators?Alternatively, I like the idea of an
override_sanity_checks=False
(or maybesanity_checks=True
)?