Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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])
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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))
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
    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']