Пример #1
0
 def test_PresentChains(self):
     """BasePairs PresentChains: should work on single/multiple chain(s)"""
     bps = BasePairs([self.a1, self.a2, self.a3, self.a4])
     self.assertEqual(bps.PresentChains, ['A'])
     bps = BasePairs([self.a1, self.ab1])
     self.assertEqualItems(bps.PresentChains, ['A', 'B'])
     bps = BasePairs([self.a1, self.ab1, self.ac1, self.bc1])
     self.assertEqualItems(bps.PresentChains, ['A', 'B', 'C'])
     bps = BasePairs([self.a1, self.ab1, self.bn1])
     self.assertEqualItems(bps.PresentChains, [None, 'A', 'B'])
Пример #2
0
    def test_hasConflicts(self):
        """BasePairs hadConflicts: handle chains and residue IDs"""
        # no conflict
        b1 = BasePair(Base("A", "30", "G"), Base("A", "36", "C"), Saenger="XX")
        b2 = BasePair(Base("A", "31", "A"), Base("A", "35", "U"), Orientation="cis", Edges="W/W")
        b3 = BasePair(Base("A", "15", "G"), Base("A", "42", "C"))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), False)
        self.assertEqual(bps.hasConflicts(return_conflict=True), (False, None))

        # conflict within chain
        b1 = BasePair(Base("A", "30", "G"), Base("A", "36", "C"), Saenger="XX")
        b2 = BasePair(Base("A", "31", "A"), Base("A", "35", "U"), Orientation="cis", Edges="W/W")
        b3 = BasePair(Base("A", "30", "G"), Base("A", "42", "C"))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), True)

        # conflict within chain -- return conflict
        b1 = BasePair(Base("A", "30", "G"), Base("A", "36", "C"), Saenger="XX")
        b2 = BasePair(Base("A", "31", "A"), Base("A", "35", "U"), Orientation="cis", Edges="W/W")
        b3 = BasePair(Base("A", "30", "G"), Base("A", "42", "C"))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(return_conflict=True), (True, "A 30 G"))

        # no conflict, same residue ID, different chain
        b1 = BasePair(Base("A", "30", "G"), Base("A", "36", "C"), Saenger="XX")
        b2 = BasePair(Base("A", "31", "A"), Base("A", "35", "U"), Orientation="cis", Edges="W/W")
        b3 = BasePair(Base("C", "30", "G"), Base("A", "42", "C"))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), False)
Пример #3
0
    def test_hasConflicts(self):
        """BasePairs hadConflicts: handle chains and residue IDs"""
        # no conflict
        b1 = BasePair(Base('A','30','G'), Base('A','36','C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('A','15','G'), Base('A','42','C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), False)
        self.assertEqual(bps.hasConflicts(return_conflict=True), (False, None))

        # conflict within chain
        b1 = BasePair(Base('A','30','G'), Base('A','36','C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('A','30','G'), Base('A','42','C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), True)

        # conflict within chain -- return conflict
        b1 = BasePair(Base('A','30','G'), Base('A','36','C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('A','30','G'), Base('A','42','C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(return_conflict=True),\
            (True, "A 30 G"))

        # no conflict, same residue ID, different chain
        b1 = BasePair(Base('A','30','G'), Base('A','36','C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('C','30','G'), Base('A','42','C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), False)
Пример #4
0
    def test_init(self):
        """BasePairs __init__: should work with or without Model"""
        # init from list
        bps = BasePairs([self.a1, self.a2])
        self.assertTrue(bps[0] is self.a1)
        self.assertTrue(bps[1] is self.a2)

        # init from tuple
        bps = BasePairs((self.a1, self.a2))
        self.assertTrue(bps[0] is self.a1)
        self.assertTrue(bps[1] is self.a2)
Пример #5
0
    def test_parse_base_pairs_basic(self):
        """parse_base_pairs: basic input"""
        basic_lines =\
            ['25_437, 0:    34 C-G   448 0: +/+ cis         XIX',\
            '26_436, 0:    35 U-A   447 0: -/- cis         XX']
        bp1 = BasePair(Up=Base('0','34','C','25'),\
            Down=Base('0','448','G','437'),\
            Edges='+/+', Orientation='cis',Conformation=None,Saenger='XIX')
        bp2 = BasePair(Up=Base('0','35','U','26'),\
            Down=Base('0','447','A','436'),\
            Edges='-/-', Orientation='cis',Conformation=None,Saenger='XX')
        bps = BasePairs([bp1, bp2])
        obs = parse_base_pairs(basic_lines)
        for o, e in zip(obs, [bp1, bp2]):
            self.assertEqual(o, e)
        self.assertEqual(len(obs), 2)

        basic_lines =\
            ['25_437, 0:    34 c-P   448 0: +/+ cis         XIX',\
            '26_436, 0:    35 U-X   447 0: -/- cis         XX']
        self.assertRaises(RnaViewParseError, parse_base_pairs, basic_lines)

        basic_lines =\
            ['25_437, 0:    34 c-P   448 0: +/+ cis         XIX',\
            '26_436, 0:    35 I-A   447 0: -/- cis         XX']
        bp1 = BasePair(Up=Base('0','34','c','25'),\
            Down=Base('0','448','P','437'),\
            Edges='+/+', Orientation='cis',Conformation=None,Saenger='XIX')
        bp2 = BasePair(Up=Base('0','35','I','26'),\
            Down=Base('0','447','A','436'),\
            Edges='-/-', Orientation='cis',Conformation=None,Saenger='XX')
        bps = BasePairs([bp1, bp2])
        obs = parse_base_pairs(basic_lines)
        for o, e in zip(obs, [bp1, bp2]):
            self.assertEqual(o, e)
        self.assertEqual(len(obs), 2)


        lines = ['1_2,  :     6 G-G     7  :      stacked',\
            '1_16,  :     6 G-C    35  : +/+ cis         XIX']
        bp1 = BasePair(Up=Base(' ','6','G','1'),\
            Down=Base(' ','7','G','2'), Edges='stacked')
        bp2 = BasePair(Up=Base(' ','6','G','1'),\
            Down=Base(' ','35','C','16'),\
            Edges='+/+', Orientation='cis',Conformation=None,Saenger='XIX')
        obs = parse_base_pairs(lines)
        for o, e in zip(obs, [bp1, bp2]):
            self.assertEqual(o, e)
        self.assertEqual(len(obs), 2)
Пример #6
0
    def test_select(self):
        """BasePairs select: should work with any good function"""
        def xx(bp):
            if bp.Saenger == 'XX':
                return True
            return False

        bps = BasePairs([self.a1, self.a2, self.a3, self.a4])

        obs = bps.select(xx)
        self.assertEqual(len(obs), 2)
        self.assertTrue(obs[0] is self.a1)
        self.assertTrue(obs[1] is self.a2)
        for i in obs:
            self.assertEqual(i.Saenger, 'XX')
Пример #7
0
    def test_select(self):
        """BasePairs select: should work with any good function"""

        def xx(bp):
            if bp.Saenger == "XX":
                return True
            return False

        bps = BasePairs([self.a1, self.a2, self.a3, self.a4])

        obs = bps.select(xx)
        self.assertEqual(len(obs), 2)
        self.failUnless(obs[0] is self.a1)
        self.failUnless(obs[1] is self.a2)
        for i in obs:
            self.assertEqual(i.Saenger, "XX")
Пример #8
0
    def setUp(self):
        """setUp method for all BasePairs tests"""
        self.a1 = BasePair(Base('A', '30', 'G'),
                           Base('A', '36', 'C'),
                           Saenger='XX')
        self.a2 = BasePair(Base('A', '31', 'A'),
                           Base('A', '35', 'U'),
                           Saenger='XX')
        self.a3 = BasePair(Base('A', '40', 'G'),
                           Base('A', '60', 'U'),
                           Saenger='V')
        self.a4 = BasePair(Base('A','41','A'), Base('A','58','U'),\
            Saenger=None)
        self.ab1 = BasePair(Base('A', '41', 'A'), Base('B', '58', 'U'))
        self.ac1 = BasePair(Base('A', '10', 'C'), Base('C', '3', 'G'))
        self.bc1 = BasePair(Base('B', '41', 'A'), Base('C', '1', 'U'))
        self.bn1 = BasePair(Base('B', '41', 'A'), Base(None, '1', 'U'))
        self.cd1 = BasePair(Base('C', '41', 'A'), Base('D', '1', 'U'))

        self.bp1 = BasePair(Base('A', '34', 'U'), Base('A', '40', 'A'))
        self.bp2 = BasePair(Base('A', '35', 'C'), Base('A', '39', 'G'))
        self.bp3 = BasePair(Base('B', '32', 'G'), Base('B', '38', 'U'))
        self.bp4 = BasePair(Base('B', '33', 'G'), Base('B', '37', 'C'))
        self.bp5 = BasePair(Base('A', '31', 'C'), Base('B', '41', 'G'))
        self.bp6 = BasePair(Base('A', '32', 'U'), Base('B', '40', 'A'))
        self.bp7 = BasePair(Base('A', '37', 'U'), Base('B', '35', 'A'))

        self.pairs = BasePairs([self.bp1, self.bp2, self.bp3, self.bp4,\
            self.bp5, self.bp6, self.bp7])
Пример #9
0
 def test_str(self):
     """BasePairs __str__: should produce expected string"""
     b1 = BasePair(Base('A', '30', 'G'), Base('A', '36', 'C'), Saenger='XX')
     b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
         Orientation='cis',Edges='W/W')
     bps = BasePairs([b1, b2])
     exp_lines = [
     "===================================================================",\
     "Bases: Up -- Down; Annotation: Edges -- Orient. -- Conf. -- Saenger",\
     "===================================================================",\
     "Bases: A 30 G -- A 36 C; Annotation: None -- None -- None -- XX;",\
     "Bases: A 31 A -- A 35 U; Annotation: W/W -- cis -- None -- None;"]
     self.assertEqual(str(bps), '\n'.join(exp_lines))
Пример #10
0
    def test_cliques(self):
        """BasePairs cliques: single/multiple chains and cliques"""
        #one chain, one clique
        bps = BasePairs([self.a1, self.a2, self.a3, self.a4])
        obs_cl = list(bps.cliques())
        self.assertEqual(len(obs_cl), 1)
        
        #3 chains, 2 cliques
        bps = BasePairs([self.a1, self.a2, self.cd1])
        obs_cl = list(bps.cliques())
        self.assertEqual(len(obs_cl), 2)
        self.assertEqual(len(obs_cl[0]), 2)
        self.assertEqual(len(obs_cl[1]), 1)
        self.failUnless(obs_cl[1][0] is self.cd1)
        self.assertEqual(obs_cl[1].PresentChains, ['C','D'])

        #5 chains, 1 clique
        bps = BasePairs([self.a1, self.ab1, self.bc1, self.bn1, self.cd1])
        obs_cl = list(bps.cliques())
        self.assertEqual(len(obs_cl), 1)
        self.assertEqual(len(obs_cl[0]), 5)
        self.failUnless(obs_cl[0][0] is self.a1)
        self.assertEqualItems(obs_cl[0].PresentChains, ['A','B','C','D', None])
Пример #11
0
    def test_cliques(self):
        """BasePairs cliques: single/multiple chains and cliques"""
        # one chain, one clique
        bps = BasePairs([self.a1, self.a2, self.a3, self.a4])
        obs_cl = list(bps.cliques())
        self.assertEqual(len(obs_cl), 1)

        # 3 chains, 2 cliques
        bps = BasePairs([self.a1, self.a2, self.cd1])
        obs_cl = list(bps.cliques())
        self.assertEqual(len(obs_cl), 2)
        self.assertEqual(len(obs_cl[0]), 2)
        self.assertEqual(len(obs_cl[1]), 1)
        self.failUnless(obs_cl[1][0] is self.cd1)
        self.assertEqual(obs_cl[1].PresentChains, ["C", "D"])

        # 5 chains, 1 clique
        bps = BasePairs([self.a1, self.ab1, self.bc1, self.bn1, self.cd1])
        obs_cl = list(bps.cliques())
        self.assertEqual(len(obs_cl), 1)
        self.assertEqual(len(obs_cl[0]), 5)
        self.failUnless(obs_cl[0][0] is self.a1)
        self.assertEqualItems(obs_cl[0].PresentChains, ["A", "B", "C", "D", None])
Пример #12
0
    def test_hasConflicts(self):
        """BasePairs hadConflicts: handle chains and residue IDs"""
        # no conflict
        b1 = BasePair(Base('A', '30', 'G'), Base('A', '36', 'C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('A', '15', 'G'), Base('A', '42', 'C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), False)
        self.assertEqual(bps.hasConflicts(return_conflict=True), (False, None))

        # conflict within chain
        b1 = BasePair(Base('A', '30', 'G'), Base('A', '36', 'C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('A', '30', 'G'), Base('A', '42', 'C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), True)

        # conflict within chain -- return conflict
        b1 = BasePair(Base('A', '30', 'G'), Base('A', '36', 'C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('A', '30', 'G'), Base('A', '42', 'C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(return_conflict=True),\
            (True, "A 30 G"))

        # no conflict, same residue ID, different chain
        b1 = BasePair(Base('A', '30', 'G'), Base('A', '36', 'C'), Saenger='XX')
        b2 = BasePair(Base('A','31','A'), Base('A','35','U'),\
            Orientation='cis',Edges='W/W')
        b3 = BasePair(Base('C', '30', 'G'), Base('A', '42', 'C'))
        bps = BasePairs([b1, b2, b3])
        self.assertEqual(bps.hasConflicts(), False)