Commit 5e418ca9 by Peter Eastman

Added option to delete heterogens

parent ce378635
...@@ -9,9 +9,18 @@ function validateForm() { ...@@ -9,9 +9,18 @@ function validateForm() {
} }
} }
</script> </script>
<form method="post" action="/" onsubmit="return validateForm()">
<h1>Delete Heterogens</h1>
A heterogen is any residue other than a standard amino acid or nucleotide. Do you want to delete heterogens?
<p>
<select name="heterogens">
<option value="all" selected>Keep all heterogens</option>
<option value="water">Delete heterogens except water</option>
<option value="none">Delete all heterogens</option>
</select>
<h1>Add Missing Hyrogens</h1>
Add missing hydrogen atoms? Add missing hydrogen atoms?
<p> <p>
<form method="post" action="/" onsubmit="return validateForm()">
<input type="checkbox" id="addCheckbox" name="add" checked> Add hydrogens appropriate for pH <input type="text" id="phfield" name="ph" value="7.0" size="5"> <input type="checkbox" id="addCheckbox" name="add" checked> Add hydrogens appropriate for pH <input type="text" id="phfield" name="ph" value="7.0" size="5">
<p> <p>
<input type="submit" value="Continue"/> <input type="submit" value="Continue"/>
......
...@@ -61,8 +61,8 @@ substitutions = { ...@@ -61,8 +61,8 @@ substitutions = {
'TPL':'TRP', 'TPO':'THR', 'TPQ':'ALA', 'TRG':'LYS', 'TRO':'TRP', 'TYB':'TYR', 'TYI':'TYR', 'TYQ':'TYR', 'TYS':'TYR', 'TYY':'TYR' 'TPL':'TRP', 'TPO':'THR', 'TPQ':'ALA', 'TRG':'LYS', 'TRO':'TRP', 'TYB':'TYR', 'TYI':'TYR', 'TYQ':'TYR', 'TYS':'TYR', 'TYY':'TYR'
} }
proteinResidues = ['ALA', 'ASN', 'CYS', 'GLU', 'HIS', 'LEU', 'MET', 'PRO', 'THR', 'TYR', 'ARG', 'ASP', 'GLN', 'GLY', 'ILE', 'LYS', 'PHE', 'SER', 'TRP', 'VAL'] proteinResidues = ['ALA', 'ASN', 'CYS', 'GLU', 'HIS', 'LEU', 'MET', 'PRO', 'THR', 'TYR', 'ARG', 'ASP', 'GLN', 'GLY', 'ILE', 'LYS', 'PHE', 'SER', 'TRP', 'VAL']
rnaResidues = ['A', 'G', 'C', 'U'] rnaResidues = ['A', 'G', 'C', 'U', 'I']
dnaResidues = ['DA', 'DG', 'DC', 'DT'] dnaResidues = ['DA', 'DG', 'DC', 'DT', 'DI']
def _overlayPoints(points1, points2): def _overlayPoints(points1, points2):
"""Given two sets of points, determine the translation and rotation that matches them as closely as possible. """Given two sets of points, determine the translation and rotation that matches them as closely as possible.
...@@ -434,6 +434,21 @@ class PDBFixer(object): ...@@ -434,6 +434,21 @@ class PDBFixer(object):
self.topology = newTopology2 self.topology = newTopology2
self.positions = newPositions2 self.positions = newPositions2
def removeHeterogens(self, keepWater):
keep = set(proteinResidues).union(dnaResidues).union(rnaResidues)
keep.add('N')
keep.add('UNK')
if keepWater:
keep.add('HOH')
toDelete = []
for residue in self.topology.residues():
if residue.name not in keep:
toDelete.append(residue)
modeller = app.Modeller(self.topology, self.positions)
modeller.delete(toDelete)
self.topology = modeller.topology
self.positions = modeller.positions
def addMissingHydrogens(self, pH): def addMissingHydrogens(self, pH):
modeller = app.Modeller(self.topology, self.positions) modeller = app.Modeller(self.topology, self.positions)
modeller.addHydrogens(pH=pH) modeller.addHydrogens(pH=pH)
......
...@@ -50,6 +50,11 @@ def missingAtomsPageCallback(parameters, handler): ...@@ -50,6 +50,11 @@ def missingAtomsPageCallback(parameters, handler):
displayAddHydrogensPage() displayAddHydrogensPage()
def addHydrogensPageCallback(parameters, handler): def addHydrogensPageCallback(parameters, handler):
heterogens = parameters.getfirst('heterogens')
if heterogens == 'none':
fixer.removeHeterogens(False)
elif heterogens == 'water':
fixer.removeHeterogens(True)
if 'add' in parameters: if 'add' in parameters:
pH = float(parameters.getfirst('ph')) pH = float(parameters.getfirst('ph'))
fixer.addMissingHydrogens(pH) fixer.addMissingHydrogens(pH)
......
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