Exemplo n.º 1
0
 def test_asa_xtra_stride(self):
     """test asa via stride"""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     try:
         result = asa.asa_xtra(self.input_structure, 'stride')
     except ApplicationNotFoundError:
         return
     self.assertAlmostEqual(self.input_structure[(0,)][('B',)]\
                            [(('LEU', 35, ' '),)].xtra['STRIDE_ASA'], 17.20)
Exemplo n.º 2
0
 def test_uc(self):
     """compares asa within unit cell."""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     asa.asa_xtra(self.input_structure, symmetry_mode='uc', xtra_key='ASA_UC')
     asa.asa_xtra(self.input_structure)
     self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
     self.input_structure.propagateData(sum, 'A', 'ASA_UC', xtra=True)
     residues = einput(self.input_structure, 'R')
     x = residues[('2E12', 0, 'B', ('GLU', 77, ' '))].xtra.values()
     self.assertTrue(x[0] != x[1])
Exemplo n.º 3
0
 def test_chains(self):
     """compares contacts diff chains"""
     self.input_file = os.path.join('data', '1A1X.pdb')  # one chain
     self.input_structure = PDBParser(open(self.input_file))
     res = contact.contacts_xtra(self.input_structure)
     self.assertTrue(res == {})
     self.input_file = os.path.join('data', '2E12.pdb')  # one chain
     self.input_structure = PDBParser(open(self.input_file))
     res = contact.contacts_xtra(self.input_structure)
     self.assertTrue(res)
     self.assertFloatEqual(\
     res[('2E12', 0, 'B', ('THR', 17, ' '), ('OG1', ' '))]['CONTACTS']\
     [('2E12', 0, 'A', ('ALA', 16, ' '), ('CB', ' '))][0], 5.7914192561064004)
Exemplo n.º 4
0
 def test_uc2(self):
     self.input_file = os.path.join('data', '1LJO.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     asa.asa_xtra(self.input_structure, symmetry_mode='uc', xtra_key='ASA_XTAL')
     asa.asa_xtra(self.input_structure)
     self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
     self.input_structure.propagateData(sum, 'A', 'ASA_XTAL', xtra=True)
     residues = einput(self.input_structure, 'R')
     r1 = residues[('1LJO', 0, 'A', ('ARG', 65, ' '))]
     r2 = residues[('1LJO', 0, 'A', ('ASN', 46, ' '))]
     self.assertFloatEqual(r1.xtra.values(),
                           [128.94081270529105, 22.807700865674093])
     self.assertFloatEqual(r2.xtra.values(),
                           [115.35738419425566, 115.35738419425566])
Exemplo n.º 5
0
 def _test_bio(self):
     """compares asa within a bio unit."""
     self.input_file = os.path.join('data', '1A1X.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     asa.asa_xtra(self.input_structure, symmetry_mode='bio', xtra_key='ASA_BIO')
     asa.asa_xtra(self.input_structure)
     self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
     self.input_structure.propagateData(sum, 'A', 'ASA_BIO', xtra=True)
     residues = einput(self.input_structure, 'R')
     r1 = residues[('1A1X', 0, 'A', ('GLU', 37, ' '))]
     r2 = residues[('1A1X', 0, 'A', ('TRP', 15, ' '))]
     self.assertFloatEqual(r1.xtra.values(), \
                             [20.583191467544726, 78.996394472066541])
     self.assertFloatEqual(r2.xtra.values(), \
                             [136.41436710386989, 136.41436710386989])
Exemplo n.º 6
0
 def test_compare(self):
     """compares internal asa to stride."""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     try:
         asa.asa_xtra(self.input_structure, mode='stride')
     except ApplicationNotFoundError:
         return
     asa.asa_xtra(self.input_structure)
     self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
     residues = einput(self.input_structure, 'R')
     asa1 = []
     asa2 = []
     for residue in residues.selectChildren('H_HOH', 'ne', 'name').values():
         asa1.append(residue.xtra['ASA'])
         asa2.append(residue.xtra['STRIDE_ASA'])
     self.assertAlmostEqual(correlation(asa1, asa2)[1], 0.)
Exemplo n.º 7
0
 def test_crystal(self):
     """compares asa within unit cell."""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     asa.asa_xtra(self.input_structure, symmetry_mode='uc', crystal_mode=2, xtra_key='ASA_XTAL')
     asa.asa_xtra(self.input_structure)
     self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
     self.input_structure.propagateData(sum, 'A', 'ASA_XTAL', xtra=True)
     residues = einput(self.input_structure, 'R')
     r1 = residues[('2E12', 0, 'A', ('ALA', 42, ' '))]
     r2 = residues[('2E12', 0, 'A', ('VAL', 8, ' '))]
     r3 = residues[('2E12', 0, 'A', ('LEU', 25, ' '))]
     self.assertFloatEqual(r1.xtra.values(), \
                             [32.041070749038823, 32.041070749038823])
     self.assertFloatEqual(r3.xtra.values(), \
                            [0., 0.])
     self.assertFloatEqual(r2.xtra.values(), \
                             [28.873559956056916, 0.0])
Exemplo n.º 8
0
 def test_asa_xtra_stride(self):
     """test asa via stride"""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     try:
         result = asa.asa_xtra(self.input_structure, 'stride')
     except ApplicationNotFoundError: 
         return
     self.assertAlmostEqual(self.input_structure[(0,)][('B',)]\
                            [(('LEU', 35, ' '),)].xtra['STRIDE_ASA'], 17.20)
Exemplo n.º 9
0
 def test_asa_xtra(self):
     """test internal asa"""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     self.assertRaises(ValueError, asa.asa_xtra, self.input_structure, mode='a')
     result = asa.asa_xtra(self.input_structure)
     a = einput(self.input_structure, 'A')
     for i in range(len(result)):
         self.assertEquals(result.values()[i]['ASA'], a[result.keys()[i]].xtra['ASA'])
     r = einput(self.input_structure, 'R')
     for water in  r.selectChildren('H_HOH', 'eq', 'name').values():
         self.assertFalse('ASA' in water.xtra)
     for residue in  r.selectChildren('H_HOH', 'ne', 'name').values():
         for a in residue:
             self.assertTrue('ASA' in a.xtra)
     result = asa.asa_xtra(self.input_structure, xtra_key='SASA')
     for residue in  r.selectChildren('H_HOH', 'ne', 'name').values():
         for a in residue:
             a.xtra['ASA'] == a.xtra['SASA']
Exemplo n.º 10
0
 def test_PDBParser(self):
     """tests the UI parsing function.
     """
     fh = open('data/2E12.pdb')
     structure = PDBParser(fh, 'JUNK')
     assert type(structure) is Structure
     assert len(structure) == 1
     assert (0,) in structure
     assert structure.header['space_group'] == 'P 21 21 21'
     assert structure.header['experiment_type'] == 'X-RAY DIFFRACTION'
     assert structure.header['r_free'] == '0.280'
     assert structure.header['dbref_acc'] == 'Q8P4R5'
     assert structure.header['cryst1'] == '49.942   51.699   82.120  90.00  90.00  90.00'
     assert structure.header['matthews'] == '2.29'
     model = structure[(0,)]
     assert len(model) == 2
     assert structure.raw_header
     assert structure.raw_trailer
     assert structure.header
     assert structure.trailer ==  {}
     assert structure.getId() == ('JUNK', )
Exemplo n.º 11
0
 def test_symmetry(self):
     """compares contacts diff symmetry mates"""
     self.input_file = os.path.join('data', '2E12.pdb')  # one chain
     self.input_structure = PDBParser(open(self.input_file))
     res = contact.contacts_xtra(self.input_structure, \
                                 symmetry_mode='uc',
                                 contact_mode='diff_sym')
     self.assertTrue(res)
     self.assertFloatEqual(\
     res[('2E12', 0, 'B', ('GLU', 77, ' '), ('OE2', ' '))]['CONTACTS']\
        [('2E12', 0, 'B', ('GLU', 57, ' '), ('OE2', ' '))][0], \
        5.2156557833123873)
Exemplo n.º 12
0
 def test_PDBParser(self):
     """tests the UI parsing function.
     """
     fh = open('data/2E12.pdb')
     structure = PDBParser(fh, 'JUNK')
     assert type(structure) is Structure
     assert len(structure) == 1
     assert (0,) in structure
     assert structure.header['space_group'] == 'P 21 21 21'
     assert structure.header['experiment_type'] == 'X-RAY DIFFRACTION'
     assert structure.header['r_free'] == '0.280'
     assert structure.header['dbref_acc'] == 'Q8P4R5'
     assert structure.header['cryst1'] == '49.942   51.699   82.120  90.00  90.00  90.00'
     assert structure.header['matthews'] == '2.29'
     model = structure[(0,)]
     assert len(model) == 2
     assert structure.raw_header
     assert structure.raw_trailer
     assert structure.header
     assert structure.trailer ==  {}
     assert structure.getId() == ('JUNK', )
Exemplo n.º 13
0
 def test_PDBParser(self):
     """tests the UI parsing function.
     """
     fh = open("data/2E12.pdb")
     structure = PDBParser(fh, "JUNK")
     assert type(structure) is Structure
     assert len(structure) == 1
     assert (0,) in structure
     assert structure.header["space_group"] == "P 21 21 21"
     assert structure.header["experiment_type"] == "X-RAY DIFFRACTION"
     assert structure.header["r_free"] == "0.280"
     assert structure.header["dbref_acc"] == "Q8P4R5"
     assert structure.header["cryst1"] == "49.942   51.699   82.120  90.00  90.00  90.00"
     assert structure.header["matthews"] == "2.29"
     model = structure[(0,)]
     assert len(model) == 2
     assert structure.raw_header
     assert structure.raw_trailer
     assert structure.header
     assert structure.trailer == {}
     assert structure.getId() == ("JUNK",)
Exemplo n.º 14
0
 def test_1expand_crystal(self):
     """tests the expansion of a unit-cell to a crystal"""
     fh = open(fn, 'r')
     input_structure = PDBParser(fh)
     self.assertTrue(input_structure.values(), 4) # 4 models
     sh = expand_crystal(input_structure)
     self.assertTrue(len(sh) == 27)
     fd, fn2 = tempfile.mkstemp('.pdb')
     os.close(fd)
     fh = open(fn2, 'w')
     a1 = einput(input_structure, 'A')
     a2 = einput(sh.values()[3], 'A')
     k = a1.values()[99].getFull_id()
     name = sh.values()[3].name
     a1c = a1[k].coords
     a2c = a2[(name,) + k[1:]].coords
     self.assertTrue(len(a1), len(a2))
     self.assertRaises(AssertionError, self.assertFloatEqual, a1c, a2c)
     PDBWriter(fh, sh)
     fh.close()
     os.unlink(fn)
     os.unlink(fn2)
Exemplo n.º 15
0
 def test_compare(self):
     """compares internal asa to stride."""
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
     try:
         asa.asa_xtra(self.input_structure, mode='stride')
     except ApplicationNotFoundError: 
         return            
     asa.asa_xtra(self.input_structure)
     self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
     residues = einput(self.input_structure, 'R')
     asa1 = []
     asa2 = []
     for residue in  residues.selectChildren('H_HOH', 'ne', 'name').values():
         asa1.append(residue.xtra['ASA'])
         asa2.append(residue.xtra['STRIDE_ASA'])
     self.assertAlmostEqual(correlation(asa1, asa2)[1], 0.)
Exemplo n.º 16
0
class asaTest(TestCase):
    """Tests for surface calculations."""

    def setUp(self):
        self.arr = np.random.random(3000).reshape((1000, 3))
        self.point = np.random.random(3)
        self.center = np.array([0.5, 0.5, 0.5])

    def test_0import(self):
        # sort by name
        """tests if can import _asa cython extension."""
        global _asa
        from cogent.struct import _asa
        assert 'asa_loop' in dir(_asa)

    def test_1import(self):
        # sort by name
        """tests if can import asa."""
        global asa
        from cogent.struct import asa

    def test_asa_loop(self):
        """tests if inner asa_loop (cython) performs correctly"""
        self.lcoords = np.array([[-4., 0, 0], [0, 0, 0], [4, 0, 0], [10, 0, 0]])
        self.qcoords = np.array([[0., 0, 0], [4., 0, 0]])
        self.lradii = np.array([2., 3.])
        self.qradii = np.array([3., 2.])
        #spoints, np.ndarray[DTYPE_t, ndim =1] box,\
        # DTYPE_t probe, unsigned int bucket_size, MAXSYM =200000)
        self.spoints = np.array([[1., 0., 0.], [-1., 0., 0.], [0., 1., 0.], \
                                 [0., -1., 0.], [0., 0., 1.], [0., 0., -1.]])
        output = _asa.asa_loop(self.qcoords, self.lcoords, self.qradii, \
                               self.lradii, self.spoints, \
                    np.array([-100., -100., -100., 100., 100., 100.]), 1., 10)
        self.assertFloatEqual(output, np.array([ 75.39822369, 41.88790205]))

    def test_asa_xtra(self):
        """test internal asa"""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        self.assertRaises(ValueError, asa.asa_xtra, self.input_structure, mode='a')
        result = asa.asa_xtra(self.input_structure)
        a = einput(self.input_structure, 'A')
        for i in range(len(result)):
            self.assertEquals(result.values()[i]['ASA'], a[result.keys()[i]].xtra['ASA'])
        r = einput(self.input_structure, 'R')
        for water in  r.selectChildren('H_HOH', 'eq', 'name').values():
            self.assertFalse('ASA' in water.xtra)
        for residue in  r.selectChildren('H_HOH', 'ne', 'name').values():
            for a in residue:
                self.assertTrue('ASA' in a.xtra)
        result = asa.asa_xtra(self.input_structure, xtra_key='SASA')
        for residue in  r.selectChildren('H_HOH', 'ne', 'name').values():
            for a in residue:
                a.xtra['ASA'] == a.xtra['SASA']

    def test_asa_xtra_stride(self):
        """test asa via stride"""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        try:
            result = asa.asa_xtra(self.input_structure, 'stride')
        except ApplicationNotFoundError: 
            return
        self.assertAlmostEqual(self.input_structure[(0,)][('B',)]\
                               [(('LEU', 35, ' '),)].xtra['STRIDE_ASA'], 17.20)

    def test_compare(self):
        """compares internal asa to stride."""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        try:
            asa.asa_xtra(self.input_structure, mode='stride')
        except ApplicationNotFoundError: 
            return            
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        residues = einput(self.input_structure, 'R')
        asa1 = []
        asa2 = []
        for residue in  residues.selectChildren('H_HOH', 'ne', 'name').values():
            asa1.append(residue.xtra['ASA'])
            asa2.append(residue.xtra['STRIDE_ASA'])
        self.assertAlmostEqual(correlation(asa1, asa2)[1], 0.)

    def test_uc(self):
        """compares asa within unit cell."""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure, symmetry_mode='uc', xtra_key='ASA_UC')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_UC', xtra=True)
        residues = einput(self.input_structure, 'R')
        x = residues[('2E12', 0, 'B', ('GLU', 77, ' '))].xtra.values()
        self.assertTrue(x[0] != x[1])

    def test_uc2(self):
        self.input_file = os.path.join('data', '1LJO.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure, symmetry_mode='uc', xtra_key='ASA_XTAL')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_XTAL', xtra=True)
        residues = einput(self.input_structure, 'R')
        r1 = residues[('1LJO', 0, 'A', ('ARG', 65, ' '))]
        r2 = residues[('1LJO', 0, 'A', ('ASN', 46, ' '))]
        self.assertFloatEqual(r1.xtra.values(),
                              [128.94081270529105, 22.807700865674093])
        self.assertFloatEqual(r2.xtra.values(),
                              [115.35738419425566, 115.35738419425566])

    def test_crystal(self):
        """compares asa within unit cell."""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure, symmetry_mode='uc', crystal_mode=2, xtra_key='ASA_XTAL')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_XTAL', xtra=True)
        residues = einput(self.input_structure, 'R')
        r1 = residues[('2E12', 0, 'A', ('ALA', 42, ' '))]
        r2 = residues[('2E12', 0, 'A', ('VAL', 8, ' '))]
        r3 = residues[('2E12', 0, 'A', ('LEU', 25, ' '))]
        self.assertFloatEqual(r1.xtra.values(), \
                                [32.041070749038823, 32.041070749038823])
        self.assertFloatEqual(r3.xtra.values(), \
                               [0., 0.])
        self.assertFloatEqual(r2.xtra.values(), \
                                [28.873559956056916, 0.0])

    def test__prepare_entities(self):
        self.input_structure = PDBParser(dummy_water)
        self.assertRaises(ValueError, asa._prepare_entities, self.input_structure)

    def _test_bio(self):
        """compares asa within a bio unit."""
        self.input_file = os.path.join('data', '1A1X.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure, symmetry_mode='bio', xtra_key='ASA_BIO')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_BIO', xtra=True)
        residues = einput(self.input_structure, 'R')
        r1 = residues[('1A1X', 0, 'A', ('GLU', 37, ' '))]
        r2 = residues[('1A1X', 0, 'A', ('TRP', 15, ' '))]
        self.assertFloatEqual(r1.xtra.values(), \
                                [20.583191467544726, 78.996394472066541])
        self.assertFloatEqual(r2.xtra.values(), \
                                [136.41436710386989, 136.41436710386989])
Exemplo n.º 17
0
 def test__prepare_entities(self):
     self.input_structure = PDBParser(dummy_water)
     self.assertRaises(ValueError, asa._prepare_entities, self.input_structure)
Exemplo n.º 18
0
 def setUp(self):
     input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(input_file))
     stride_app = Stride()
     res = stride_app(self.input_structure)
     self.lines = res['StdOut'].readlines()
Exemplo n.º 19
0
class ManipulationTest(TestCase):
    """tests manipulationg entities"""

    def setUp(self):
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))

    def test_clean_ical(self):
        """tests the clean ical function which cleans structures."""
        chainB = self.input_structure.table['C'][('2E12', 0, 'B')]
        leu25 = self.input_structure.table['R'][('2E12', 0, 'B', \
                                                ('LEU', 25, ' '))]
        leu25icA = copy(leu25)
        self.assertTrue(leu25icA.parent is None)
        self.assertTrue(leu25icA is not leu25)
        self.assertTrue(leu25icA[(('N', ' '),)] is not leu25[(('N', ' '),)])
        leu25icA.setIc('A')
        self.assertEquals(leu25icA.getId(), (('LEU', 25, 'A'),))
        chainB.addChild(leu25icA)
        self.assertFalse(chainB[(('LEU', 25, 'A'),)] is \
                         chainB[(('LEU', 25, ' '),)])
        self.assertEquals(clean_ical(self.input_structure), \
                          ([], [('2E12', 0, 'B', ('LEU', 25, 'A'))]))
        clean_ical(self.input_structure, pretend=False)

        self.assertTrue(chainB[(('LEU', 25, 'A'),)] is leu25icA)
        self.assertFalse((('LEU', 25, 'A'),) in chainB.keys())
        self.assertFalse((('LEU', 25, 'A'),) in chainB)
        self.assertTrue((('LEU', 25, 'A'),) in chainB.keys(unmask=True))

        self.input_structure.setUnmasked(force=True)
        self.assertEquals(clean_ical(self.input_structure), \
                          ([], [('2E12', 0, 'B', ('LEU', 25, 'A'))]))
        clean_ical(self.input_structure, pretend=False, mask=False)
        self.assertFalse((('LEU', 25, 'A'),) in chainB.keys())
        self.assertFalse((('LEU', 25, 'A'),) in chainB)
        self.assertFalse((('LEU', 25, 'A'),) in chainB.keys(unmask=True))

    def test_0expand_symmetry(self):
        """tests the expansion of a asu to a unit-cell."""
        global fn
        mh = expand_symmetry(self.input_structure[(0,)])
        fd, fn = tempfile.mkstemp('.pdb')
        os.close(fd)
        fh = open(fn, 'w')
        PDBWriter(fh, mh, self.input_structure.raw_header)
        fh.close()

    def test_1expand_crystal(self):
        """tests the expansion of a unit-cell to a crystal"""
        fh = open(fn, 'r')
        input_structure = PDBParser(fh)
        self.assertTrue(input_structure.values(), 4) # 4 models
        sh = expand_crystal(input_structure)
        self.assertTrue(len(sh) == 27)
        fd, fn2 = tempfile.mkstemp('.pdb')
        os.close(fd)
        fh = open(fn2, 'w')
        a1 = einput(input_structure, 'A')
        a2 = einput(sh.values()[3], 'A')
        k = a1.values()[99].getFull_id()
        name = sh.values()[3].name
        a1c = a1[k].coords
        a2c = a2[(name,) + k[1:]].coords
        self.assertTrue(len(a1), len(a2))
        self.assertRaises(AssertionError, self.assertFloatEqual, a1c, a2c)
        PDBWriter(fh, sh)
        fh.close()
        os.unlink(fn)
        os.unlink(fn2)
Exemplo n.º 20
0
 def test__prepare_entities(self):
     self.input_structure = PDBParser(dummy_water)
     self.assertRaises(ValueError, asa._prepare_entities,
                       self.input_structure)
Exemplo n.º 21
0
 def setUp(self):
     self.input_file = os.path.join('data', '2E12.pdb')
     self.input_structure = PDBParser(open(self.input_file))
Exemplo n.º 22
0
class asaTest(TestCase):
    """Tests for surface calculations."""
    def setUp(self):
        self.arr = np.random.random(3000).reshape((1000, 3))
        self.point = np.random.random(3)
        self.center = np.array([0.5, 0.5, 0.5])

    def test_0import(self):
        # sort by name
        """tests if can import _asa cython extension."""
        global _asa
        from cogent.struct import _asa
        assert 'asa_loop' in dir(_asa)

    def test_1import(self):
        # sort by name
        """tests if can import asa."""
        global asa
        from cogent.struct import asa

    def test_asa_loop(self):
        """tests if inner asa_loop (cython) performs correctly"""
        self.lcoords = np.array([[-4., 0, 0], [0, 0, 0], [4, 0, 0], [10, 0,
                                                                     0]])
        self.qcoords = np.array([[0., 0, 0], [4., 0, 0]])
        self.lradii = np.array([2., 3.])
        self.qradii = np.array([3., 2.])
        #spoints, np.ndarray[DTYPE_t, ndim =1] box,\
        # DTYPE_t probe, unsigned int bucket_size, MAXSYM =200000)
        self.spoints = np.array([[1., 0., 0.], [-1., 0., 0.], [0., 1., 0.], \
                                 [0., -1., 0.], [0., 0., 1.], [0., 0., -1.]])
        output = _asa.asa_loop(self.qcoords, self.lcoords, self.qradii, \
                               self.lradii, self.spoints, \
                    np.array([-100., -100., -100., 100., 100., 100.]), 1., 10)
        self.assertFloatEqual(output, np.array([75.39822369, 41.88790205]))

    def test_asa_xtra(self):
        """test internal asa"""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        self.assertRaises(ValueError,
                          asa.asa_xtra,
                          self.input_structure,
                          mode='a')
        result = asa.asa_xtra(self.input_structure)
        a = einput(self.input_structure, 'A')
        for i in range(len(result)):
            self.assertEquals(result.values()[i]['ASA'],
                              a[result.keys()[i]].xtra['ASA'])
        r = einput(self.input_structure, 'R')
        for water in r.selectChildren('H_HOH', 'eq', 'name').values():
            self.assertFalse('ASA' in water.xtra)
        for residue in r.selectChildren('H_HOH', 'ne', 'name').values():
            for a in residue:
                self.assertTrue('ASA' in a.xtra)
        result = asa.asa_xtra(self.input_structure, xtra_key='SASA')
        for residue in r.selectChildren('H_HOH', 'ne', 'name').values():
            for a in residue:
                a.xtra['ASA'] == a.xtra['SASA']

    def test_asa_xtra_stride(self):
        """test asa via stride"""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        try:
            result = asa.asa_xtra(self.input_structure, 'stride')
        except ApplicationNotFoundError:
            return
        self.assertAlmostEqual(self.input_structure[(0,)][('B',)]\
                               [(('LEU', 35, ' '),)].xtra['STRIDE_ASA'], 17.20)

    def test_compare(self):
        """compares internal asa to stride."""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        try:
            asa.asa_xtra(self.input_structure, mode='stride')
        except ApplicationNotFoundError:
            return
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        residues = einput(self.input_structure, 'R')
        asa1 = []
        asa2 = []
        for residue in residues.selectChildren('H_HOH', 'ne', 'name').values():
            asa1.append(residue.xtra['ASA'])
            asa2.append(residue.xtra['STRIDE_ASA'])
        self.assertAlmostEqual(correlation(asa1, asa2)[1], 0.)

    def test_uc(self):
        """compares asa within unit cell."""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure,
                     symmetry_mode='uc',
                     xtra_key='ASA_UC')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_UC', xtra=True)
        residues = einput(self.input_structure, 'R')
        x = residues[('2E12', 0, 'B', ('GLU', 77, ' '))].xtra.values()
        self.assertTrue(x[0] != x[1])

    def test_uc2(self):
        self.input_file = os.path.join('data', '1LJO.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure,
                     symmetry_mode='uc',
                     xtra_key='ASA_XTAL')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_XTAL', xtra=True)
        residues = einput(self.input_structure, 'R')
        r1 = residues[('1LJO', 0, 'A', ('ARG', 65, ' '))]
        r2 = residues[('1LJO', 0, 'A', ('ASN', 46, ' '))]
        self.assertFloatEqual(r1.xtra.values(),
                              [128.94081270529105, 22.807700865674093])
        self.assertFloatEqual(r2.xtra.values(),
                              [115.35738419425566, 115.35738419425566])

    def test_crystal(self):
        """compares asa within unit cell."""
        self.input_file = os.path.join('data', '2E12.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure,
                     symmetry_mode='uc',
                     crystal_mode=2,
                     xtra_key='ASA_XTAL')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_XTAL', xtra=True)
        residues = einput(self.input_structure, 'R')
        r1 = residues[('2E12', 0, 'A', ('ALA', 42, ' '))]
        r2 = residues[('2E12', 0, 'A', ('VAL', 8, ' '))]
        r3 = residues[('2E12', 0, 'A', ('LEU', 25, ' '))]
        self.assertFloatEqual(r1.xtra.values(), \
                                [32.041070749038823, 32.041070749038823])
        self.assertFloatEqual(r3.xtra.values(), \
                               [0., 0.])
        self.assertFloatEqual(r2.xtra.values(), \
                                [28.873559956056916, 0.0])

    def test__prepare_entities(self):
        self.input_structure = PDBParser(dummy_water)
        self.assertRaises(ValueError, asa._prepare_entities,
                          self.input_structure)

    def _test_bio(self):
        """compares asa within a bio unit."""
        self.input_file = os.path.join('data', '1A1X.pdb')
        self.input_structure = PDBParser(open(self.input_file))
        asa.asa_xtra(self.input_structure,
                     symmetry_mode='bio',
                     xtra_key='ASA_BIO')
        asa.asa_xtra(self.input_structure)
        self.input_structure.propagateData(sum, 'A', 'ASA', xtra=True)
        self.input_structure.propagateData(sum, 'A', 'ASA_BIO', xtra=True)
        residues = einput(self.input_structure, 'R')
        r1 = residues[('1A1X', 0, 'A', ('GLU', 37, ' '))]
        r2 = residues[('1A1X', 0, 'A', ('TRP', 15, ' '))]
        self.assertFloatEqual(r1.xtra.values(), \
                                [20.583191467544726, 78.996394472066541])
        self.assertFloatEqual(r2.xtra.values(), \
                                [136.41436710386989, 136.41436710386989])
Exemplo n.º 23
0
#!/usr/bin/env python
# taken from http://pycogent.sourceforge.net/
from cogent.parse.pdb import PDBParser
from cogent.format.pdb import PDBWriter
import tempfile, os

pdb_file = open('data/4TSV.pdb')
new_structure = PDBParser(pdb_file)
open_handle, file_name = tempfile.mkstemp()
os.close(open_handle)
new_pdb_file = open(file_name, 'wb')
PDBWriter(new_pdb_file, new_structure)
print structure.id
print structure.getId()
print structure.getFull_id()
print structure.header.keys()
print structure.header['id']
print structure.header['expdta']
structure.items()
structure.values()
structure.keys()
first_model = structure.values()[0]
first_model_id = first_model.getId()
structure.getChildren()
children_list = structure.getChildren([first_model_id])
some_model = structure.values()[0]
some_chain = some_model.values()[0]
for residue in some_chain.values():
    residue.setName('UNK')
print sorted(structure.table.keys())
print structure.table['C']