Commit 5e418ca9 by Peter Eastman

Added option to delete heterogens

parent ce378635
......@@ -9,9 +9,18 @@ function validateForm() {
}
}
</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?
<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">
<p>
<input type="submit" value="Continue"/>
......
......@@ -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'
}
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']
dnaResidues = ['DA', 'DG', 'DC', 'DT']
rnaResidues = ['A', 'G', 'C', 'U', 'I']
dnaResidues = ['DA', 'DG', 'DC', 'DT', 'DI']
def _overlayPoints(points1, points2):
"""Given two sets of points, determine the translation and rotation that matches them as closely as possible.
......@@ -434,6 +434,21 @@ class PDBFixer(object):
self.topology = newTopology2
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):
modeller = app.Modeller(self.topology, self.positions)
modeller.addHydrogens(pH=pH)
......
......@@ -50,6 +50,11 @@ def missingAtomsPageCallback(parameters, handler):
displayAddHydrogensPage()
def addHydrogensPageCallback(parameters, handler):
heterogens = parameters.getfirst('heterogens')
if heterogens == 'none':
fixer.removeHeterogens(False)
elif heterogens == 'water':
fixer.removeHeterogens(True)
if 'add' in parameters:
pH = float(parameters.getfirst('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