comparison SMART/Java/Python/ncList/test/Test_F_FindOverlaps_naif.py @ 6:769e306b7933

Change the repository level.
author yufei-luo
date Fri, 18 Jan 2013 04:54:14 -0500
parents
children
comparison
equal deleted inserted replaced
5:ea3082881bf8 6:769e306b7933
1 import unittest
2 import os
3 from commons.core.utils.FileUtils import FileUtils
4 from SMART.Java.Python.misc import Utils
5 from SMART.Java.Python.ncList.FindOverlaps_naif import FindOverlaps_naif
6 from SMART.Java.Python.ncList.test.MockFindOverlapsWithSeveralIntervals import *
7
8 class Test_F_FindOverlaps_naif(unittest.TestCase):
9
10 def setUp(self):
11 self._inputRefGff3FileName = 'ref.gff3'
12 self._writeGFF3File(self._inputRefGff3FileName)
13 self._inputQueryGff3FileName = 'query.gff3'
14 self._writeQueryGff3File(self._inputQueryGff3FileName)
15 self._outputGff3FileName = 'output.gff3'
16 self._expOutputFileName = 'expOutGff3.gff3'
17 self._iFON = FindOverlaps_naif(self._inputRefGff3FileName, self._inputQueryGff3FileName)
18 self._iFON.setOutputGff3FileName(self._outputGff3FileName)
19
20 def tearDown(self):
21 os.remove(self._inputRefGff3FileName)
22 os.remove(self._inputQueryGff3FileName)
23 os.remove(self._outputGff3FileName)
24 os.remove(self._expOutputFileName)
25
26 def test_run_general(self):
27 self._iFON.run()
28 self._iFON.close()
29 self._writeExpOutFile_general(self._expOutputFileName)
30 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
31
32 def test_run_general_asScript(self):
33 cmd = 'python ../FindOverlaps_naif.py -i %s -j %s -o %s' % (self._inputRefGff3FileName, self._inputQueryGff3FileName, self._outputGff3FileName)
34 os.system(cmd)
35 self._writeExpOutFile_general(self._expOutputFileName)
36 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
37
38 def test_run_overlap_special_case(self):
39 inputQueryGff3FileName = 'query2.gff3'
40 self._writeQueryGff3File2(inputQueryGff3FileName)
41 iFON = FindOverlaps_naif(self._inputRefGff3FileName, inputQueryGff3FileName)
42 iFON.setOutputGff3FileName(self._outputGff3FileName)
43 iFON.run()
44 iFON.close()
45 self._writeExpOutFile_special_case(self._expOutputFileName)
46 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
47 os.remove(inputQueryGff3FileName)
48
49 def test_run_overlap_special_case_asScript(self):
50 inputQueryGff3FileName = 'query2.gff3'
51 self._writeQueryGff3File2(inputQueryGff3FileName)
52 cmd = 'python ../FindOverlaps_naif.py -i %s -j %s -o %s' % (self._inputRefGff3FileName, inputQueryGff3FileName, self._outputGff3FileName)
53 os.system(cmd)
54 self._writeExpOutFile_special_case(self._expOutputFileName)
55 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
56 os.remove(inputQueryGff3FileName)
57
58 def test_case_2(self):
59 inputRefGff3FileName = 'ref_case2.gff3'
60 iMock = MockFindOverlapsWithServeralIntervals_case2()
61 iMock.write(inputRefGff3FileName)
62 inputQueryGff3FileName = 'query_case2.gff3'
63 self._writeQueryGff3File_case2(inputQueryGff3FileName)
64 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
65 iFON.setOutputGff3FileName(self._outputGff3FileName)
66 iFON.run()
67 iFON.close()
68 self._writeExpOutFile_case2(self._expOutputFileName)
69 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
70 os.remove(inputQueryGff3FileName)
71 os.remove(inputRefGff3FileName)
72
73 def test_case_3(self):
74 inputRefGff3FileName = 'ref_case3.gff3'
75 iMock = MockFindOverlapsWithServeralIntervals_case3()
76 iMock.write(inputRefGff3FileName)
77 inputQueryGff3FileName = 'query_case3.gff3'
78 self._writeQueryGff3File_case3(inputQueryGff3FileName)
79 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
80 iFON.setOutputGff3FileName(self._outputGff3FileName)
81 iFON.run()
82 iFON.close()
83 self._writeExpOutFile_case3(self._expOutputFileName)
84 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
85 os.remove(inputQueryGff3FileName)
86 os.remove(inputRefGff3FileName)
87
88 def test_case_4(self):
89 inputRefGff3FileName = 'ref_case4.gff3'
90 iMock = MockFindOverlapsWithServeralIntervals_case4_5()
91 iMock.write(inputRefGff3FileName)
92 inputQueryGff3FileName = 'query_case4.gff3'
93 self._writeQueryGff3File_case4(inputQueryGff3FileName)
94 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
95 iFON.setOutputGff3FileName(self._outputGff3FileName)
96 iFON.run()
97 iFON.close()
98 self._writeExpOutFile_case4(self._expOutputFileName)
99 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
100 os.remove(inputQueryGff3FileName)
101 os.remove(inputRefGff3FileName)
102
103 def test_case_5(self):
104 inputRefGff3FileName = 'ref_case5.gff3'
105 iMock = MockFindOverlapsWithServeralIntervals_case4_5()
106 iMock.write(inputRefGff3FileName)
107 inputQueryGff3FileName = 'query_case5.gff3'
108 self._writeQueryGff3File_case5(inputQueryGff3FileName)
109 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
110 iFON.setOutputGff3FileName(self._outputGff3FileName)
111 iFON.run()
112 iFON.close()
113 self._writeExpOutFile_case5(self._expOutputFileName)
114 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
115 os.remove(inputQueryGff3FileName)
116 os.remove(inputRefGff3FileName)
117
118 def test_case_6(self):
119 inputRefGff3FileName = 'ref_case6.gff3'
120 iMock = MockFindOverlapsWithServeralIntervals_case6_7()
121 iMock.write(inputRefGff3FileName)
122 inputQueryGff3FileName = 'query_case6.gff3'
123 self._writeQueryGff3File_case6(inputQueryGff3FileName)
124 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
125 iFON.setOutputGff3FileName(self._outputGff3FileName)
126 iFON.run()
127 iFON.close()
128 self._writeExpOutFile_case6(self._expOutputFileName)
129 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
130 os.remove(inputQueryGff3FileName)
131 os.remove(inputRefGff3FileName)
132
133 def test_case_7(self):
134 inputRefGff3FileName = 'ref_case7.gff3'
135 iMock = MockFindOverlapsWithServeralIntervals_case6_7()
136 iMock.write(inputRefGff3FileName)
137 inputQueryGff3FileName = 'query_case7.gff3'
138 self._writeQueryGff3File_case7(inputQueryGff3FileName)
139 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
140 iFON.setOutputGff3FileName(self._outputGff3FileName)
141 iFON.run()
142 iFON.close()
143 self._writeExpOutFile_case7(self._expOutputFileName)
144 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
145 os.remove(inputQueryGff3FileName)
146 os.remove(inputRefGff3FileName)
147
148 def test_case_8(self):
149 inputRefGff3FileName = 'ref_case8.gff3'
150 iMock = MockFindOverlapsWithServeralIntervals_case8()
151 iMock.write(inputRefGff3FileName)
152 inputQueryGff3FileName = 'query_case8.gff3'
153 self._writeQueryGff3File_case8(inputQueryGff3FileName)
154 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
155 iFON.setOutputGff3FileName(self._outputGff3FileName)
156 iFON.run()
157 iFON.close()
158 self._writeExpOutFile_case8(self._expOutputFileName)
159 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
160 os.remove(inputQueryGff3FileName)
161 os.remove(inputRefGff3FileName)
162
163 def test_case_9(self):
164 inputRefGff3FileName = 'ref_case9.gff3'
165 iMock = MockFindOverlapsWithServeralIntervals_case9()
166 iMock.write(inputRefGff3FileName)
167 inputQueryGff3FileName = 'query_case9.gff3'
168 self._writeQueryGff3File_case9(inputQueryGff3FileName)
169 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
170 iFON.setOutputGff3FileName(self._outputGff3FileName)
171 iFON.run()
172 iFON.close()
173 self._writeExpOutFile_case9(self._expOutputFileName)
174 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
175 os.remove(inputQueryGff3FileName)
176 os.remove(inputRefGff3FileName)
177
178 def test_case_10(self):
179 inputRefGff3FileName = 'ref_case10.gff3'
180 iMock = MockFindOverlapsWithServeralIntervals_case10()
181 iMock.write(inputRefGff3FileName)
182 inputQueryGff3FileName = 'query_case10.gff3'
183 self._writeQueryGff3File_case10(inputQueryGff3FileName)
184 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
185 iFON.setOutputGff3FileName(self._outputGff3FileName)
186 iFON.run()
187 iFON.close()
188 self._writeExpOutFile_case10(self._expOutputFileName)
189 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
190 os.remove(inputQueryGff3FileName)
191 os.remove(inputRefGff3FileName)
192
193 def test_case_11(self):
194 inputRefGff3FileName = 'ref_case11.gff3'
195 iMock = MockFindOverlapsWithServeralIntervals_case11()
196 iMock.write(inputRefGff3FileName)
197 inputQueryGff3FileName = 'query_case11.gff3'
198 self._writeQueryGff3File_case11(inputQueryGff3FileName)
199 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
200 iFON.setOutputGff3FileName(self._outputGff3FileName)
201 iFON.run()
202 iFON.close()
203 self._writeExpOutFile_case11(self._expOutputFileName)
204 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName))
205 os.remove(inputQueryGff3FileName)
206 os.remove(inputRefGff3FileName)
207
208 def _writeExpOutFile_special_case(self, fileName):
209 f = open(fileName, 'w')
210 f.write("chr1 S-MART test2 1250 1300 781 + . nbOverlaps=1;overlapsWith=test2.7;ID=query_2;Name=test1.2\n")
211 f.close()
212
213 def _writeExpOutFile_general(self, fileName):
214 f = open(fileName, 'w')
215 f.write("""chr1 S-MART test1.1 25 150 126 + . nbOverlaps=3;overlapsWith=test2.1--test2.2--test2.3;ID=query_1;Name=test1.1
216 chr1 S-MART test1.2 70 850 781 + . nbOverlaps=6;overlapsWith=test2.1--test2.2--test2.3--test2.4--test2.5--test2.6;ID=query_2;Name=test1.2
217 chr1 S-MART test1.3 550 850 201 + . nbOverlaps=4;overlapsWith=test2.1--test2.3--test2.5--test2.6;ID=query_3;Name=test1.3
218 chr1 S-MART test1.4 925 1025 101 + . nbOverlaps=2;overlapsWith=test2.1--test2.5;ID=query_4;Name=test1.4
219 chr1 S-MART test1.5 1201 1210 10 + . nbOverlaps=1;overlapsWith=test2.7;ID=query_5;Name=test1.5
220 """)
221 f.close()
222
223 def _writeExpOutFile_cas_1(self, fileName):
224 f = open(fileName, 'w')
225 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_3;ID=test2.1;Name=test2.1\n")
226 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tOverlapWith=query_3;ID=test2.3;Name=test2.3\n")
227 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tOverlapWith=query_3;ID=test2.5;Name=test2.5\n")
228 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tOverlapWith=query_3;ID=test2.6;Name=test2.6\n")
229 f.close()
230
231 def _writeExpOutFile_cas_2(self, fileName):
232 f = open(fileName, 'w')
233 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_2;Name=test2.1\n")
234 f.write("chr1\tS-MART\ttest2.2\t50\t350\t301\t+\t.\tOverlapWith=query_2;Name=test2.2\n")
235 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tOverlapWith=query_2;Name=test2.3\n")
236 f.write("chr1\tS-MART\ttest2.4\t200\t450\t251\t+\t.\tOverlapWith=query_2;Name=test2.4\n")
237 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tOverlapWith=query_2;Name=test2.5\n")
238 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tOverlapWith=query_2;Name=test2.6\n")
239 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_3;Name=test2.1\n")
240 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tOverlapWith=query_3;Name=test2.3\n")
241 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tOverlapWith=query_3;Name=test2.5\n")
242 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tOverlapWith=query_3;Name=test2.6\n")
243 f.close()
244
245 def _writeExpOutFile_all_overlap(self, fileName):
246 f = open(fileName, 'w')
247 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_2;ID=test2.1;Name=test2.1\n")
248 f.write("chr1\tS-MART\ttest2.2\t50\t350\t301\t+\t.\tOverlapWith=query_2;D=test2.2;Name=test2.2\n")
249 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tOverlapWith=query_2;ID=test2.3;Name=test2.3\n")
250 f.write("chr1\tS-MART\ttest2.4\t200\t450\t251\t+\t.\tOverlapWith=query_2;ID=test2.4;Name=test2.4\n")
251 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tOverlapWith=query_2;ID=test2.5;Name=test2.5\n")
252 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tOverlapWith=query_2;ID=test2.6;Name=test2.6\n")
253 f.close()
254
255 def _writeExpOutFile_overlap_to_children(self, fileName):
256 f = open(fileName, 'w')
257 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_3;ID=test2.1;Name=test2.1\n")
258 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tOverlapWith=query_3;ID=test2.3;Name=test2.3\n")
259 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tOverlapWith=query_3;ID=test2.5;Name=test2.5\n")
260 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tOverlapWith=query_3;ID=test2.6;Name=test2.6\n")
261 f.close()
262
263 def _writeExpOutFile_not_overlap_to_children(self, fileName):
264 f = open(fileName, 'w')
265 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_1;ID=test2.1;Name=test2.1\n")
266 f.write("chr1\tS-MART\ttest2.2\t50\t350\t301\t+\t.\tOverlapWith=query_1;ID=test2.2;Name=test2.2\n")
267 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tOverlapWith=query_1;ID=test2.3;Name=test2.3\n")
268 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tOverlapWith=query_4;ID=test2.1;Name=test2.1\n")
269 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tOverlapWith=query_4;ID=test2.5;Name=test2.5\n")
270 f.close()
271
272 def _writeExpOutFile_no_overlap_right(self, fileName):
273 f = open(fileName, 'w')
274 f.close()
275
276 def _writeExpOutFile_one_overlap(self, fileName):
277 f = open(fileName, 'w')
278 f.write("chr1\tS-MART\ttest2.7\t1200\t1300\t101\t+\t.\tOverlapWith=query_5;ID=test2.7;Name=test2.7\n")
279 f.close()
280
281 def _writeExpOutFile_case2(self, fileName):
282 f = open(fileName, 'w')
283 f.write("""chr1 S-MART test2.1 150 300 151 + . nbOverlaps=4;overlapsWith=test2.1--test2.2--test2.3--test2.4;ID=query_1;Name=test2.1
284 chr1 S-MART test2.2 300 450 781 + . nbOverlaps=3;overlapsWith=test2.1--test2.2--test2.3;ID=query_2;Name=test2.2
285 chr1 S-MART test2.3 480 800 321 + . nbOverlaps=1;overlapsWith=test2.1;ID=query_3;Name=test2.3
286 chr1 S-MART test2.5 850 1000 151 + . nbOverlaps=1;overlapsWith=test2.5;ID=query_5;Name=test2.5
287 """)
288 f.close()
289
290 def _writeExpOutFile_case3(self, fileName):
291 f = open(fileName, 'w')
292 f.write("""chr1 S-MART test3.1 150 250 101 + . nbOverlaps=4;overlapsWith=test3.1--test3.2--test3.3--test3.4;ID=query_1;Name=test3.1
293 chr1 S-MART test3.2 380 400 21 + . nbOverlaps=4;overlapsWith=test3.1--test3.2--test3.3--test3.5;ID=query_2;Name=test3.2
294 chr1 S-MART test3.3 480 520 41 + . nbOverlaps=1;overlapsWith=test3.1;ID=query_3;Name=test3.3
295 chr1 S-MART test3.5 900 950 51 + . nbOverlaps=1;overlapsWith=test3.6;ID=query_5;Name=test3.5
296 """)
297 f.close()
298
299 def _writeExpOutFile_case4(self, fileName):
300 f = open(fileName, 'w')
301 f.write("""chr1 S-MART test4.1 400 500 101 + . nbOverlaps=3;overlapsWith=test4.1--test4.2--test4.3;ID=query_1;Name=test4.1
302 chr1 S-MART test4.2 450 600 151 + . nbOverlaps=3;overlapsWith=test4.1--test4.2--test4.3;ID=query_2;Name=test4.2
303 chr1 S-MART test4.3 700 800 101 + . nbOverlaps=2;overlapsWith=test4.1--test4.2;ID=query_3;Name=test4.3
304 """)
305 f.close()
306
307 def _writeExpOutFile_case5(self, fileName):
308 f = open(fileName, 'w')
309 f.write("chr1 S-MART test5.1 850 950 101 + . nbOverlaps=1;overlapsWith=test4.1;ID=query_1;Name=test5.1\n")
310 f.close()
311
312 def _writeExpOutFile_case6(self, fileName):
313 f = open(fileName, 'w')
314 f.write("""chr1 S-MART test6.1 200 300 101 + . nbOverlaps=2;overlapsWith=test6.1--test6.2;ID=query_1;Name=test6.1
315 chr1 S-MART test6.2 800 900 101 + . nbOverlaps=2;overlapsWith=test6.1--test6.5;ID=query_2;Name=test6.2
316 """)
317 f.close()
318
319 def _writeExpOutFile_case7(self, fileName):
320 f = open(fileName, 'w')
321 f.write("""chr1 S-MART test7.1 530 550 21 + . nbOverlaps=1;overlapsWith=test6.1;ID=query_1;Name=test7.1
322 chr1 S-MART test7.2 600 700 101 + . nbOverlaps=1;overlapsWith=test6.1;ID=query_2;Name=test7.2
323 chr1 S-MART test7.3 650 900 251 + . nbOverlaps=2;overlapsWith=test6.1--test6.5;ID=query_3;Name=test7.3
324 """)
325 f.close()
326
327 def _writeExpOutFile_case8(self, fileName):
328 f = open(fileName, 'w')
329 f.write("""chr1 S-MART test8.1 500 600 101 + . nbOverlaps=1;overlapsWith=test8.1;ID=query_1;Name=test8.1
330 chr1 S-MART test8.2 700 800 101 + . nbOverlaps=1;overlapsWith=test8.1;ID=query_2;Name=test8.2
331 chr1 S-MART test8.3 900 1100 201 + . nbOverlaps=1;overlapsWith=test8.1;ID=query_3;Name=test8.3
332 """)
333 f.close()
334
335 def _writeExpOutFile_case9(self, fileName):
336 f = open(fileName, 'w')
337 f.write("""chr1 S-MART test9.1 400 500 101 + . nbOverlaps=1;overlapsWith=test9.1;ID=query_1;Name=test9.1
338 chr1 S-MART test9.2 550 650 101 + . nbOverlaps=2;overlapsWith=test9.1--test9.2;ID=query_2;Name=test9.2
339 """)
340 f.close()
341
342 def _writeExpOutFile_case10(self, fileName):
343 f = open(fileName, 'w')
344 f.write("""chr1 S-MART test10.1 700 800 101 + . nbOverlaps=1;overlapsWith=test10.1;ID=query_1;Name=test10.1
345 chr1 S-MART test10.2 900 1000 101 + . nbOverlaps=1;overlapsWith=test10.1;ID=query_2;Name=test10.2
346 chr1 S-MART test10.3 1100 1300 201 + . nbOverlaps=1;overlapsWith=test10.5;ID=query_3;Name=test10.3
347 """)
348 f.close()
349
350 def _writeExpOutFile_case11(self, fileName):
351 f = open(fileName, 'w')
352 f.write("""chr1 S-MART test11.1 420 480 61 + . nbOverlaps=1;overlapsWith=test11.1;ID=query_1;Name=test11.1
353 chr1 S-MART test11.2 450 715 266 + . nbOverlaps=3;overlapsWith=test11.1--test11.4--test11.5;ID=query_2;Name=test11.2
354 """)
355 f.close()
356
357 def _writeQueryGff3File2(self, fileName):
358 f = open(fileName, 'w')
359 f.write("chr1\tquery\ttest1\t1100\t1150\t126\t+\t.\tID=query_1;Name=test1.1\n")
360 f.write("chr1\tquery\ttest2\t1250\t1300\t781\t+\t.\tID=query_2;Name=test1.2\n")
361 f.close()
362
363 def _writeQueryGff3File(self, fileName):
364 f = open(fileName, 'w')
365 f.write("chr1\tquery\ttest1.1\t25\t150\t126\t+\t.\tID=query_1;Name=test1.1\n")
366 f.write("chr1\tquery\ttest1.2\t70\t850\t781\t+\t.\tID=query_2;Name=test1.2\n")
367 f.write("chr1\tquery\ttest1.3\t550\t850\t201\t+\t.\tID=query_3;Name=test1.3\n")
368 f.write("chr1\tquery\ttest1.4\t925\t1025\t101\t+\t.\tID=query_4;Name=test1.4\n")
369 f.write("chr1\tquery\ttest1.5\t1201\t1210\t10\t+\t.\tID=query_5;Name=test1.5\n")
370 f.write("chr1\tquery\ttest1.6\t1500\t1600\t101\t+\t.\tID=query_6;Name=test1.6\n")
371 f.close()
372
373 def _writeQueryGff3File_case2(self, fileName):
374 f = open(fileName, 'w')
375 f.write("chr1\tquery\ttest2.1\t150\t300\t151\t+\t.\tID=query_1;Name=test2.1\n")
376 f.write("chr1\tquery\ttest2.2\t300\t450\t781\t+\t.\tID=query_2;Name=test2.2\n")
377 f.write("chr1\tquery\ttest2.3\t480\t800\t321\t+\t.\tID=query_3;Name=test2.3\n")
378 f.write("chr1\tquery\ttest2.4\t560\t800\t241\t+\t.\tID=query_4;Name=test2.4\n")
379 f.write("chr1\tquery\ttest2.5\t850\t1000\t151\t+\t.\tID=query_5;Name=test2.5\n")
380 f.close()
381
382 def _writeQueryGff3File_case3(self, fileName):
383 f = open(fileName, 'w')
384 f.write("chr1\tquery\ttest3.1\t150\t250\t101\t+\t.\tID=query_1;Name=test3.1\n")
385 f.write("chr1\tquery\ttest3.2\t380\t400\t21\t+\t.\tID=query_2;Name=test3.2\n")
386 f.write("chr1\tquery\ttest3.3\t480\t520\t41\t+\t.\tID=query_3;Name=test3.3\n")
387 f.write("chr1\tquery\ttest3.4\t510\t700\t191\t+\t.\tID=query_4;Name=test3.4\n")
388 f.write("chr1\tquery\ttest3.5\t900\t950\t51\t+\t.\tID=query_5;Name=test3.5\n")
389 f.close()
390
391 def _writeQueryGff3File_case4(self, fileName):
392 f = open(fileName, 'w')
393 f.write("chr1\tquery\ttest4.1\t400\t500\t101\t+\t.\tID=query_1;Name=test4.1\n")
394 f.write("chr1\tquery\ttest4.2\t450\t600\t151\t+\t.\tID=query_2;Name=test4.2\n")
395 f.write("chr1\tquery\ttest4.3\t700\t800\t101\t+\t.\tID=query_3;Name=test4.3\n")
396 f.close()
397
398 def _writeQueryGff3File_case5(self, fileName):
399 f = open(fileName, 'w')
400 f.write("chr1\tquery\ttest5.1\t850\t950\t101\t+\t.\tID=query_1;Name=test5.1\n")
401 f.close()
402
403 def _writeQueryGff3File_case6(self, fileName):
404 f = open(fileName, 'w')
405 f.write("chr1\tquery\ttest6.1\t200\t300\t101\t+\t.\tID=query_1;Name=test6.1\n")
406 f.write("chr1\tquery\ttest6.2\t800\t900\t101\t+\t.\tID=query_2;Name=test6.2\n")
407 f.close()
408
409 def _writeQueryGff3File_case7(self, fileName):
410 f = open(fileName, 'w')
411 f.write("chr1\tquery\ttest7.1\t530\t550\t21\t+\t.\tID=query_1;Name=test7.1\n")
412 f.write("chr1\tquery\ttest7.2\t600\t700\t101\t+\t.\tID=query_2;Name=test7.2\n")
413 f.write("chr1\tquery\ttest7.3\t650\t900\t251\t+\t.\tID=query_3;Name=test7.3\n")
414 f.close()
415
416 def _writeQueryGff3File_case8(self, fileName):
417 f = open(fileName, 'w')
418 f.write("chr1\tquery\ttest8.1\t500\t600\t101\t+\t.\tID=query_1;Name=test8.1\n")
419 f.write("chr1\tquery\ttest8.2\t700\t800\t101\t+\t.\tID=query_2;Name=test8.2\n")
420 f.write("chr1\tquery\ttest8.3\t900\t1100\t201\t+\t.\tID=query_3;Name=test8.3\n")
421 f.write("chr1\tquery\ttest8.4\t1200\t1300\t101\t+\t.\tID=query_4;Name=test8.4\n")
422 f.close()
423
424 def _writeQueryGff3File_case9(self, fileName):
425 f = open(fileName, 'w')
426 f.write("chr1\tquery\ttest9.1\t400\t500\t101\t+\t.\tID=query_1;Name=test9.1\n")
427 f.write("chr1\tquery\ttest9.2\t550\t650\t101\t+\t.\tID=query_2;Name=test9.2\n")
428 f.close()
429
430 def _writeQueryGff3File_case10(self, fileName):
431 f = open(fileName, 'w')
432 f.write("chr1\tquery\ttest10.1\t700\t800\t101\t+\t.\tID=query_1;Name=test10.1\n")
433 f.write("chr1\tquery\ttest10.2\t900\t1000\t101\t+\t.\tID=query_2;Name=test10.2\n")
434 f.write("chr1\tquery\ttest10.3\t1100\t1300\t201\t+\t.\tID=query_3;Name=test10.3\n")
435 f.close()
436
437 def _writeQueryGff3File_case11(self, fileName):
438 f = open(fileName, 'w')
439 f.write("chr1\tquery\ttest11.1\t420\t480\t61\t+\t.\tID=query_1;Name=test11.1\n")
440 f.write("chr1\tquery\ttest11.2\t450\t715\t266\t+\t.\tID=query_2;Name=test11.2\n")
441 f.close()
442
443 def _writeGFF3File(self, fileName):
444 f = open(fileName, "w")
445 f.write("chr1\ttest\ttest2.1\t9\t1000\t1001\t+\t.\tID=test2.1;Name=test2.1\n")
446 f.write("chr1\ttest\ttest2.2\t50\t350\t301\t+\t.\tID=test2.2;Name=test2.2\n")
447 f.write("chr1\ttest\ttest2.3\t100\t600\t501\t+\t.\tID=test2.3;Name=test2.3\n")
448 f.write("chr1\ttest\ttest2.4\t200\t450\t251\t+\t.\tID=test2.4;Name=test2.4\n")
449 f.write("chr1\ttest\ttest2.5\t700\t950\t251\t+\t.\tID=test2.5;Name=test2.5\n")
450 f.write("chr1\ttest\ttest2.6\t800\t900\t101\t+\t.\tID=test2.6;Name=test2.6\n")
451 f.write("chr1\ttest\ttest2.7\t1200\t1300\t101\t+\t.\tID=test2.7;Name=test2.7\n")
452 f.close()
453
454 if __name__ == "__main__":
455 unittest.main()