Version¶
v1.0.1 Water MC move for NPT¶
2 reasons why we should use water MC under NPT instead of a full GC ensemble
It’s too expansive to generate density fluctuation using GC Monte Carlo insertion/deletion.
We don’t need that many sampling to get the correct water in the active site.
v0.1.3 REST2¶
Plan¶
REST2
AtomMapping
Lambda path auto-opt
ABFE
cli
run_GC_RE
REST2¶
1. charge¶
2. vdw¶
3. 1-4¶
4. dihedral¶
5. bond, angle¶
skip
# create a new branch and switch to it
git checkout -b 0.1.3_dev
git push -u origin 0.1.3_dev
# In the end
git checkout master
git pull origin master
git merge 0.1.3_dev
git push origin master
Remove the non-vdw atoms from the interaction group reduce to udpate time by order of magnitude.
Hard code sigma epsilon into the CustomNonbondedForce for the water-water interaction only reduce the time from
17s to 16s. Split water molecules into several groups saves the time for updateParametersInContext
from 16s to 4s.
Changes¶
Change the integrator from
openmmtools.integrators.BAOABIntegratortoopenmm.LangevinMiddleIntegrator, according to the following Reference.Dihedral with dummy atoms
Dihedral with dummy atoms are will be selectively scaled. If this dihedral is an improper or double bonded dihedral, it will not be scaled, neither by REST2, nor bylambda_torsions. We don’t want isomerization of a double bond, and we don’t want to touch the ring’s planarity.XXX
v0.1.2¶
Problem to be Solved¶
Add trajectory processing tools. We need 1. center the trajectory, 2. remove ghost water, 3. cluster water.
Make output writing more efficient.
Hybrid system with CMAP.
Why does OPC water have force when all the nonbonded interactions are turned off?
Lambda path optimization.
v0.1.1 Speed up updateParametersInContext¶
Create a new branch¶
# create a new branch and switch to it
git checkout -b 0.1.1_dev
# push the branch to github
git push -u origin 0.1.1_dev
# merge to master
git checkout master
git pull origin master
git merge 0.1.1_dev
git push origin master
Problem to be Solved¶
In the 0.1.0, updateParametersInContext cost ~1 min. This means if a RE/GCMC is accepted, the particular replica will spend 1 min waiting. There are two solutions to speed this up.
Solution Part 1: no configuration exchange in RE¶
In RE, if a move is accepted, the global parameter(s) in the MPI rank changes while the coordinate and velocity stay in the MPI rank. Only rank 0 collects and writes the trajectory/rst/energy.
By applying this, RE will only change the global parameter and will neither call set_ghost_list nor call updateParametersInContext.
Solution Part 2: split water-water into new CustomNonbondedForce¶
Old |
Core |
New |
Fix |
Wat |
Switch |
|
|---|---|---|---|---|---|---|
Old |
C1 |
|||||
Core |
C1 |
C1 |
||||
New |
None |
C1 |
C1 |
|||
Fix |
C1 |
C1 |
C1 |
C4 |
||
Wat |
C1 |
C1 |
C1 |
C3 |
C3 |
|
Switch |
C1 |
C1 |
C1 |
C2 |
C2 |
C2 |
C1 uses the same energy expression as before. The env group includes Fix and Wat, and the env-env intrection is now included in this CustomNonbondedForce.
C2 does not need to split state A and B in per particle parameter. It still need is_real and is_switch, the same as C1. It avoids the many global parameters which controls the RBFE and only includes lambda_gc_vdw and lambda_gc_coulomb for controlling the switching water
C3 only needs is_real, no global parameter
C4 does not change.
If water H has no vdw, remove them from the water group also speeds up the update. In this version, for the same HSP90 system, the time for updateParametersInContext is ~ 7s.
v0.1.0 Basic GC FEP functionalities¶
1. Documentation¶
1.1 Install Sphinx and autodoc extention¶
pip install sphinx sphinx-autodoc-typehints
mamba install ghp-import # for pushing doc to github
pip install --upgrade sphinx_mdinclude myst_parser # for markdown support
1.2 Initialize Sphinx in the project¶
sphinx-quickstart docs
Edit docs/conf.py
make html
1.3 Push the documentation to gh-pages¶
ghp-import -n -p docs/_build/html
1.4 Check it online¶
2. set up pytest-mpi¶
conda install pytest-mpi
2.1 Run NPT RE test¶
mpirun -n 4 python -m pytest --with-mpi test/test_NPT_MPI.py
2.2 Run GC RE test¶
mpirun -n 4 python -m pytest --with-mpi test/test_GC_MPI.py::test_GC_RE
mpirun -n 8 --use-hwthread-cpus python -m pytest --with-mpi test/test_GC_MPI.py::test_GC_RE
# I only have 4 physical cores here.