def testAppend(self): # should raise if appending an atom with atom._residue (already part of another residue) self.assertRaises(structure.InvalidOperation, self.residue.atoms.append, self.chain[2]['CA']) # should not raise InvalidOperation (same residue) self.assertRaises(structure.DuplicateAtomIDError, self.residue.atoms.append, self.residue['CA']) atom = structure.Atom(999999, 'Cx', structure.ChemElements.C, numpy.array([1, 1, 1])) self.residue.atoms.append(atom) self.assertTrue(atom.name in self.residue) self.assertEqual(atom.residue, self.residue) # test alternate handling atom2 = structure.Atom(999999, 'Cx', structure.ChemElements.C, numpy.array([2, 2, 2]), alternate=True) self.residue.atoms.append(atom2) self.assertTrue( isinstance(self.residue['Cx'], structure.DisorderedAtom)) self.assertEqual(self.residue['Cx'].length, 2) atom3 = structure.Atom(999999, 'Cx', structure.ChemElements.C, numpy.array([3, 3, 3])) self.residue.atoms.append(atom3) self.assertEqual(self.residue['Cx'].length, 3)
def testApplyTransformation(self): """ @see: [CSB 0000030] """ r = numpy.eye(3) t = numpy.array([1, 1, 1]) residue = self.chain.residues[1] atom1 = structure.Atom(99999, 'Cx', structure.ChemElements.C, numpy.array([2, 2, 2]), alternate=True) atom1.occupancy = 0.2 atom2 = structure.Atom(99999, 'Cx', structure.ChemElements.C, numpy.array([2, 2, 2]), alternate=True) atom2.occupancy = 0.8 residue.atoms.append(atom1) residue.atoms.append(atom2) self.chain.transform(r, t) disatom = residue.atoms['Cx'] self.assertTrue(isinstance(disatom, structure.DisorderedAtom)) self.assertEqual(disatom.vector.tolist(), [3, 3, 3]) # now the regression itself for altatom in disatom: self.assertEqual(altatom.vector.tolist(), [3, 3, 3])
def testAppendAtom(self): """ @see: [CSB 0000122] """ r = structure.ProteinResidue(1, sequence.ProteinAlphabet.ALA) a1 = structure.Atom(1, 'CA', structure.ChemElements.C, [1, 1, 1], alternate='A') a2 = structure.Atom(1, 'CA', structure.ChemElements.C, [1, 1, 1], alternate='B') r.atoms.append(a1) r.atoms.append(a2) self.assertEqual(a1.residue, r) self.assertEqual(a2.residue, r)
def testAppend(self): self.assertEqual(self.residue.atoms['CA'].serial_number, 2) alt = structure.Atom(1000, 'CA', structure.ChemElements.C, self.atom.vector.copy(), alternate='C') alt.occupancy = 1.0 self.residue.atoms.append(alt) self.assertEqual(self.residue.atoms['CA'].serial_number, 1000) self.assertTrue( isinstance(self.residue.atoms['CA'], structure.DisorderedAtom))
def make_chain(coordinates, sequence=None, chainid='A'): """Creates a Chain instance from a coordinate array assuming that these are the positions of CA atoms. """ if sequence is None: sequence = ['ALA'] * len(coordinates) residues = [] for i in range(len(sequence)): residue = structure.ProteinResidue(i+1, sequence[i], sequence_number=i+1) atom = structure.Atom(i+1, 'CA', 'C', coordinates[i]) atom.occupancy = 1.0 residue.atoms.append(atom) residues.append(residue) return structure.Chain(chainid, residues=residues)
def setUp(self): super(TestDisorderedAtom, self).setUp() self.structure = self.config.getPickle('1nz9.model1.pickle') self.chain = self.structure['A'] self.residue = self.chain[0] self.atom = self.residue['CA'] self.alt = structure.Atom(999, 'CA', structure.ChemElements.C, self.atom.vector.copy(), alternate='B') self.atom.occupancy = 0.9 self.alt.occupancy = 0.1 self.residue.atoms.append(self.alt) self.disatom = self.residue['CA']