choderalab / protons

OpenMM testbed for constant-pH methodologies.

Home Page:http://protons.readthedocs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 electrostatics not changing sterics

    Copy/pasta 🇮🇹 from #15

    • Add an optional argument to MonteCarloTitration constructor called maintainChargeNeutrality 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+' and anionName='Cl-' which specifies name of atom in prmtop.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 the MonteCarloTitration 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.
  • 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
  • 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 ?)
  • 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.