What am I possibly hoping to achieve?
Bas Rustenburg // Chodera lab
#pHallthetime
Stardate 93387.66
For the purpose of this presentation, I've experimented with multiple ways to provide a more interactive experience. Feedback is welcome.
Follow the slides live on your own computer using this url:
#pHallthetime
http://slides.com/basrustenburg/deck/live
Neeb et al. J. Med. Chem., 2014, 57 (13), pp 5554–5565
There is no a priori way to know every relevant protonation state of a ligand or protein, and how relevant they are to the binding affinity.
Lapatinib!
#ofcourseitslapatinib
The standard approach is ignoring contributions of unknown magnitude, for imatinib and Abl there is clear indication of the relevance
Aleksandrov, A and Simonson, T J Comput Chem 31,7, pp. 1550–1560 (2010)
Imatinib bound to Abl kinase
pKa predictions using EPIK suggest that many kinase inhibitors have more than one accessible protonation state at pH 7.4
Figure by: John & Julie
#pHallthetime
And how does it solve our problems?
Allow for the exchange of protons with an external proton "bath", which maintains a constant pH.
In implicit solvent
Mongan, Case, and McCammon • Journal of Computational Chemistry
Volume 25, Issue 16, pages 2038–2048, December 2004
In implicit solvent
Mongan, Case, and McCammon • Journal of Computational Chemistry
Volume 25, Issue 16, pages 2038–2048, December 2004
https://github.com/choderalab/openmm-constph
#pHallthetime
Example of a cpin file
&CNSTPH
CHRGDAT=-0.4157,0.2719,0.0145,0.0779,-0.0398,-0.0173,-0.0173,0.0136,-0.0425,
-0.0425,0.8054,-0.8188,-0.8188,0.0,0.5973,-0.5679,0.0,0.0,0.0,-0.4157,0.2719,
0.0145,0.0779,-0.0071,0.0256,0.0256,-0.0174,0.043,0.043,0.6801,-0.5838,-0.6511,
0.4641,0.5973,-0.5679,0.0,0.0,0.0,-0.4157,0.2719,0.0145,0.0779,-0.0071,0.0256,
0.0256,-0.0174,0.043,0.043,0.6801,-0.5838,-0.6511,0.0,0.5973,-0.5679,0.4641,
0.0,0.0,-0.4157,0.2719,0.0145,0.0779,-0.0071,0.0256,0.0256,-0.0174,0.043,0.043,
0.6801,-0.6511,-0.5838,0.0,0.5973,-0.5679,0.0,0.4641,0.0,-0.4157,0.2719,0.0145,
0.0779,-0.0071,0.0256,0.0256,-0.0174,0.043,0.043,0.6801,-0.6511,-0.5838,0.0,
0.5973,-0.5679,0.0,0.0,0.4641,-0.3479,0.2747,-0.24,0.1426,-0.0094,0.0362,
0.0362,0.0187,0.0103,0.0103,-0.0479,0.0621,0.0621,-0.0143,0.1135,0.1135,
-0.3854,0.34,0.34,0.34,0.7341,-0.5894,-0.3479,0.2747,-0.24,0.1426,-0.10961,
0.034,0.034,0.06612,0.01041,0.01041,-0.03768,0.01155,0.01155,0.32604,-0.03358,
-0.03358,-1.03581,0.0,0.38604,0.38604,0.7341,-0.5894,-0.4157,0.2719,0.0341,
0.0864,-0.1783,-0.0122,-0.0122,0.7994,-0.8014,-0.8014,0.0,0.5973,-0.5679,0.0,
0.0,0.0,-0.4157,0.2719,0.0341,0.0864,-0.0316,0.0488,0.0488,0.6462,-0.5554,
-0.6376,0.4747,0.5973,-0.5679,0.0,0.0,0.0,-0.4157,0.2719,0.0341,0.0864,-0.0316,
0.0488,0.0488,0.6462,-0.5554,-0.6376,0.0,0.5973,-0.5679,0.4747,0.0,0.0,-0.4157,
0.2719,0.0341,0.0864,-0.0316,0.0488,0.0488,0.6462,-0.6376,-0.5554,0.0,0.5973,
-0.5679,0.0,0.4747,0.0,-0.4157,0.2719,0.0341,0.0864,-0.0316,0.0488,0.0488,
0.6462,-0.6376,-0.5554,0.0,0.5973,-0.5679,0.0,0.0,0.4747,-0.4157,0.2719,
-0.0014,0.0876,-0.0152,0.0295,0.0295,-0.0011,-0.1906,0.1699,-0.2341,0.1656,
0.3226,-0.5579,0.3992,-0.2341,0.1656,-0.1906,0.1699,0.5973,-0.5679,-0.4157,
0.2719,-0.0014,0.0876,-0.0858,0.019,0.019,-0.213,-0.103,0.132,-0.498,0.132,
0.777,-0.814,0.0,-0.498,0.132,-0.103,0.132,0.5973,-0.5679,
PROTCNT=0,1,1,1,1,3,2,0,1,1,1,1,1,0,
RESNAME='System: Unknown','Residue: GL4 7','Residue: LYS 13','Residue: AS4 18',
'Residue: TYR 20','Residue: TYR 23','Residue: LYS 33','Residue: GL4 35',
'Residue: AS4 48','Residue: AS4 52','Residue: TYR 53','Residue: AS4 66',
'Residue: AS4 87','Residue: LYS 96','Residue: LYS 97','Residue: AS4 101',
'Residue: LYS 116','Residue: AS4 119',
RESSTATE=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
STATEINF(0)%FIRST_ATOM=102, STATEINF(0)%FIRST_CHARGE=0,
STATEINF(0)%FIRST_STATE=0, STATEINF(0)%NUM_ATOMS=19, STATEINF(0)%NUM_STATES=5,
STATEINF(1)%FIRST_ATOM=187, STATEINF(1)%FIRST_CHARGE=95,
STATEINF(1)%FIRST_STATE=5, STATEINF(1)%NUM_ATOMS=22, STATEINF(1)%NUM_STATES=2,
STATEINF(2)%FIRST_ATOM=276, STATEINF(2)%FIRST_CHARGE=139,
STATEINF(2)%FIRST_STATE=7, STATEINF(2)%NUM_ATOMS=16, STATEINF(2)%NUM_STATES=5,
STATEINF(3)%FIRST_ATOM=306, STATEINF(3)%FIRST_CHARGE=219,
STATEINF(3)%FIRST_STATE=12, STATEINF(3)%NUM_ATOMS=21,
STATEINF(3)%NUM_STATES=2, STATEINF(4)%FIRST_ATOM=358,
STATEINF(4)%FIRST_CHARGE=219, STATEINF(4)%FIRST_STATE=12,
STATEINF(4)%NUM_ATOMS=21, STATEINF(4)%NUM_STATES=2,
STATEINF(5)%FIRST_ATOM=500, STATEINF(5)%FIRST_CHARGE=95,
STATEINF(5)%FIRST_STATE=5, STATEINF(5)%NUM_ATOMS=22, STATEINF(5)%NUM_STATES=2,
STATEINF(6)%FIRST_ATOM=542, STATEINF(6)%FIRST_CHARGE=0,
STATEINF(6)%FIRST_STATE=0, STATEINF(6)%NUM_ATOMS=19, STATEINF(6)%NUM_STATES=5,
STATEINF(7)%FIRST_ATOM=741, STATEINF(7)%FIRST_CHARGE=139,
STATEINF(7)%FIRST_STATE=7, STATEINF(7)%NUM_ATOMS=16, STATEINF(7)%NUM_STATES=5,
STATEINF(8)%FIRST_ATOM=789, STATEINF(8)%FIRST_CHARGE=139,
STATEINF(8)%FIRST_STATE=7, STATEINF(8)%NUM_ATOMS=16, STATEINF(8)%NUM_STATES=5,
STATEINF(9)%FIRST_ATOM=805, STATEINF(9)%FIRST_CHARGE=219,
STATEINF(9)%FIRST_STATE=12, STATEINF(9)%NUM_ATOMS=21,
STATEINF(9)%NUM_STATES=2, STATEINF(10)%FIRST_ATOM=1028,
STATEINF(10)%FIRST_CHARGE=139, STATEINF(10)%FIRST_STATE=7,
STATEINF(10)%NUM_ATOMS=16, STATEINF(10)%NUM_STATES=5,
STATEINF(11)%FIRST_ATOM=1326, STATEINF(11)%FIRST_CHARGE=139,
STATEINF(11)%FIRST_STATE=7, STATEINF(11)%NUM_ATOMS=16,
STATEINF(11)%NUM_STATES=5, STATEINF(12)%FIRST_ATOM=1446,
STATEINF(12)%FIRST_CHARGE=95, STATEINF(12)%FIRST_STATE=5,
STATEINF(12)%NUM_ATOMS=22, STATEINF(12)%NUM_STATES=2,
STATEINF(13)%FIRST_ATOM=1468, STATEINF(13)%FIRST_CHARGE=95,
STATEINF(13)%FIRST_STATE=5, STATEINF(13)%NUM_ATOMS=22,
STATEINF(13)%NUM_STATES=2, STATEINF(14)%FIRST_ATOM=1536,
STATEINF(14)%FIRST_CHARGE=139, STATEINF(14)%FIRST_STATE=7,
STATEINF(14)%NUM_ATOMS=16, STATEINF(14)%NUM_STATES=5,
STATEINF(15)%FIRST_ATOM=1767, STATEINF(15)%FIRST_CHARGE=95,
STATEINF(15)%FIRST_STATE=5, STATEINF(15)%NUM_ATOMS=22,
STATEINF(15)%NUM_STATES=2, STATEINF(16)%FIRST_ATOM=1810,
STATEINF(16)%FIRST_CHARGE=139, STATEINF(16)%FIRST_STATE=7,
STATEINF(16)%NUM_ATOMS=16, STATEINF(16)%NUM_STATES=5,
STATENE=0,14.4542090223,14.4542090223,14.4542090223,14.4542090223,
-0.946105574619,0,0,32.3880313021,32.3880313021,32.3880313021,32.3880313021,0,
-78.310003685,
TRESCNT=17,
/https://github.com/choderalab/openmm-constph
Amber files are read into openMM using a MonteCarloTitration driver object
# Parameters.
niterations = 500 # number of dynamics/titration cycles to run
nsteps = 500 # number of timesteps of dynamics per iteration
temperature = 300.0 * units.kelvin
timestep = 1.0 * units.femtoseconds
collision_rate = 9.1 / units.picoseconds
pH = 7.0
# Filenames.
prmtop_filename = 'amber-example/prmtop'
inpcrd_filename = 'amber-example/min.x'
cpin_filename = 'amber-example/cpin'
# Load the AMBER system.
import simtk.openmm.app as app
inpcrd = app.AmberInpcrdFile(inpcrd_filename)
prmtop = app.AmberPrmtopFile(prmtop_filename)
system = prmtop.createSystem(implicitSolvent=app.OBC2, nonbondedMethod=app.NoCutoff, constraints=app.HBonds)
# Instantiate system driver
mc_titration = MonteCarloTitration(system, temperature, pH, prmtop, cpin_filename, debug=True)
# Create integrator and context.
platform_name = 'OpenCL'
platform = openmm.Platform.getPlatformByName(platform_name)
integrator = openmm.LangevinIntegrator(temperature, collision_rate, timestep)
context = openmm.Context(system, integrator, platform)
context.setPositions(inpcrd.getPositions())
# Etc. etc.https://github.com/choderalab/openmm-constph
Current structure of the MonteCarloTitration driver contains methods such as
def addTitratableGroup(self, atom_indices):
"""
Define a new titratable group.
ARGUMENTS
atom_indices (list of int) - the atom indices defining the titration group
"""
def addTitrationState(self, titration_group_index, pKref, relative_energy, charges, proton_count):
"""
Add a titration state to a titratable group.
"""
def update(self, context):
"""
Perform a Monte Carlo update of the titration state.
"""#pHallthetime
Get rid of the CPIN file in favor of forcefield XML flavored format
<TitratableResidues>
<TitratableResidue name="ASP">
<TitrationState index=0>
<NonbondedForce coulomb14scale="0.833333" lj14scale="0.5">
<Atom type="ASP-OD1" charge="-0.45" sigma="xxxxx" epsilon="xxxxxx"/>
<Atom type="ASP-OD2" charge="-0.288" sigma="xxxxx" epsilon="xxxxxx"/>
<Atom type="ASP-HD2" charge="0.408" sigma="xxxxx" epsilon="xxxxxx"/>
<Atom type="ASP-CG" charge="0.33" sigma="xxxxx" epsilon="xxxxxx"/>
</NonbondedForce>
</TitrationState>
<TitrationState index=1>
<NonbondedForce coulomb14scale="0.833333" lj14scale="0.5">
<Atom type="ASP-OD1" charge="-0.635" sigma="xxxxx" epsilon="xxxxxx"/>
<Atom type="ASP-OD2" charge="-0.635" sigma="xxxxx" epsilon="xxxxxx"/>
<!-- Prevent divide by zero! -->
<Atom type="ASP-HD2" charge="-0.0" sigma="0.000" epsilon="0.000"/>
<Atom type="ASP-CG" charge="0.27" sigma="xxxxx" epsilon="xxxxxx"/>
</NonbondedForce>
</TitrationState>
</TitratableResidue>
</TitratableResidues>#pHallthetime
#pHallthetime
#pHallthetime
#pHallthetime
pKa predictions using EPIK suggest that many kinase inhibitors have more than one accessible protonation state at pH 7.4
Figure by: John & Julie
PDB: 1I10
Intlekofer et al. Cell Metabolism 22, 304–311, August 4, 2015
PDB: 1I10
PDB: 1I10