Commit 8f391650 by Peter Eastman

Added option to add hydrogens

parent 24e12c12
......@@ -407,6 +407,12 @@ class PDBFixer(object):
self.topology = newTopology2
self.positions = newPositions2
def addMissingHydrogens(self, pH):
modeller = app.Modeller(self.topology, self.positions)
modeller.addHydrogens(pH=pH)
self.topology = modeller.topology
self.positions = modeller.positions
def _createForceField(self, newTopology):
forcefield = app.ForceField(os.path.join(os.path.dirname(__file__), 'soft.xml'))
......@@ -472,4 +478,5 @@ if __name__=='__main__':
fixer.replaceNonstandardResidues()
fixer.findMissingAtoms()
fixer.addMissingAtoms()
fixer.addMissingHydrogens(7.0)
app.PDBFile.writeFile(fixer.topology, fixer.positions, open('output.pdb', 'w'))
......@@ -32,6 +32,12 @@ def convertResiduesPageCallback(parameters, handler):
def missingAtomsPageCallback(parameters, handler):
fixer.addMissingAtoms()
displayAddHydrogensPage()
def addHydrogensPageCallback(parameters, handler):
if 'add' in parameters:
pH = float(parameters.getfirst('ph'))
fixer.addMissingHydrogens(pH)
displayDownloadPage()
def downloadPageCallback(parameters, handler):
......@@ -164,7 +170,7 @@ def displayMissingAtomsPage():
allResidues = list(set(fixer.missingAtoms.iterkeys()).union(fixer.missingTerminals.iterkeys()))
allResidues.sort(key=lambda x: x.index)
if len(allResidues) == 0:
displayDownloadPage()
displayAddHydrogensPage()
return
indexInChain = {}
for chain in fixer.topology.chains():
......@@ -196,6 +202,23 @@ The following residues are missing heavy atoms, which will be added.
<html>
""" % table)
def displayAddHydrogensPage():
uiserver.setCallback(addHydrogensPageCallback)
uiserver.setContent("""
<html>
<head><title>PDB Fixer</title></head>
<body>
Add missing hydrogen atoms?
<p>
<form method="post" action="/">
<input type="checkbox" name="add" checked> Add hydrogens appropriate for pH <input type="text" name="ph" value="7.0" size="5">
<p>
<input type="submit" value="Continue"/>
</form>
</body>
<html>
""")
def displayDownloadPage():
uiserver.setCallback(downloadPageCallback)
uiserver.setContent("""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment