6
|
1 from commons.core.parsing.BlatParser import BlatParser
|
|
2 import unittest
|
|
3
|
|
4
|
|
5 class Test_BlatParser(unittest.TestCase):
|
|
6
|
|
7
|
|
8 def test_setAttributesFromString(self):
|
|
9 blatLine = "315\t20\t0\t0\t3\t10\t2\t9\t+\tMRRE1H001H13FM1\t378\t0\t345\tchr16\t22053297\t21686950\t21687294\t4\t76,185,7,67,\t0,77,263,278,\t21686950,21687026,21687213,21687227,"
|
|
10
|
|
11 iBlatParser = BlatParser()
|
|
12 iBlatParser.setAttributesFromString(blatLine)
|
|
13
|
|
14 obsmatch = iBlatParser.getMatch()
|
|
15 obsmismatch = iBlatParser.getMismatch()
|
|
16 obsrepMatch = iBlatParser.getRepMatch()
|
|
17 obsN = iBlatParser.getN()
|
|
18 obsQGapCount = iBlatParser.getQGapCount()
|
|
19 obsQGapBases = iBlatParser.getQGapBases()
|
|
20 obsTGapCount = iBlatParser.getTGapCount()
|
|
21 obsTGapBases = iBlatParser.getTGapBases()
|
|
22 obsstrand = iBlatParser.getStrand()
|
|
23 obsQName = iBlatParser.getQName()
|
|
24 obsQSize = iBlatParser.getQSize()
|
|
25 obsQStart = iBlatParser.getQStart()
|
|
26 obsQEnd = iBlatParser.getQEnd()
|
|
27 obsTName = iBlatParser.getTName()
|
|
28 obsTSize = iBlatParser.getTSize()
|
|
29 obsTStart = iBlatParser.getTStart()
|
|
30 obsTEnd = iBlatParser.getTEnd()
|
|
31 obsblockCount = iBlatParser.getBlockCount()
|
|
32 obsblockSizes = iBlatParser.getBlockSizes()
|
|
33 obsqStarts = iBlatParser.getQStarts()
|
|
34 obstStarts = iBlatParser.getTStarts()
|
|
35
|
|
36 expmatch = "315"
|
|
37 expmismatch = "20"
|
|
38 exprepMatch = "0"
|
|
39 expN = "0"
|
|
40 expQGapCount = "3"
|
|
41 expQGapBases = "10"
|
|
42 expTGapCount = "2"
|
|
43 expTGapBases = "9"
|
|
44 expstrand = "+"
|
|
45 expQName = "MRRE1H001H13FM1"
|
|
46 expQSize = "378"
|
|
47 expQStart = "0"
|
|
48 expQEnd = "345"
|
|
49 expTName = "chr16"
|
|
50 expTSize = "22053297"
|
|
51 expTStart = "21686950"
|
|
52 expTEnd = "21687294"
|
|
53 expblockCount = "4"
|
|
54 expblockSizes = "76,185,7,67,"
|
|
55 expqStarts = "0,77,263,278,"
|
|
56 exptStarts = "21686950,21687026,21687213,21687227,"
|
|
57
|
|
58 self.assertEquals(expmatch, obsmatch)
|
|
59 self.assertEquals(expmismatch, obsmismatch)
|
|
60 self.assertEquals(exprepMatch, obsrepMatch)
|
|
61 self.assertEquals(expN, obsN)
|
|
62 self.assertEquals(expQGapCount, obsQGapCount)
|
|
63 self.assertEquals(expQGapBases, obsQGapBases)
|
|
64 self.assertEquals(expTGapCount, obsTGapCount)
|
|
65 self.assertEquals(expTGapBases, obsTGapBases)
|
|
66 self.assertEquals(expstrand, obsstrand)
|
|
67 self.assertEquals(expQName, obsQName)
|
|
68 self.assertEquals(expQSize, obsQSize)
|
|
69 self.assertEquals(expQStart, obsQStart)
|
|
70 self.assertEquals(expQEnd, obsQEnd)
|
|
71 self.assertEquals(expTName, obsTName)
|
|
72 self.assertEquals(expTSize, obsTSize)
|
|
73 self.assertEquals(expTStart, obsTStart)
|
|
74 self.assertEquals(expTEnd, obsTEnd)
|
|
75 self.assertEquals(expblockCount, obsblockCount)
|
|
76 self.assertEquals(expblockSizes, obsblockSizes)
|
|
77 self.assertEquals(expqStarts, obsqStarts)
|
|
78 self.assertEquals(exptStarts, obstStarts)
|
|
79
|
|
80 def test_setAttributesFromString_empty_QName(self):
|
|
81 blatLine = "315\t20\t0\t0\t3\t10\t2\t9\t+\t\t378\t0\t345\tchr16\t22053297\t21686950\t21687294\t4\t76,185,7,67,\t0,77,263,278,\t21686950,21687026,21687213,21687227,"
|
|
82
|
|
83 iBlatParser = BlatParser()
|
|
84 iBlatParser.setAttributesFromString(blatLine)
|
|
85
|
|
86 obsmatch = iBlatParser.getMatch()
|
|
87 obsmismatch = iBlatParser.getMismatch()
|
|
88 obsrepMatch = iBlatParser.getRepMatch()
|
|
89 obsN = iBlatParser.getN()
|
|
90 obsQGapCount = iBlatParser.getQGapCount()
|
|
91 obsQGapBases = iBlatParser.getQGapBases()
|
|
92 obsTGapCount = iBlatParser.getTGapCount()
|
|
93 obsTGapBases = iBlatParser.getTGapBases()
|
|
94 obsstrand = iBlatParser.getStrand()
|
|
95 obsQName = iBlatParser.getQName()
|
|
96 obsQSize = iBlatParser.getQSize()
|
|
97 obsQStart = iBlatParser.getQStart()
|
|
98 obsQEnd = iBlatParser.getQEnd()
|
|
99 obsTName = iBlatParser.getTName()
|
|
100 obsTSize = iBlatParser.getTSize()
|
|
101 obsTStart = iBlatParser.getTStart()
|
|
102 obsTEnd = iBlatParser.getTEnd()
|
|
103 obsblockCount = iBlatParser.getBlockCount()
|
|
104 obsblockSizes = iBlatParser.getBlockSizes()
|
|
105 obsqStarts = iBlatParser.getQStarts()
|
|
106 obstStarts = iBlatParser.getTStarts()
|
|
107
|
|
108 expmatch = ""
|
|
109 expmismatch = ""
|
|
110 exprepMatch = ""
|
|
111 expN = ""
|
|
112 expQGapCount = ""
|
|
113 expQGapBases = ""
|
|
114 expTGapCount = ""
|
|
115 expTGapBases = ""
|
|
116 expstrand = ""
|
|
117 expQName = ""
|
|
118 expQSize = ""
|
|
119 expQStart = ""
|
|
120 expQEnd = ""
|
|
121 expTName = ""
|
|
122 expTSize = ""
|
|
123 expTStart = ""
|
|
124 expTEnd = ""
|
|
125 expblockCount = ""
|
|
126 expblockSizes = ""
|
|
127 expqStarts = ""
|
|
128 exptStarts = ""
|
|
129
|
|
130 self.assertEquals(expmatch, obsmatch)
|
|
131 self.assertEquals(expmismatch, obsmismatch)
|
|
132 self.assertEquals(exprepMatch, obsrepMatch)
|
|
133 self.assertEquals(expN, obsN)
|
|
134 self.assertEquals(expQGapCount, obsQGapCount)
|
|
135 self.assertEquals(expQGapBases, obsQGapBases)
|
|
136 self.assertEquals(expTGapCount, obsTGapCount)
|
|
137 self.assertEquals(expTGapBases, obsTGapBases)
|
|
138 self.assertEquals(expstrand, obsstrand)
|
|
139 self.assertEquals(expQName, obsQName)
|
|
140 self.assertEquals(expQSize, obsQSize)
|
|
141 self.assertEquals(expQStart, obsQStart)
|
|
142 self.assertEquals(expQEnd, obsQEnd)
|
|
143 self.assertEquals(expTName, obsTName)
|
|
144 self.assertEquals(expTSize, obsTSize)
|
|
145 self.assertEquals(expTStart, obsTStart)
|
|
146 self.assertEquals(expTEnd, obsTEnd)
|
|
147 self.assertEquals(expblockCount, obsblockCount)
|
|
148 self.assertEquals(expblockSizes, obsblockSizes)
|
|
149 self.assertEquals(expqStarts, obsqStarts)
|
|
150 self.assertEquals(exptStarts, obstStarts)
|
|
151
|
|
152 def test_setAttributesFromString_less_than_21_fields(self):
|
|
153 blatLine = "315\t20\t0\t0\t3\t10\t2\t9\t378\t0\t345\tchr16\t22053297\t21686950\t21687294\t4\t76,185,7,67,\t0,77,263,278,\t21686950,21687026,21687213,21687227,"
|
|
154
|
|
155 iBlatParser = BlatParser()
|
|
156 iBlatParser.setAttributesFromString(blatLine)
|
|
157
|
|
158 obsmatch = iBlatParser.getMatch()
|
|
159 obsmismatch = iBlatParser.getMismatch()
|
|
160 obsrepMatch = iBlatParser.getRepMatch()
|
|
161 obsN = iBlatParser.getN()
|
|
162 obsQGapCount = iBlatParser.getQGapCount()
|
|
163 obsQGapBases = iBlatParser.getQGapBases()
|
|
164 obsTGapCount = iBlatParser.getTGapCount()
|
|
165 obsTGapBases = iBlatParser.getTGapBases()
|
|
166 obsstrand = iBlatParser.getStrand()
|
|
167 obsQName = iBlatParser.getQName()
|
|
168 obsQSize = iBlatParser.getQSize()
|
|
169 obsQStart = iBlatParser.getQStart()
|
|
170 obsQEnd = iBlatParser.getQEnd()
|
|
171 obsTName = iBlatParser.getTName()
|
|
172 obsTSize = iBlatParser.getTSize()
|
|
173 obsTStart = iBlatParser.getTStart()
|
|
174 obsTEnd = iBlatParser.getTEnd()
|
|
175 obsblockCount = iBlatParser.getBlockCount()
|
|
176 obsblockSizes = iBlatParser.getBlockSizes()
|
|
177 obsqStarts = iBlatParser.getQStarts()
|
|
178 obstStarts = iBlatParser.getTStarts()
|
|
179
|
|
180 expmatch = ""
|
|
181 expmismatch = ""
|
|
182 exprepMatch = ""
|
|
183 expN = ""
|
|
184 expQGapCount = ""
|
|
185 expQGapBases = ""
|
|
186 expTGapCount = ""
|
|
187 expTGapBases = ""
|
|
188 expstrand = ""
|
|
189 expQName = ""
|
|
190 expQSize = ""
|
|
191 expQStart = ""
|
|
192 expQEnd = ""
|
|
193 expTName = ""
|
|
194 expTSize = ""
|
|
195 expTStart = ""
|
|
196 expTEnd = ""
|
|
197 expblockCount = ""
|
|
198 expblockSizes = ""
|
|
199 expqStarts = ""
|
|
200 exptStarts = ""
|
|
201
|
|
202 self.assertEquals(expmatch, obsmatch)
|
|
203 self.assertEquals(expmismatch, obsmismatch)
|
|
204 self.assertEquals(exprepMatch, obsrepMatch)
|
|
205 self.assertEquals(expN, obsN)
|
|
206 self.assertEquals(expQGapCount, obsQGapCount)
|
|
207 self.assertEquals(expQGapBases, obsQGapBases)
|
|
208 self.assertEquals(expTGapCount, obsTGapCount)
|
|
209 self.assertEquals(expTGapBases, obsTGapBases)
|
|
210 self.assertEquals(expstrand, obsstrand)
|
|
211 self.assertEquals(expQName, obsQName)
|
|
212 self.assertEquals(expQSize, obsQSize)
|
|
213 self.assertEquals(expQStart, obsQStart)
|
|
214 self.assertEquals(expQEnd, obsQEnd)
|
|
215 self.assertEquals(expTName, obsTName)
|
|
216 self.assertEquals(expTSize, obsTSize)
|
|
217 self.assertEquals(expTStart, obsTStart)
|
|
218 self.assertEquals(expTEnd, obsTEnd)
|
|
219 self.assertEquals(expblockCount, obsblockCount)
|
|
220 self.assertEquals(expblockSizes, obsblockSizes)
|
|
221 self.assertEquals(expqStarts, obsqStarts)
|
|
222 self.assertEquals(exptStarts, obstStarts)
|
|
223
|
|
224 def test_setAttributes(self):
|
|
225 lResults = ['315','20','0','0','3','10','2','9','+','MRRE1H001H13FM1','378','0','345','chr16','22053297','21686950','21687294','4','76,185,7,67,','0,77,263,278,','21686950,21687026,21687213,21687227,']
|
|
226 lineNumber = 1
|
|
227
|
|
228 iBlatParser = BlatParser()
|
|
229 iBlatParser.setAttributes(lResults, lineNumber)
|
|
230
|
|
231 obsmatch = iBlatParser.getMatch()
|
|
232 obsmismatch = iBlatParser.getMismatch()
|
|
233 obsrepMatch = iBlatParser.getRepMatch()
|
|
234 obsN = iBlatParser.getN()
|
|
235 obsQGapCount = iBlatParser.getQGapCount()
|
|
236 obsQGapBases = iBlatParser.getQGapBases()
|
|
237 obsTGapCount = iBlatParser.getTGapCount()
|
|
238 obsTGapBases = iBlatParser.getTGapBases()
|
|
239 obsstrand = iBlatParser.getStrand()
|
|
240 obsQName = iBlatParser.getQName()
|
|
241 obsQSize = iBlatParser.getQSize()
|
|
242 obsQStart = iBlatParser.getQStart()
|
|
243 obsQEnd = iBlatParser.getQEnd()
|
|
244 obsTName = iBlatParser.getTName()
|
|
245 obsTSize = iBlatParser.getTSize()
|
|
246 obsTStart = iBlatParser.getTStart()
|
|
247 obsTEnd = iBlatParser.getTEnd()
|
|
248 obsblockCount = iBlatParser.getBlockCount()
|
|
249 obsblockSizes = iBlatParser.getBlockSizes()
|
|
250 obsqStarts = iBlatParser.getQStarts()
|
|
251 obstStarts = iBlatParser.getTStarts()
|
|
252
|
|
253 expmatch = "315"
|
|
254 expmismatch = "20"
|
|
255 exprepMatch = "0"
|
|
256 expN = "0"
|
|
257 expQGapCount = "3"
|
|
258 expQGapBases = "10"
|
|
259 expTGapCount = "2"
|
|
260 expTGapBases = "9"
|
|
261 expstrand = "+"
|
|
262 expQName = "MRRE1H001H13FM1"
|
|
263 expQSize = "378"
|
|
264 expQStart = "0"
|
|
265 expQEnd = "345"
|
|
266 expTName = "chr16"
|
|
267 expTSize = "22053297"
|
|
268 expTStart = "21686950"
|
|
269 expTEnd = "21687294"
|
|
270 expblockCount = "4"
|
|
271 expblockSizes = "76,185,7,67,"
|
|
272 expqStarts = "0,77,263,278,"
|
|
273 exptStarts = "21686950,21687026,21687213,21687227,"
|
|
274
|
|
275 self.assertEquals(expmatch, obsmatch)
|
|
276 self.assertEquals(expmismatch, obsmismatch)
|
|
277 self.assertEquals(exprepMatch, obsrepMatch)
|
|
278 self.assertEquals(expN, obsN)
|
|
279 self.assertEquals(expQGapCount, obsQGapCount)
|
|
280 self.assertEquals(expQGapBases, obsQGapBases)
|
|
281 self.assertEquals(expTGapCount, obsTGapCount)
|
|
282 self.assertEquals(expTGapBases, obsTGapBases)
|
|
283 self.assertEquals(expstrand, obsstrand)
|
|
284 self.assertEquals(expQName, obsQName)
|
|
285 self.assertEquals(expQSize, obsQSize)
|
|
286 self.assertEquals(expQStart, obsQStart)
|
|
287 self.assertEquals(expQEnd, obsQEnd)
|
|
288 self.assertEquals(expTName, obsTName)
|
|
289 self.assertEquals(expTSize, obsTSize)
|
|
290 self.assertEquals(expTStart, obsTStart)
|
|
291 self.assertEquals(expTEnd, obsTEnd)
|
|
292 self.assertEquals(expblockCount, obsblockCount)
|
|
293 self.assertEquals(expblockSizes, obsblockSizes)
|
|
294 self.assertEquals(expqStarts, obsqStarts)
|
|
295 self.assertEquals(exptStarts, obstStarts)
|
|
296
|
|
297 def test_eq_Equals_case1(self):
|
|
298 BlatParser1 = BlatParser()
|
|
299 BlatParser1.setMatch("315")
|
|
300 BlatParser1.setMismatch("20")
|
|
301 BlatParser1.setRepMatch("0")
|
|
302 BlatParser1.setN("0")
|
|
303 BlatParser1.setQGapCount("3")
|
|
304 BlatParser1.setQGapBases("10")
|
|
305 BlatParser1.setTGapCount("2")
|
|
306 BlatParser1.setTGapBases("9")
|
|
307 BlatParser1.setStrand("+")
|
|
308 BlatParser1.setQName("MRRE1H001H13FM1")
|
|
309 BlatParser1.setQSize("378")
|
|
310 BlatParser1.setQStart("0")
|
|
311 BlatParser1.setQEnd("345")
|
|
312 BlatParser1.setTName("chr16")
|
|
313 BlatParser1.setTSize("22053297")
|
|
314 BlatParser1.setTStart("21686950")
|
|
315 BlatParser1.setTEnd("21687294")
|
|
316 BlatParser1.setBlockCount("4")
|
|
317 BlatParser1.setBlockSizes("76,185,7,67,")
|
|
318 BlatParser1.setQStarts("0,77,263,278,")
|
|
319 BlatParser1.setTStarts("21686950,21687026,21687213,21687227,")
|
|
320
|
|
321 BlatParser2 = BlatParser()
|
|
322 BlatParser2.setMatch("315")
|
|
323 BlatParser2.setMismatch("20")
|
|
324 BlatParser2.setRepMatch("0")
|
|
325 BlatParser2.setN("0")
|
|
326 BlatParser2.setQGapCount("3")
|
|
327 BlatParser2.setQGapBases("10")
|
|
328 BlatParser2.setTGapCount("2")
|
|
329 BlatParser2.setTGapBases("9")
|
|
330 BlatParser2.setStrand("+")
|
|
331 BlatParser2.setQName("MRRE1H001H13FM1")
|
|
332 BlatParser2.setQSize("378")
|
|
333 BlatParser2.setQStart("0")
|
|
334 BlatParser2.setQEnd("345")
|
|
335 BlatParser2.setTName("chr16")
|
|
336 BlatParser2.setTSize("22053297")
|
|
337 BlatParser2.setTStart("21686950")
|
|
338 BlatParser2.setTEnd("21687294")
|
|
339 BlatParser2.setBlockCount("4")
|
|
340 BlatParser2.setBlockSizes("76,185,7,67,")
|
|
341 BlatParser2.setQStarts("0,77,263,278,")
|
|
342 BlatParser2.setTStarts("21686950,21687026,21687213,21687227,")
|
|
343
|
|
344 self.assertTrue(BlatParser1 == BlatParser2)
|
|
345
|
|
346 def test_eq_Equals_case2(self):
|
|
347 BlatParser1 = BlatParser()
|
|
348 BlatParser1.setMatch("315")
|
|
349 BlatParser1.setMismatch("20")
|
|
350 BlatParser1.setRepMatch("0")
|
|
351 BlatParser1.setN("0")
|
|
352 BlatParser1.setQGapCount("3")
|
|
353 BlatParser1.setQGapBases("10")
|
|
354 BlatParser1.setTGapCount("2")
|
|
355 BlatParser1.setTGapBases("9")
|
|
356 BlatParser1.setStrand("+")
|
|
357 BlatParser1.setQName("MRRE1H001H13FM1")
|
|
358 BlatParser1.setQSize("378")
|
|
359 BlatParser1.setQStart("0")
|
|
360 BlatParser1.setQEnd("345")
|
|
361 BlatParser1.setTName("chr16")
|
|
362 BlatParser1.setTSize("22053297")
|
|
363 BlatParser1.setTStart("21686950")
|
|
364 BlatParser1.setTEnd("21687294")
|
|
365 BlatParser1.setBlockCount("4")
|
|
366 BlatParser1.setBlockSizes("76,185,7,67,")
|
|
367 BlatParser1.setQStarts("0,77,263,278,")
|
|
368 BlatParser1.setTStarts("21686950,21687026,21687213,21687227,")
|
|
369
|
|
370 BlatParser2 = BlatParser()
|
|
371 BlatParser2.setMatch("315")
|
|
372 BlatParser2.setMismatch("20")
|
|
373 BlatParser2.setRepMatch("0")
|
|
374 BlatParser2.setN("0")
|
|
375 BlatParser2.setQGapCount("3")
|
|
376 BlatParser2.setQGapBases("10")
|
|
377 BlatParser2.setTGapCount("2")
|
|
378 BlatParser2.setTGapBases("9")
|
|
379 BlatParser2.setStrand("+")
|
|
380 BlatParser2.setQName("TotoFM2")
|
|
381 BlatParser2.setQSize("378")
|
|
382 BlatParser2.setQStart("0")
|
|
383 BlatParser2.setQEnd("345")
|
|
384 BlatParser2.setTName("chr16")
|
|
385 BlatParser2.setTSize("22053297")
|
|
386 BlatParser2.setTStart("21686950")
|
|
387 BlatParser2.setTEnd("21687294")
|
|
388 BlatParser2.setBlockCount("4")
|
|
389 BlatParser2.setBlockSizes("76,185,7,67,")
|
|
390 BlatParser2.setQStarts("0,77,263,278,")
|
|
391 BlatParser2.setTStarts("21686950,21687026,21687213,21687227,")
|
|
392
|
|
393 self.assertTrue(BlatParser1 == BlatParser2)
|
|
394
|
|
395 def test_eq_notEquals(self):
|
|
396 BlatParser1 = BlatParser()
|
|
397 BlatParser1.setMatch("315")
|
|
398 BlatParser1.setMismatch("20")
|
|
399 BlatParser1.setRepMatch("0")
|
|
400 BlatParser1.setN("0")
|
|
401 BlatParser1.setQGapCount("3")
|
|
402 BlatParser1.setQGapBases("10")
|
|
403 BlatParser1.setTGapCount("2")
|
|
404 BlatParser1.setTGapBases("9")
|
|
405 BlatParser1.setStrand("+")
|
|
406 BlatParser1.setQName("MRRE1H001H13FM1")
|
|
407 BlatParser1.setQSize("378")
|
|
408 BlatParser1.setQStart("0")
|
|
409 BlatParser1.setQEnd("345")
|
|
410 BlatParser1.setTName("chr16")
|
|
411 BlatParser1.setTSize("22053297")
|
|
412 BlatParser1.setTStart("21686950")
|
|
413 BlatParser1.setTEnd("21687294")
|
|
414 BlatParser1.setBlockCount("4")
|
|
415 BlatParser1.setBlockSizes("76,185,7,67,")
|
|
416 BlatParser1.setQStarts("0,77,263,278,")
|
|
417 BlatParser1.setTStarts("21686950,21687026,21687213,21687227,")
|
|
418
|
|
419 BlatParser2 = BlatParser()
|
|
420 BlatParser2.setMatch("315")
|
|
421 BlatParser2.setMismatch("20")
|
|
422 BlatParser2.setRepMatch("0")
|
|
423 BlatParser2.setN("0")
|
|
424 BlatParser2.setQGapCount("3")
|
|
425 BlatParser2.setQGapBases("10")
|
|
426 BlatParser2.setTGapCount("2")
|
|
427 BlatParser2.setTGapBases("9")
|
|
428 BlatParser2.setStrand("+")
|
|
429 BlatParser2.setQName("TotoFM2")
|
|
430 BlatParser2.setQSize("378")
|
|
431 BlatParser2.setQStart("0")
|
|
432 BlatParser2.setQEnd("345")
|
|
433 BlatParser2.setTName("chr8")
|
|
434 BlatParser2.setTSize("2205")
|
|
435 BlatParser2.setTStart("2124")
|
|
436 BlatParser2.setTEnd("2168")
|
|
437 BlatParser2.setBlockCount("4")
|
|
438 BlatParser2.setBlockSizes("76,185,7,67,")
|
|
439 BlatParser2.setQStarts("0,77,263,278,")
|
|
440 BlatParser2.setTStarts("21686950,21687026,21687213,21687227,")
|
|
441
|
|
442 self.assertFalse(BlatParser1 == BlatParser2)
|
|
443
|
|
444 if __name__ == "__main__":
|
|
445 unittest.main() |