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