Commit 1c271535 authored by peastman's avatar peastman
Browse files

Merge pull request #815 from peastman/ids

Modeller preserves chain, residue, and atom ids when reasonable
parents 828706cd f025c5f4
...@@ -98,11 +98,11 @@ class Modeller(object): ...@@ -98,11 +98,11 @@ class Modeller(object):
newAtoms = {} newAtoms = {}
newPositions = []*nanometer newPositions = []*nanometer
for chain in self.topology.chains(): for chain in self.topology.chains():
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
for residue in chain.residues(): for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
for atom in residue.atoms(): for atom in residue.atoms():
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue) newAtom = newTopology.addAtom(atom.name, atom.element, newResidue, atom.id)
newAtoms[atom] = newAtom newAtoms[atom] = newAtom
newPositions.append(deepcopy(self.positions[atom.index])) newPositions.append(deepcopy(self.positions[atom.index]))
for bond in self.topology.bonds(): for bond in self.topology.bonds():
...@@ -112,11 +112,11 @@ class Modeller(object): ...@@ -112,11 +112,11 @@ class Modeller(object):
newAtoms = {} newAtoms = {}
for chain in addTopology.chains(): for chain in addTopology.chains():
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
for residue in chain.residues(): for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
for atom in residue.atoms(): for atom in residue.atoms():
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue) newAtom = newTopology.addAtom(atom.name, atom.element, newResidue, atom.id)
newAtoms[atom] = newAtom newAtoms[atom] = newAtom
newPositions.append(deepcopy(addPositions[atom.index])) newPositions.append(deepcopy(addPositions[atom.index]))
for bond in addTopology.bonds(): for bond in addTopology.bonds():
...@@ -153,12 +153,12 @@ class Modeller(object): ...@@ -153,12 +153,12 @@ class Modeller(object):
for atom in residue.atoms(): for atom in residue.atoms():
if atom not in deleteSet: if atom not in deleteSet:
if needNewChain: if needNewChain:
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
needNewChain = False; needNewChain = False;
if needNewResidue: if needNewResidue:
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
needNewResidue = False; needNewResidue = False;
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue) newAtom = newTopology.addAtom(atom.name, atom.element, newResidue, atom.id)
newAtoms[atom] = newAtom newAtoms[atom] = newAtom
newPositions.append(deepcopy(self.positions[atom.index])) newPositions.append(deepcopy(self.positions[atom.index]))
for bond in self.topology.bonds(): for bond in self.topology.bonds():
...@@ -193,9 +193,9 @@ class Modeller(object): ...@@ -193,9 +193,9 @@ class Modeller(object):
newAtoms = {} newAtoms = {}
newPositions = []*nanometer newPositions = []*nanometer
for chain in self.topology.chains(): for chain in self.topology.chains():
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
for residue in chain.residues(): for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
if residue.name == "HOH": if residue.name == "HOH":
# Copy the oxygen and hydrogens # Copy the oxygen and hydrogens
oatom = [atom for atom in residue.atoms() if atom.element == elem.oxygen] oatom = [atom for atom in residue.atoms() if atom.element == elem.oxygen]
...@@ -231,7 +231,7 @@ class Modeller(object): ...@@ -231,7 +231,7 @@ class Modeller(object):
else: else:
# Just copy the residue over. # Just copy the residue over.
for atom in residue.atoms(): for atom in residue.atoms():
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue) newAtom = newTopology.addAtom(atom.name, atom.element, newResidue, atom.id)
newAtoms[atom] = newAtom newAtoms[atom] = newAtom
newPositions.append(deepcopy(self.positions[atom.index])) newPositions.append(deepcopy(self.positions[atom.index]))
for bond in self.topology.bonds(): for bond in self.topology.bonds():
...@@ -347,11 +347,11 @@ class Modeller(object): ...@@ -347,11 +347,11 @@ class Modeller(object):
newAtoms = {} newAtoms = {}
newPositions = []*nanometer newPositions = []*nanometer
for chain in self.topology.chains(): for chain in self.topology.chains():
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
for residue in chain.residues(): for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
for atom in residue.atoms(): for atom in residue.atoms():
newAtom = newTopology.addAtom(atom.name, atom.element, newResidue) newAtom = newTopology.addAtom(atom.name, atom.element, newResidue, atom.id)
newAtoms[atom] = newAtom newAtoms[atom] = newAtom
newPositions.append(deepcopy(self.positions[atom.index])) newPositions.append(deepcopy(self.positions[atom.index]))
for bond in self.topology.bonds(): for bond in self.topology.bonds():
...@@ -629,9 +629,9 @@ class Modeller(object): ...@@ -629,9 +629,9 @@ class Modeller(object):
newIndices = [] newIndices = []
acceptors = [atom for atom in self.topology.atoms() if atom.element in (elem.oxygen, elem.nitrogen)] acceptors = [atom for atom in self.topology.atoms() if atom.element in (elem.oxygen, elem.nitrogen)]
for chain in self.topology.chains(): for chain in self.topology.chains():
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
for residue in chain.residues(): for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
isNTerminal = (residue == chain._residues[0]) isNTerminal = (residue == chain._residues[0])
isCTerminal = (residue == chain._residues[-1]) isCTerminal = (residue == chain._residues[-1])
if residue.name in Modeller._residueHydrogens: if residue.name in Modeller._residueHydrogens:
...@@ -900,9 +900,9 @@ class Modeller(object): ...@@ -900,9 +900,9 @@ class Modeller(object):
newAtoms = {} newAtoms = {}
newPositions = []*nanometer newPositions = []*nanometer
for chain in self.topology.chains(): for chain in self.topology.chains():
newChain = newTopology.addChain() newChain = newTopology.addChain(chain.id)
for residue in chain.residues(): for residue in chain.residues():
newResidue = newTopology.addResidue(residue.name, newChain) newResidue = newTopology.addResidue(residue.name, newChain, residue.id)
# Look for a matching template. # Look for a matching template.
......
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