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.
- REST2
- AtomMapping
- Lambda path auto-opt
- ABFE
- cli
run_GC_RE
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 masterRemove 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.
- 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
- 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.
# 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 masterIn 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.
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.
| 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.
pip install sphinx sphinx-autodoc-typehints
mamba install ghp-import # for pushing doc to github
pip install --upgrade sphinx_mdinclude myst_parser # for markdown supportsphinx-quickstart docs
Edit docs/conf.py
make htmlghp-import -n -p docs/_build/html
conda install pytest-mpimpirun -n 4 python -m pytest --with-mpi test/test_NPT_MPI.pympirun -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.