erange version 4.0a dev release
[erange.git] / test / testmakebedfromrds.py
1 '''
2 Created on Jun 4, 2010
3
4 @author: sau
5 '''
6 import unittest
7 from erange import makebedfromrds
8
9
10 class TestMakeBedFromRds(unittest.TestCase):
11
12     def testGetSenseColor(self):
13         senseColor = makebedfromrds.getSenseColor('+', .5)
14         self.assertEqual(senseColor, makebedfromrds.MULTI_PLUS_COLOR, "incorrect color for low weight and plus sense color")
15
16         senseColor = makebedfromrds.getSenseColor('-', .5)
17         self.assertEqual(senseColor, makebedfromrds.MULTI_MINUS_COLOR, "incorrect color for low weight and non-plus sense")
18
19         senseColor = makebedfromrds.getSenseColor('+', 5)
20         self.assertEqual(senseColor, makebedfromrds.PLUS_COLOR, "incorrect color for high weight and plus sense")
21
22         senseColor = makebedfromrds.getSenseColor('-', 5)
23         self.assertEqual(senseColor, makebedfromrds.MINUS_COLOR, "incorrect color for high weight and non-plus sense")
24
25
26     def testGetMultiSenseColor(self):
27         senseColor = makebedfromrds.getMultiSenseColor('+')
28         self.assertEqual(senseColor, makebedfromrds.MULTI_PLUS_COLOR, "incorrect color for plus sense")
29
30         senseColor = makebedfromrds.getMultiSenseColor('-')
31         self.assertEqual(senseColor, makebedfromrds.MULTI_MINUS_COLOR, "incorrect color for non-plus sense")
32
33
34     def testGetSingleSenseColor(self):
35         senseColor = makebedfromrds.getSingleSenseColor('+')
36         self.assertEqual(senseColor, makebedfromrds.PLUS_COLOR, "incorrect color for plus sense")
37
38         senseColor = makebedfromrds.getSingleSenseColor('-')
39         self.assertEqual(senseColor, makebedfromrds.MINUS_COLOR, "incorrect color for non-plus sense")
40
41
42     def testGetReadSizes(self):
43         numPieces = 3
44         startList = [0, 1, 2]
45         stopList = [3, 4, 5]
46         readSizes = makebedfromrds.getReadSizes(numPieces, startList, stopList)
47         self.assertEqual(readSizes, "3,3,3", "incorrect read size list")
48         
49         readSizes = makebedfromrds.getReadSizes(1, startList, stopList)
50         self.assertEquals(readSizes, "3", "incorrect read size list for numPieces=1")
51         
52         self.assertRaises(IndexError, makebedfromrds.getReadSizes, numPieces, [], stopList)
53         self.assertRaises(IndexError, makebedfromrds.getReadSizes, numPieces, startList, [])
54         self.assertRaises(IndexError, makebedfromrds.getReadSizes, 4, startList, stopList)
55
56
57     def testGetReadCoords(self):
58         numPieces = 3
59         startList = [0, 1, 2]
60         readCoords = makebedfromrds.getReadCoords(numPieces, startList)
61         self.assertEqual(readCoords, "0,1,2", "incorrect read coords list")
62         
63         readCoords = makebedfromrds.getReadCoords(1, startList)
64         self.assertEqual(readCoords, "0", "incorrect read coords list for numPieces=1")
65         
66         self.assertRaises(IndexError, makebedfromrds.getReadCoords, numPieces, [])
67         self.assertRaises(IndexError, makebedfromrds.getReadCoords, 4, startList)
68
69
70     def testGetSpliceColor(self):
71         lpart = 1
72         rpart = 2
73         leftweight = 0.0
74         rightweight = 0.0
75         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight, hackType="1")
76         self.assertEqual(aColor, makebedfromrds.SPLICE_COLOR, "incorrect first color for hacktype 1 splice")
77         self.assertEqual(bColor, makebedfromrds.SPLICE_COLOR, "incorrect second color for hacktype 1 splice")
78         
79         lpart = 0
80         rpart = 0
81         leftweight = 1.0
82         rightweight = 0.0
83         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight, hackType="1")
84         self.assertEqual(aColor, makebedfromrds.UNIQUE_COLOR, "incorrect first color for hacktype 1 left unique")
85         self.assertEqual(bColor, makebedfromrds.UNIQUE_COLOR, "incorrect second color for hacktype 1 left unique")
86         
87         lpart = 0
88         rpart = 0
89         leftweight = 0.0
90         rightweight = 1.0
91         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight, hackType="1")
92         self.assertEqual(aColor, makebedfromrds.UNIQUE_COLOR, "incorrect first color for hacktype 1 right unique")
93         self.assertEqual(bColor, makebedfromrds.UNIQUE_COLOR, "incorrect second color for hacktype 1 right unique")
94         
95         lpart = 0
96         rpart = 0
97         leftweight = 1.0
98         rightweight = 1.0
99         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight, hackType="1")
100         self.assertEqual(aColor, makebedfromrds.UNIQUE_COLOR, "incorrect first color for hacktype 1 left and right unique")
101         self.assertEqual(bColor, makebedfromrds.UNIQUE_COLOR, "incorrect second color for hacktype 1 left and right unique")
102         
103         lpart = 0
104         rpart = 0
105         leftweight = 0.0
106         rightweight = 0.0
107         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight, hackType="1")
108         self.assertEqual(aColor, makebedfromrds.MULTI_COLOR, "incorrect first color for hacktype 1 multi")
109         self.assertEqual(bColor, makebedfromrds.MULTI_COLOR, "incorrect second color for hacktype 1 multi")
110         
111         lpart = 1
112         rpart = 1
113         leftweight = 0.0
114         rightweight = 0.0
115         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight, hackType="1")
116         self.assertEqual(aColor, makebedfromrds.MULTI_COLOR, "incorrect first color for hacktype 1 lpart + rpart = 2")
117         self.assertEqual(bColor, makebedfromrds.MULTI_COLOR, "incorrect second color for hacktype 1 lpart + rpart = 2")
118         
119         lpart = 2
120         rpart = 0
121         leftweight = 0.0
122         rightweight = 0.0
123         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight)
124         self.assertEqual(aColor, makebedfromrds.SPLICE_COLOR, "incorrect first color for left splice")
125         self.assertEqual(bColor, makebedfromrds.SPLICE_COLOR, "incorrect second color for left splice")
126         
127         lpart = 0
128         rpart = 0
129         leftweight = 1.0
130         rightweight = 0.0
131         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight)
132         self.assertEqual(aColor, makebedfromrds.UNIQUE_COLOR, "incorrect first color for left unique")
133         self.assertEqual(bColor, makebedfromrds.UNIQUE_COLOR, "incorrect second color for left unique")
134         
135         lpart = 0
136         rpart = 0
137         leftweight = 0.0
138         rightweight = 0.0
139         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight)
140         self.assertEqual(aColor, makebedfromrds.MULTI_COLOR, "incorrect first color for multi splice")
141         self.assertEqual(bColor, makebedfromrds.MULTI_COLOR, "incorrect second color for multi splice")
142         
143         lpart = 1
144         rpart = 0
145         leftweight = 0.0
146         rightweight = 0.0
147         aColor, bColor = makebedfromrds.getSpliceColor(lpart, rpart, leftweight, rightweight)
148         self.assertEqual(aColor, makebedfromrds.MULTI_COLOR, "incorrect first color for lpart = 1 multi splice")
149         self.assertEqual(bColor, makebedfromrds.MULTI_COLOR, "incorrect second color for lpart = 1 multi splice")
150
151
152     def testDoNotOutputChromosome(self):
153         self.assertTrue(makebedfromrds.doNotOutputChromosome("chrM", True), "chrM is output when enforceChr=True")
154         self.assertTrue(makebedfromrds.doNotOutputChromosome("chrM", False), "chrM is output when enforceChr=False")
155         self.assertFalse(makebedfromrds.doNotOutputChromosome("chrAny", True), "chr is not output when enforceChr=True")
156         self.assertFalse(makebedfromrds.doNotOutputChromosome("chrAny", False), "chr is not output when enforceChr=False")
157         self.assertTrue(makebedfromrds.doNotOutputChromosome("Bad", True), "bad name chr is output when enforceChr=True")
158         self.assertFalse(makebedfromrds.doNotOutputChromosome("Bad", False), "bad name chr is not output when enforceChr=True")
159
160
161 def suite():
162     suite = unittest.TestSuite()
163     suite.addTest(unittest.makeSuite(TestMakeBedFromRds))
164
165     return suite
166
167
168 if __name__ == "__main__":
169     #import sys;sys.argv = ['', 'Test.testName']
170     unittest.main()