6
|
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()
|