snapshot of 4.0a development. initial git repo commit
[erange.git] / test / testGetSNPs.py
1 '''
2 Created on Jun 4, 2010
3
4 @author: sau
5 '''
6 import os, unittest
7 from Erange.commoncode import readDataset
8 from Erange import getSNPs
9
10
11 class TestGetSNPs(unittest.TestCase):
12
13     def setUp(self):
14         self.rdsDNA = readDataset("testDNARDSForUnitTests.rds", True, "DNA", verbose=True)
15
16         uniqueInsertList = [("uniqueID1", "chr1", 10, 20, "+", 1.0, "", ""),
17                             ("uniqueID2", "chr1", 100, 200, "+", 1.0, "", ""),
18                             ("uniqueID3", "chr1", 1000, 2000, "+", 1.0, "", "G10A")]
19
20         multiInsertList = [("multiID1", "chr2", 1010, 1020, "+", 0.5, "", ""),
21                            ("multiID1", "chr2", 1010, 1020, "+", 0.5, "", ""),
22                            ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
23                            ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
24                            ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
25                            ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", "")]
26
27         self.rdsDNA.insertUniqs(uniqueInsertList)
28         self.rdsDNA.insertMulti(multiInsertList)
29
30
31     def tearDown(self):
32         os.remove("./testDNARDSForUnitTests.rds")
33         self.rdsDNA = None
34
35
36     def testGetMatchDict(self):
37         uniqueTestDict = getSNPs.getMatchDict(self.rdsDNA, "chr1", withSplices=False)
38
39         self.assertEqual(uniqueTestDict[10][0], 20, "incorrect result for unique chr position 10")
40         self.assertEqual(uniqueTestDict[100][0], 200, "incorrect result for unique chr position 100")
41         self.assertEqual(uniqueTestDict[1000][0], 2000, "incorrect result for unique chr position 1000")
42
43         self.assertRaises(KeyError, getSNPs.getMatchDict, self.rdsDNA, "chr2", withSplices=False)
44
45
46     def testGetMismatchDict(self):
47         mismatchDict = getSNPs.getMismatchDict(self.rdsDNA, "chr1")
48         result = {1009: {"totalBaseDict": {"A-G": 1},
49                          "uniqueReadCount": 1,
50                          "uniqBaseDict": {"A-G": 1},
51                          "back": "1000:A-G", "totalCount": 1
52                          }
53         }
54         self.assertEquals(result, mismatchDict)
55
56
57     #TODO: write unit test
58     def testGetSNPs(self):
59         pass
60
61
62     #TODO: write unit test
63     def testWriteSNPsToFile(self):
64         pass
65
66
67     def testDoNotProcessChromosome(self):
68         self.assertFalse(getSNPs.doNotProcessChromosome(True, "chr1"))
69         self.assertFalse(getSNPs.doNotProcessChromosome(False, "chr1"))
70         self.assertFalse(getSNPs.doNotProcessChromosome(False, "badName"))
71         self.assertTrue(getSNPs.doNotProcessChromosome(True, "badName"))
72         self.assertTrue(getSNPs.doNotProcessChromosome(True, ""))
73
74
75 def suite():
76     suite = unittest.TestSuite()
77     suite.addTest(unittest.makeSuite(TestGetSNPs))
78
79     return suite
80
81
82 if __name__ == "__main__":
83     #import sys;sys.argv = ['', 'Test.testName']
84     unittest.main()