erange version 4.0a dev release
[erange.git] / test / testGetSNPGeneInfo.py
1 '''
2 Created on Aug 26, 2010
3
4 @author: sau
5 '''
6 import unittest
7 from erange import getSNPGeneInfo
8
9
10 class TestGetSNPGeneInfo(unittest.TestCase):
11
12
13     def setUp(self):
14         self.geneDict = {}
15         self.snpDict = {}
16         self.rpkmDict = {}
17         self.withSense = False
18
19
20     def tearDown(self):
21         pass
22
23
24     def testDoNotProcessLine(self):
25         self.assertTrue(getSNPGeneInfo.doNotProcessLine("#anything"))
26         self.assertFalse(getSNPGeneInfo.doNotProcessLine("line to process"))
27
28
29     def testGetSNPGeneInfoList(self):
30         geneInfoList = getSNPGeneInfo.getSNPGeneInfoList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense)
31         self.assertEquals([], geneInfoList)
32
33         badGeneDict = {"badEntry": "foo"}
34         self.assertRaises(ValueError, getSNPGeneInfo.getSNPGeneInfoList, badGeneDict, self.snpDict, self.rpkmDict, self.withSense)
35
36         self.geneDict[("gene1", "ID1")] = {"position": [("1", 1)], "sense": "+"}
37         self.assertRaises(KeyError, getSNPGeneInfo.getSNPGeneInfoList, self.geneDict, self.snpDict, self.rpkmDict, self.withSense)
38
39         self.snpDict[("1", 1)] = "chr1\tpos 1\n"
40         result = [{"symbol": "gene1",
41                    "rpkm": "N\\A",
42                    "geneID": "ID1",
43                    "snpDescription": "chr1\tpos 1" }
44         ]
45         self.assertEquals(result, getSNPGeneInfo.getSNPGeneInfoList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
46
47         self.rpkmDict["ID1"] = 300
48         result = [{"symbol": "gene1",
49                    "rpkm": "300",
50                    "geneID": "ID1",
51                    "snpDescription": "chr1\tpos 1" }
52         ]
53         self.assertEquals(result, getSNPGeneInfo.getSNPGeneInfoList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
54
55         self.geneDict[("gene1", "ID1")] = {"position": [("1", 1), ("1", 1)], "sense": "+"}
56         self.assertEquals(result, getSNPGeneInfo.getSNPGeneInfoList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
57
58         result = [{"symbol": "gene1",
59                    "sense": "+",
60                    "rpkm": "300",
61                    "geneID": "ID1",
62                    "snpDescription": "chr1\tpos 1" }
63         ]
64         self.assertEquals(result, getSNPGeneInfo.getSNPGeneInfoList(self.geneDict, self.snpDict, self.rpkmDict, True))
65
66         self.geneDict[("gene1", "ID1")] = {"position": [("1", 1), ("1", 10)], "sense": "+"}
67         self.snpDict[("1", 10)] = "chr1\tpos 10\n"
68         result = [{"symbol": "gene1",
69                    "rpkm": "300",
70                    "geneID": "ID1",
71                    "snpDescription": "chr1\tpos 10" },
72                   {"symbol": "gene1",
73                    "rpkm": "300",
74                    "geneID": "ID1",
75                    "snpDescription": "chr1\tpos 1" }
76         ]
77         self.assertEquals(result, getSNPGeneInfo.getSNPGeneInfoList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
78
79
80     #TODO: write test
81     def testGetSNPGeneInfo(self):
82         pass
83
84
85     def testGetSNPGeneOutputList(self):
86         geneOutputList = getSNPGeneInfo.getSNPGeneOutputList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense)
87         self.assertEquals([], geneOutputList)
88
89         badGeneDict = {"badEntry": "foo"}
90         self.assertRaises(ValueError, getSNPGeneInfo.getSNPGeneOutputList, badGeneDict, self.snpDict, self.rpkmDict, self.withSense)
91
92         self.geneDict[("gene1", "ID1")] = {"position": [("1", 1)], "sense": "+"}
93         self.assertRaises(KeyError, getSNPGeneInfo.getSNPGeneOutputList, self.geneDict, self.snpDict, self.rpkmDict, self.withSense)
94
95         self.snpDict[("1", 1)] = "chr1\tpos 1\n"
96         result = ["chr1\tpos 1\tgene1\tID1\tN\\A"]
97         self.assertEquals(result, getSNPGeneInfo.getSNPGeneOutputList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
98
99         self.rpkmDict["ID1"] = 300
100         result = ["chr1\tpos 1\tgene1\tID1\t300"]
101         self.assertEquals(result, getSNPGeneInfo.getSNPGeneOutputList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
102
103         self.geneDict[("gene1", "ID1")] = {"position": [("1", 1), ("1", 1)], "sense": "+"}
104         self.assertEquals(result, getSNPGeneInfo.getSNPGeneOutputList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
105
106         result = ["chr1\tpos 1\tgene1\tID1\t300\t+"]
107         self.assertEquals(result, getSNPGeneInfo.getSNPGeneOutputList(self.geneDict, self.snpDict, self.rpkmDict, True))
108
109         self.geneDict[("gene1", "ID1")] = {"position": [("1", 1), ("1", 10)], "sense": "+"}
110         self.snpDict[("1", 10)] = "chr1\tpos 10\n"
111         result = ["chr1\tpos 10\tgene1\tID1\t300",
112                   "chr1\tpos 1\tgene1\tID1\t300"
113         ]
114         self.assertEquals(result, getSNPGeneInfo.getSNPGeneOutputList(self.geneDict, self.snpDict, self.rpkmDict, self.withSense))
115
116
117     #TODO: write test
118     def testWriteSNPGeneInfo(self):
119         pass
120
121
122 def suite():
123     suite = unittest.TestSuite()
124     suite.addTest(unittest.makeSuite(TestGetSNPGeneInfo))
125
126     return suite
127
128
129 if __name__ == "__main__":
130     #import sys;sys.argv = ['', 'Test.testName']
131     unittest.main()