1import RNApath
2
3RNApath.addSwigInterfacePath()
4
5import RNA
6import unittest
7
8seq1 = "CGCAGGGAUACCCGCG"
9longseq = "AUUUCCACUAGAGAAGGUCUAGAGUGUUUGUCGUUUGUCAGAAGUCCCUAUUCCAGGUACGAACACGGUGGAUAUGUUCGACGACAGGAUCGGCGCACUACGUUGGUAUCAUGUCCUCCGUCCUAACAAUUAUACAUCGAGAGGCAAAAUUUCUAAUCCGGGGUCAGUGAGCAUUGCCAUUUUAUAACUCGUGAUCUCUCGCUACUUAGGCGAUCCCUGCCAAUGAGGGUCAAGGAGUUGAAUUAUCGGGCCACAUCGACGUGGCCUUUACGGCCAGGUAAUUCAAAGGCCUCAAGUCCU"
10s1="CCCCAAAACGGG"
11s2="CCCGAAAAGGGG"
12s3="CCCCAAAAGGGG"
13ali = [s1,s2,s3]
14
15
16def mfe_window_callback(start, end, structure, energy, data=None):
17    data.append({ 'structure': structure, 'start': start, 'end' : end, 'energy' : energy})
18
19
20class mfe_window_functionTest(unittest.TestCase):
21
22    def test_mfe_window(self):
23        print "test_mfe_window"
24        fc= RNA.fold_compound(seq1, None, RNA.OPTION_MFE | RNA.OPTION_WINDOW)
25        (mfe) = fc.mfe_window()
26        print "[ %6.2f ]" % mfe
27        self.assertEqual("%6.2f" % mfe, "%6.2f" % -5.60)
28
29
30    def test_Lfold_cb(self):
31        print "test_Lfold_cb"
32        data = []
33        mfe = RNA.Lfold_cb(seq1, 150, mfe_window_callback, data)
34        self.assertTrue(len(data) == 2)
35        self.assertEqual(data[0]['structure'], "((....)).")
36        self.assertEqual("%6.2f" % data[0]['energy'], "%6.2f" % -0.80)
37        self.assertEqual(data[1]['structure'], "(((.(((...))))))")
38        self.assertEqual("%6.2f" % data[1]['energy'], "%6.2f" % -5.60)
39
40
41    def test_mfe_window_cb(self):
42        print "test_mfe_window_cb"
43        fc= RNA.fold_compound(seq1, None, RNA.OPTION_MFE | RNA.OPTION_WINDOW)
44        data = []
45        mfe = fc.mfe_window_cb(mfe_window_callback, data)
46        self.assertTrue(len(data) == 2)
47        self.assertEqual(data[0]['structure'], "((....)).")
48        self.assertEqual("%6.2f" % data[0]['energy'], "%6.2f" % -0.80)
49        self.assertEqual(data[1]['structure'], "(((.(((...))))))")
50        self.assertEqual("%6.2f" % data[1]['energy'], "%6.2f" % -5.60)
51
52
53    def test_aliLfold_cb(self):
54        print "test_aliLfold_cb"
55        data = []
56        mfe = RNA.aliLfold_cb(ali, 150, mfe_window_callback, data)
57        self.assertTrue(len(data) == 2)
58        self.assertEqual(data[0]['structure'], "(((.....)))")
59        self.assertEqual("%6.2f" % data[0]['energy'], "%6.2f" % -1.30)
60        self.assertEqual(data[1]['structure'], "(((......)))")
61        self.assertEqual("%6.2f" % data[1]['energy'], "%6.2f" % -2.70)
62
63
64    def test_mfe_window_cb(self):
65        print "test_mfe_window_cb (comparative)"
66        fc= RNA.fold_compound(ali, None, RNA.OPTION_MFE | RNA.OPTION_WINDOW)
67        data = []
68        mfe = fc.mfe_window_cb(mfe_window_callback, data)
69        self.assertTrue(len(data) == 2)
70        self.assertEqual(data[0]['structure'], "(((.....)))")
71        self.assertEqual("%6.2f" % data[0]['energy'], "%6.2f" % -1.30)
72        self.assertEqual(data[1]['structure'], "(((......)))")
73        self.assertEqual("%6.2f" % data[1]['energy'], "%6.2f" % -2.70)
74
75
76
77if __name__ == '__main__':
78    unittest.main()
79