Share 
Follow 
AboutDownloadsDocumentsForumsWikiIssuesNews
Date:
2012-11-16 15:53
Priority:
3
State:
Open
Submitted by:
Mark Williamson (mjw)
Assigned to:
Nobody (None)
Summary:
modeller.py does not handle missing heavy atoms in known residues (manifest when adding hydrogens)

Detailed description
Dear Support,

Generally, while parsing a PDB, using AMBER's LEAP tool, LEAP will automatically add any missing heavy atoms to residues that it "knows" about. This is is not the case with simtk.openmm.app.modeller.
For example, the following code:

pdb = PDBFile('2SRC.pdb')
forceField = ForceField('amber99sb.xml', 'tip3p.xml')
modeller = Modeller(pdb.topology, pdb.positions)
modeller.addHydrogens(forceField)

fails with the slightly left-field message:

Traceback (most recent call last):
File "TypicalProtocol.py", line 35, in <module>
modeller.addHydrogens(forceField)
File "/usr/local/lib/python2.6/dist-packages/simtk/openmm/app/modeller.py", line 669, in addHydrogens
system = forcefield.createSystem(newTopology, rigidWater=False)
File "/usr/local/lib/python2.6/dist-packages/simtk/openmm/app/forcefield.py", line 309, in createSystem
raise ValueError('No template found for residue %d (%s)' % (res.index+1, res.name))
ValueError: No template found for residue 340 (LYS)

The problem here is that LYS A 423 is missing the following atoms; CG,CD,CE,NZ. Generally, LEAP can reconstruct a residue just from just the backbone atoms.
It should not be too hard to use the corresponding Residue node in the associated force field xml, to add any missing atoms in, but given that there is no coordinate information, it may required some form of heuristic.

Regards,

Mark

Add A Comment: Notepad

Message  ↓
Date: 2013-12-13 20:36
Sender: Peter Eastman

We now have a separate application called PDBFixer that can do this: https://github.com/peastman/pdbfixer

Date: 2012-11-16 18:07
Sender: Peter Eastman

You're correct: OpenMM simply loads whatever is in the PDB file without trying to add anything. It can add missing hydrogens (with the Modeller class), but not missing heavy atoms. Some other programs can add missing sidechains, and some can go even further and build missing loops.

This isn't a bug, since it works exactly as intended. OpenMM simply doesn't have the feature you're asking about. I'm therefore recategorizing this as a feature request.

In the mean time, I suggest using another program to add the missing atoms to your PDB file before loading it into OpenMM.

No Changes Have Been Made to This Item

Feedback