-
Notifications
You must be signed in to change notification settings - Fork 15
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
Alchemical Transfer Method #327
Conversation
Begins to add support for serial AToM simulations in BioSimSpace OpenMM.
Several bug fixes, production simulations now run (contingent on minimisation and equilibration).
The introduction of this lever means that guesses have to be made regarding underlying details of the lambda schedule. Current assumptions are made using the base configs of both the Gallacchio lab and femto protocols
… argument to BSS.FreeEnergy.AToM.relativeATM
…to increase the stability of high lambda value calculations
…of AToM systems. Includes large amounts of re-factoring of ATM code.
…aints in line with other methods
…tential well used to positonally restrain atoms
…protein. this is acheived by adding the ability to parse 'protein_index' as a list of ints. Required for the eralpha test system as it is truncated
…allachio lab repo
Also exposes AToMSetup to docs
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.
Many thanks for this heroic effort, @mb2055. Things are looking really good and the new tutorial is great.
def run( | ||
system, | ||
protocol, | ||
platform="CPU", | ||
work_dir=None, | ||
setup_only=False, | ||
property_map={}, | ||
): |
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.
This still isn't resolved, but I don't see any easy way to do it given the state stored by the AToM
class. Perhaps it's easiest to leave like this, since it is similar to the logic for the MD
and Metadynamics
modules. (Just a bit confusing if you're used to the FreeEnergy.Relative
API. I'll have think before merging.
This PR adds functionality for creating, running and analysing RBFE calculations using the Alchemical Transfer Method (AToM).
Functionality is contained in a pair of key locations and is as follows:
BioSimSpace.FreeEnergy.AToM
is a class that facilitates the creation of AToM-compatible systems, the use of the BioSimSpace runner to run full sets of production simulations, and analysis using UWHAM....AToM.prepare()
to create an AToM-compatible system. Users can pass a vector to the prepare function that defines the displacement of the free ligand relative to the bound ligand. If this vector is not provided a best-fit vector will be automatically calculated.AToM
class includes a helper function calledviewRigidCores
which allows the user to view their choice of rigid core atoms within a notebook.BioSimSpace.Protocol.AToM{}
contains a series of protocols for minimisation, equilibration and annealing of AToM systems. Equilibration and annealing protocols allow users to manually set the large number of constants and lambda-dependent values used in AToM simulations, any that are not set have sane defaults chosen for them.BioSimSpace.Protocol.AToMEquilibration
allows the user to run with or without the ATMForce present, simply by settinguse_atm_force
.BioSimSpace.Protocol.AToMAnnealing
allows the user to anneal any number of the lambda-dependent values, these are set through a dictionary. If not set the system is annealed from lambda1,lambda2 = 0 to lambda1,lambda2 = 0.5.BioSimSpace.FreeEnergy.AToM.run()
) analysis can be performed usingBioSimSpace.FreeEnergy.AToM.analyse()
- this uses an internal UWHAM implementation to find the overall ddg.Very roughly, a full start to finish AToM run would look like this:
This PR also includes (hopefully) full API docs, as well as a brief summary of AToM within the docs for
BioSimSpace.FreeEnergy
.devel
into this branch before issuing this pull request (e.g. by runninggit pull origin devel
): [y/n]Suggested reviewers:
@lohedges