示例#1
0
 def test_extendHelix(self):
     """StructureNode extendHelix should extend the helix as far as possible
     """
     #single paired node is root[4]
     op_str = ViennaStructure('....(......)...')
     op = op_str.toTree()
     #can't extend if base pairs not allowed
     op[4].extendHelix(Rna('AAAAAAAAAAAAAAA'))
     self.assertEqual(str(op), op_str)
     #should extend a pair 5'
     op[4].extendHelix(Rna('AAACCAAAAAAGGAA'))
     self.assertEqual(str(op), '...((......))..')
     #should extend multiple pairs 5'
     op = op_str.toTree()
     op[4].extendHelix(Rna('CCCCCUUUUUUGGGG'))
     self.assertEqual(str(op), '.((((......))))')
     #should extend a pair 3', but must leave > 2-base loop
     op = op_str.toTree()
     op[4].extendHelix(Rna('AAAACCCCGGGGAAA'))
     self.assertEqual(str(op), '....((....))...')
     op[4][0].insert(1, StructureNode(Data=Stem(Start=1, End=1, Length=1)))
     op.renumber()
     self.assertEqual(str(op), '....((.()...))...')
     op[4][0].extendHelix(Rna('AAAACCCUACGGGGAAA'))
     self.assertEqual(str(op), '....(((()..)))...')
     #should extend a pair in both directions if possible
     op = op_str.toTree()
     op[4].extendHelix(Rna('AAACCCAAAAGGGAA'))
     self.assertEqual(str(op), '...(((....)))..')
示例#2
0
 def test_extendHelix(self):
     """StructureNode extendHelix should extend the helix as far as possible
     """
     #single paired node is root[4]
     op_str = ViennaStructure('....(......)...')
     op = op_str.toTree()
     #can't extend if base pairs not allowed
     op[4].extendHelix(Rna('AAAAAAAAAAAAAAA'))
     self.assertEqual(str(op), op_str)
     #should extend a pair 5'
     op[4].extendHelix(Rna('AAACCAAAAAAGGAA'))
     self.assertEqual(str(op), '...((......))..')
     #should extend multiple pairs 5'
     op = op_str.toTree()
     op[4].extendHelix(Rna('CCCCCUUUUUUGGGG'))
     self.assertEqual(str(op), '.((((......))))')
     #should extend a pair 3', but must leave > 2-base loop
     op = op_str.toTree()
     op[4].extendHelix(Rna('AAAACCCCGGGGAAA'))
     self.assertEqual(str(op), '....((....))...')
     op[4][0].insert(1, StructureNode(Data=Stem(Start=1,End=1,Length=1)))
     op.renumber()
     self.assertEqual(str(op), '....((.()...))...')
     op[4][0].extendHelix(Rna( 'AAAACCCUACGGGGAAA'))
     self.assertEqual(str(op), '....(((()..)))...')
     #should extend a pair in both directions if possible
     op = op_str.toTree()
     op[4].extendHelix(Rna('AAACCCAAAAGGGAA'))
     self.assertEqual(str(op), '...(((....)))..')
示例#3
0
 def test_fitSeq(self):
     """StructureNode fitSeq should adjust structure to match sequence"""
     #this is just a minimal test, since we know that both breakBadPairs()
     #and extendHelices() work fine with more extensive tests.
     s = ViennaStructure('..(((.....)))......(((.....)))...')
     r = Rna('UCCCCACUGAGGGGUUUGGGGGGUUUUCGCCCU')
     t = s.toTree()
     t.fitSeq(r)
     self.assertEqual(str(t), '.((((.....))))...(((.((...)).))).')
示例#4
0
 def test_fitSeq(self):
     """StructureNode fitSeq should adjust structure to match sequence"""
     #this is just a minimal test, since we know that both breakBadPairs()
     #and extendHelices() work fine with more extensive tests.
     s = ViennaStructure('..(((.....)))......(((.....)))...')
     r = Rna(            'UCCCCACUGAGGGGUUUGGGGGGUUUUCGCCCU')
     t = s.toTree()
     t.fitSeq(r)
     self.assertEqual(str(t), '.((((.....))))...(((.((...)).))).')
示例#5
0
 def test_breakBadPairs(self):
     """StructureNode breakBadPairs should eliminate mispaired bases."""
     oh_str = ViennaStructure(self.OneHelixStr)
     #no change if all pairs valid
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('CCCCCGGGGG'))
     self.assertEqual(str(oh), str(oh_str))
     #break everything if all pairs invalid
     oh.breakBadPairs(Rna('CCCCCAAAAA'))
     self.assertEqual(str(oh), '..........')
     #break a single pair
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('GCCCCGGGGG'))
     self.assertEqual(str(oh), '.(((()))).')
     #break two pairs
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('GCCCCCGGGG'))
     self.assertEqual(str(oh), '.(((..))).')
     #break internal pairs
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('GCCGCGGGGG'))
     self.assertEqual(str(oh), '.((.().)).')
     #repeat with multiple independent helices
     th_str = ViennaStructure('((.)).((.))')
     th = th_str.toTree()
     th.breakBadPairs(Rna('CCUGGCUUCGG'))
     self.assertEqual(str(th), th_str)
     th.breakBadPairs(Rna('CGUAGCAGUUU'))
     self.assertEqual(str(th), '(...).((.))')
     th = th_str.toTree()
     th.breakBadPairs(Rna('UUUUUUUUUUU'))
     self.assertEqual(str(th), '...........')
示例#6
0
 def test_breakBadPairs(self):
     """StructureNode breakBadPairs should eliminate mispaired bases."""
     oh_str = ViennaStructure(self.OneHelixStr)
     #no change if all pairs valid
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('CCCCCGGGGG'))
     self.assertEqual(str(oh), str(oh_str))
     #break everything if all pairs invalid
     oh.breakBadPairs(Rna('CCCCCAAAAA'))
     self.assertEqual(str(oh), '..........')
     #break a single pair
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('GCCCCGGGGG'))
     self.assertEqual(str(oh), '.(((()))).')
     #break two pairs
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('GCCCCCGGGG'))
     self.assertEqual(str(oh), '.(((..))).')
     #break internal pairs
     oh = oh_str.toTree()
     oh.breakBadPairs(Rna('GCCGCGGGGG'))
     self.assertEqual(str(oh), '.((.().)).')
     #repeat with multiple independent helices
     th_str = ViennaStructure('((.)).((.))')
     th = th_str.toTree()
     th.breakBadPairs(Rna('CCUGGCUUCGG'))
     self.assertEqual(str(th), th_str)
     th.breakBadPairs(Rna('CGUAGCAGUUU'))
     self.assertEqual(str(th), '(...).((.))')
     th = th_str.toTree()
     th.breakBadPairs(Rna('UUUUUUUUUUU'))
     self.assertEqual(str(th), '...........')
示例#7
0
 def test_extendHelices(self):
     """StructureNode extendHelices should extend all helices"""
     e = ViennaStructure('........')
     t = e.toTree()
     t.extendHelices(Rna('CCCCCCCCCC'))
     self.assertEqual(str(t), e)
     #no pairs if sequence can't form them
     s = ViennaStructure('(.....(...)..)...((.....))...')
     r = Rna('AAAAAAAAAAAAAAAAAAAAAAAAAAAAA')
     t = s.toTree()
     t.extendHelices(r)
     self.assertEqual(str(t), s)
     #should be able to extend a single helix
     s = ViennaStructure('(.....(...)..)...((.....))...')
     r = Rna('CAAAAACAAAGAAGCCCCCCCAGGGGGGG')
     t = s.toTree()
     t.extendHelices(r)
     self.assertEqual(str(t), '(.....(...)..)((((((...))))))')
     #should be able to extend multiple helices
     s = ViennaStructure('(.....(...)..)...((.....))...')
     r = Rna('AAAAACCCAGGGUUCCCCCAUAAAGGGAA')
     t = s.toTree()
     t.extendHelices(r)
     self.assertEqual(str(t), '((...((...))))..(((.....)))..')
示例#8
0
 def test_extendHelices(self):
     """StructureNode extendHelices should extend all helices"""
     e = ViennaStructure('........')
     t = e.toTree()
     t.extendHelices(Rna('CCCCCCCCCC'))
     self.assertEqual(str(t), e)
     #no pairs if sequence can't form them
     s = ViennaStructure('(.....(...)..)...((.....))...')
     r =             Rna('AAAAAAAAAAAAAAAAAAAAAAAAAAAAA')
     t = s.toTree()
     t.extendHelices(r)
     self.assertEqual(str(t), s)
     #should be able to extend a single helix
     s = ViennaStructure('(.....(...)..)...((.....))...')
     r =             Rna('CAAAAACAAAGAAGCCCCCCCAGGGGGGG')
     t = s.toTree()
     t.extendHelices(r)
     self.assertEqual(str(t), '(.....(...)..)((((((...))))))')
     #should be able to extend multiple helices
     s = ViennaStructure('(.....(...)..)...((.....))...')
     r =             Rna('AAAAACCCAGGGUUCCCCCAUAAAGGGAA')
     t = s.toTree()
     t.extendHelices(r)
     self.assertEqual(str(t), '((...((...))))..(((.....)))..')