Todo list
bas-rustenburg opened this issue · comments
Brainstorming things to do before we can start using this code more reliably.
Tagging @jchodera @gregoryross, feel free to add points by editing (assuming you can) or replying.
-
Clean up the repository
- docstrings
- unused files
- directory structure
-
setup.py
-
conda package
- using the usual devtools setup
-
Add tests
- Basic integration tests
- unit tests
- Set up some simple test systems
- Investigate source of numerical instability in the tests
-
continuous integration (Travis)
-
Validate / fix NCMC implementation
-
Turn on sterics before turning on electrostaticsnot changing stericsCopy/pasta 🇮🇹 from #15
- Add an optional argument to
MonteCarloTitration
constructor calledmaintainChargeNeutrality
to select whether water molecules should be replaced with ions to maintain charge neutrality. - Monovalent cation/anion parameters would be optionally set with
cationName='Na+'
andanionName='Cl-'
which specifies name of atom inprmtop.topology
from which to take(charge, sigma, epsilon)
parameters from when waters are converted into monovalent ions to maintain charge neutrality. This would obviously only be used in explicit solvent. - Build a list of water molecules.
- A class method
nsteps_per_trial
(optionally set during theMonteCarloTitration
constructor) will control whether we are using instantaneous switching (0 steps) or NCMC (>= 1 steps). - Each MC update attempt, the original positions and velocities will be cached, and we will use the integrator described in this paper---where the Hamiltonian switching updates happen in between the middle of the timestep---to integrate dynamics. The NCMC criteria will be used to accept/reject the move, as in the recent Roux paper.
- For now, I will assign a new momentum at the beginning of each NCMC switching iteration, but we can implement more clever approaches to avoid momentum reversal (e.g. those from Roux) later once we have benchmarking data.
- If
maintainChargeNeutrality=True
and there are waters in the system, we will convert waters to/from monovalent ions to maintain charge neutrality during the switching process. We will only convert either waters or monovalent ions that have been converted from waters by the constant-pH facility---we will not modify any existing ions, since we can't easily convert those back into waters. We will keep the hydrogen masses constant, but turn off the electrostatics on the hydrogens as waters are converted into ions. Initially, we will just select waters or ions at random, but later, we may be able to select waters/ions based on electrostatics to increase acceptance probabilities.
- Add an optional argument to
-
Update calibration code with the ncmc changes.
- Update SAMS code
- Merge MBAR code into the same API as SAMS (low priority)
-
Validate that calibrations with SAMS works well enough
- Investigate convergence of ref. free energies.
- Implict vs explict solvent calibrations
- Effect of counterions in explicit calibration energies
- Variance estimation
- Compare results with MBAR (they should match)
- We need to implement some functions before we can use calibration:
- Set up a calibration tool that can run as part of the workflow (
calibrate
method)- set up easy calibration at given pH for amino acids, based on pKa/pKb
- set up ligand system (solvation?) and calibrate automatically as well using Epik populations
- Set up a calibration tool that can run as part of the workflow (
- Investigate convergence of ref. free energies.
-
System setup
- Add hydrogens (modeller)
- Make sure that the max number of protons are defined in system
-
Maintain charge neutrality by inserting/deleting counter ions (replacing water)
- Remove dependency on pre-existing ions
- add user specified ions instead
-
Coordinate efforts with constant-counterion work if possible ( @gregoryross )
-
Small molecule input files cpin/prmtop/ffxml
- Currently working on an ffxml format that takes input from epik, relies on openmoltools
- Needs work on openmoltools for implicit solvent support (GBSolvent params) (@jchodera ?)
- Currently working on an ffxml format that takes input from epik, relies on openmoltools
-
documentation
Lower priority/ extra features:
- pKa biasing
- Selection of residue pairs for simultaneous (de)protonation
- Getting rid of cpin files
- Protein constant-pH ffxml?
Thanks! This is great.
I'd can help overhaul the NCMC and counterion insertion/deletion code. I should have time to do this Tue.