comparison commons/core/coord/test/Test_MatchUtils.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 # Copyright INRA (Institut National de la Recherche Agronomique)
2 # http://www.inra.fr
3 # http://urgi.versailles.inra.fr
4 #
5 # This software is governed by the CeCILL license under French law and
6 # abiding by the rules of distribution of free software. You can use,
7 # modify and/ or redistribute the software under the terms of the CeCILL
8 # license as circulated by CEA, CNRS and INRIA at the following URL
9 # "http://www.cecill.info".
10 #
11 # As a counterpart to the access to the source code and rights to copy,
12 # modify and redistribute granted by the license, users are provided only
13 # with a limited warranty and the software's author, the holder of the
14 # economic rights, and the successive licensors have only limited
15 # liability.
16 #
17 # In this respect, the user's attention is drawn to the risks associated
18 # with loading, using, modifying and/or developing or reproducing the
19 # software by the user in light of its specific status of free software,
20 # that may mean that it is complicated to manipulate, and that also
21 # therefore means that it is reserved for developers and experienced
22 # professionals having in-depth computer knowledge. Users are therefore
23 # encouraged to load and test the software's suitability as regards their
24 # requirements in conditions enabling the security of their systems and/or
25 # data to be ensured and, more generally, to use and operate it in the
26 # same conditions as regards security.
27 #
28 # The fact that you are presently reading this means that you have had
29 # knowledge of the CeCILL license and that you accept its terms.
30
31
32 import unittest
33 import os
34 from commons.core.utils.FileUtils import FileUtils
35 from commons.core.coord.MatchUtils import MatchUtils
36 from commons.core.coord.Match import Match
37 from commons.core.seq.BioseqDB import BioseqDB
38
39
40 class Test_MatchUtils( unittest.TestCase ):
41
42 def test_getMatchListFromFile( self ):
43 inFile = "dummyInFile"
44 inFileHandler = open( inFile, "w" )
45 inFileHandler.write( "query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n" )
46 m1 = Match()
47 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
48 m1.write( inFileHandler )
49 m2 = Match()
50 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
51 m2.write( inFileHandler )
52 inFileHandler.close()
53
54 lExp = [ m1, m2 ]
55
56 lObs = MatchUtils.getMatchListFromFile( inFile )
57
58 self.assertEquals( lExp, lObs )
59
60 os.remove( inFile )
61
62 def test_getDictOfListsWithSubjectAsKey( self ):
63 m1 = Match()
64 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
65 m2 = Match()
66 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
67 lMatch = [ m1, m2 ]
68
69 dExp = { "SName1": [ m1 ], "SName2": [ m2 ] }
70
71 dObs = MatchUtils.getDictOfListsWithSubjectAsKey( lMatch )
72
73 self.assertEquals( dExp, dObs )
74
75 def test_getDictOfListsWithQueryAsKey( self ):
76 m1 = Match()
77 m1.setFromTuple( ("QName1", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
78 m2 = Match()
79 m2.setFromTuple( ("QName2", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
80 m3 = Match()
81 m3.setFromTuple( ("QName1", 1, 5, 5, 0.1, 0.2, "SName3", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
82 lMatch = [ m1, m2, m3 ]
83
84 dExp = { "QName1": [ m1, m3 ], "QName2": [ m2 ] }
85
86 dObs = MatchUtils.getDictOfListsWithQueryAsKey( lMatch )
87
88 self.assertEquals( dExp, dObs )
89
90 def test_getIdListFromMatchList( self ):
91 m1 = Match()
92 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
93 m2 = Match()
94 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 10) )
95 lMatch = [ m1, m2 ]
96
97 lExp = [1, 10]
98
99 lObs = MatchUtils.getIdListFromMatchList( lMatch )
100
101 self.assertEquals(lExp, lObs)
102
103 def test_getIdListFromMatchList_empty_list( self ):
104 lMatch = []
105 lExp = []
106
107 lObs = MatchUtils.getIdListFromMatchList( lMatch )
108
109 self.assertEquals(lExp, lObs)
110
111 def test_writeListInFile_without_header( self ):
112 m1 = Match()
113 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
114 m2 = Match()
115 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 10) )
116 lMatch = [ m1, m2 ]
117
118 line1 = "QName\t1\t5\t5\t0.100000\t0.200000\tSName1\t5\t25\t20\t0.150000\t1e-20\t15\t87.200000\t1\n"
119 line2 = "QName\t1\t5\t5\t0.100000\t0.200000\tSName2\t5\t25\t20\t0.150000\t1e-20\t15\t87.200000\t10\n"
120
121 expFileName = "expFileName.match"
122 expFileHandle = open ( expFileName, 'w' )
123 expFileHandle.write(line1)
124 expFileHandle.write(line2)
125 expFileHandle.close()
126
127 obsFileName = "obsFileName.match"
128
129 MatchUtils.writeListInFile( lMatch, obsFileName )
130
131 self.assertTrue( FileUtils.are2FilesIdentical( expFileName, obsFileName ) )
132
133 os.remove( obsFileName )
134 os.remove( expFileName )
135
136 def test_writeListInFile_with_header( self ):
137 m1 = Match()
138 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
139 m2 = Match()
140 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 10) )
141 lMatch = [ m1, m2 ]
142
143 headerLine = "query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n"
144
145 line1 = headerLine
146 line2 = "QName\t1\t5\t5\t0.100000\t0.200000\tSName1\t5\t25\t20\t0.150000\t1e-20\t15\t87.200000\t1\n"
147 line3 = "QName\t1\t5\t5\t0.100000\t0.200000\tSName2\t5\t25\t20\t0.150000\t1e-20\t15\t87.200000\t10\n"
148
149 expFileName = "expFileName.match"
150 expFileHandle = open ( expFileName, 'w' )
151 expFileHandle.write(line1)
152 expFileHandle.write(line2)
153 expFileHandle.write(line3)
154 expFileHandle.close()
155
156 obsFileName = "obsFileName.match"
157
158 MatchUtils.writeListInFile( lMatch, obsFileName, header=headerLine )
159
160 self.assertTrue( FileUtils.are2FilesIdentical( expFileName, obsFileName ) )
161
162 os.remove( obsFileName )
163 os.remove( expFileName )
164
165 def test_writeListInFile_with_append_mode( self ):
166 m1 = Match()
167 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName1", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
168 m2 = Match()
169 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 10) )
170 lMatch = [ m1, m2 ]
171
172 line1 = "QName\t1\t5\t5\t0.100000\t0.200000\tSName1\t5\t25\t20\t0.150000\t1e-20\t15\t87.200000\t1\n"
173 line2 = "QName\t1\t5\t5\t0.100000\t0.200000\tSName2\t5\t25\t20\t0.150000\t1e-20\t15\t87.200000\t10\n"
174
175 expFileName = "expFileName.match"
176 expFileHandle = open ( expFileName, 'w' )
177 expFileHandle.write(line1)
178 expFileHandle.write(line1)
179 expFileHandle.write(line2)
180 expFileHandle.close()
181
182 obsFileName = "obsFileName.match"
183 obsFileHandle = open ( obsFileName, 'w' )
184 obsFileHandle.write(line1)
185 obsFileHandle.close()
186
187 MatchUtils.writeListInFile( lMatch, obsFileName, 'a' )
188
189 self.assertTrue( FileUtils.are2FilesIdentical( expFileName, obsFileName ) )
190
191 os.remove( obsFileName )
192 os.remove( expFileName )
193
194 def test_rmvDuplicateMatches(self):
195 m1 = Match()
196 m1.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
197 m2 = Match()
198 m2.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName2", 5, 25, 20, 0.15, 1e-20, 15, 86.2, 1) )
199 m3 = Match()
200 m3.setFromTuple( ("QName", 1, 5, 5, 0.1, 0.2, "SName", 5, 25, 20, 0.15, 1e-20, 15, 87.2, 1) )
201 lMatch = [ m1, m3, m2 ]
202
203 lExp = [m1, m2]
204 lObs = MatchUtils.rmvDuplicateMatches(lMatch)
205
206 self.assertEquals(lExp, lObs)
207
208 def test_filterDiffQrySbj_same_seq(self):
209 fastaFileName = "file.fa"
210 self._writeFastaFile(fastaFileName)
211 qryDB = BioseqDB(fastaFileName)
212 tabFileName = "file.tab"
213 self._writeMatchFile(tabFileName)
214
215 expListToKeep = ["HELITRON2"]
216 obsListToKeep = MatchUtils.filterDiffQrySbj(qryDB,tabFileName, 0.95, 0.98, 2)
217 self.assertEquals(expListToKeep, obsListToKeep)
218 os.remove(fastaFileName)
219 os.remove(tabFileName)
220
221 def test_filterDiffQrySbj_TE_included_in_67percent_in_other_TE(self):
222 fastaFileName = "file.fa"
223 self._writeFastaFile2(fastaFileName)
224 qryDB = BioseqDB(fastaFileName)
225 tabFileName = "file.tab"
226 self._writeMatchFile2(tabFileName)
227 expListToKeep = []
228 obsListToKeep = MatchUtils.filterDiffQrySbj(qryDB, tabFileName, 0.95, 0.98, 2)
229 self.assertEquals(expListToKeep, obsListToKeep)
230 os.remove(fastaFileName)
231 os.remove(tabFileName)
232
233 def test_getNbDistinctSequencesInsideMatchesWithThresh_query(self):
234 tabFileName = "file.tab"
235 self._writeMatchFile3(tabFileName)
236 lMatches = MatchUtils.getMatchListFromFile(tabFileName)
237 expNbDistinctMatches = 1
238 obsNbDistinctMatches = MatchUtils.getNbDistinctSequencesInsideMatchesWithThresh(lMatches,0.95, 0.98,"query")
239 self.assertEquals(expNbDistinctMatches, obsNbDistinctMatches)
240 os.remove(tabFileName)
241
242 def test_getNbDistinctSequencesInsideMatchesWithThresh_subject(self):
243 tabFileName = "file.tab"
244 self._writeMatchFile3(tabFileName)
245 lMatches = MatchUtils.getMatchListFromFile(tabFileName)
246 expNbDistinctMatches = 1
247 obsNbDistinctMatches = MatchUtils.getNbDistinctSequencesInsideMatchesWithThresh(lMatches,0.95, 0.98,"subject")
248 self.assertEquals(expNbDistinctMatches, obsNbDistinctMatches)
249 os.remove(tabFileName)
250
251 def test_convertMatchFileToAlignFile(self):
252 inputMatchFileName = "file.tab"
253 expAlignFileName = "expected.align"
254 obsAlignFileName = "file.align"
255
256 self._writeExpAlignFile(expAlignFileName)
257 self._writeMatchFile4(inputMatchFileName)
258 MatchUtils.convertMatchFileToAlignFile(inputMatchFileName)
259
260 self.assertTrue(FileUtils.are2FilesIdentical(expAlignFileName, obsAlignFileName))
261
262 os.remove(inputMatchFileName)
263 os.remove(expAlignFileName)
264 os.remove(obsAlignFileName)
265
266 def test_convertMatchFileToAlignFile_empty_file(self):
267 inputMatchFileName = "file.tab"
268 expAlignFileName = "expected.align"
269 obsAlignFileName = "file.align"
270
271 f = open(expAlignFileName, "w")
272 f.close()
273 f = open(inputMatchFileName, "w")
274 f.close()
275 MatchUtils.convertMatchFileToAlignFile(inputMatchFileName)
276
277 self.assertTrue(FileUtils.are2FilesIdentical(expAlignFileName, obsAlignFileName))
278
279 os.remove(inputMatchFileName)
280 os.remove(expAlignFileName)
281 os.remove(obsAlignFileName)
282
283 def test_generateMatchFileWithNewPathId(self):
284 inputMatchFileName = "file.tab"
285 expMatchFileName = "expected.tab"
286 obsMatchFileName = "obsFile.tab"
287
288 self._writeMatchFile5(inputMatchFileName)
289 self._writeExpMatchFile(expMatchFileName)
290 MatchUtils.generateMatchFileWithNewPathId(inputMatchFileName, obsMatchFileName)
291
292 self.assertTrue(FileUtils.are2FilesIdentical(expMatchFileName, obsMatchFileName))
293
294 os.remove(inputMatchFileName)
295 os.remove(expMatchFileName)
296 os.remove(obsMatchFileName)
297
298 def test_generateMatchFileWithNewPathId_empty_file(self):
299 inputMatchFileName = "file.tab"
300 expMatchFileName = "expected.tab"
301 obsMatchFileName = "obsFile.tab"
302
303 f = open(expMatchFileName, "w")
304 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
305 f.close()
306 f = open(inputMatchFileName, "w")
307 f.close()
308 MatchUtils.generateMatchFileWithNewPathId(inputMatchFileName, obsMatchFileName)
309
310 self.assertTrue(FileUtils.are2FilesIdentical(expMatchFileName, obsMatchFileName))
311
312 os.remove(inputMatchFileName)
313 os.remove(expMatchFileName)
314 os.remove(obsMatchFileName)
315
316 def test_convertMatchFileIntoABCFileOnQueryCoverage(self):
317 matchFileName = "dummy.tab"
318 with open(matchFileName, "w") as f:
319 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
320 f.write("chr3\t1\t100\t100\t0.98\t0.95\tchr5\t11\t110\t100\t0.95\t1e-52\t133\t87.200000\n")
321 f.write("chr7\t1\t200\t200\t0.98\t0.95\tchr2\t11\t210\t200\t0.95\t1e-78\t235\t98.900000\n")
322 f.write("chr5\t1\t100\t100\t0.95\t0.95\tchr3\t11\t110\t100\t0.98\t1e-52\t133\t87.200000\n")
323 f.write("chr2\t1\t200\t200\t0.95\t0.95\tchr7\t11\t210\t200\t0.98\t1e-78\t235\t98.900000\n")
324 expFileName = "exp.abc"
325 with open(expFileName, "w") as f:
326 f.write("chr3\tchr5\t0.98\n")
327 f.write("chr7\tchr2\t0.98\n")
328 f.write("chr5\tchr3\t0.95\n")
329 f.write("chr2\tchr7\t0.95\n")
330 obsFileName = "obs.abc"
331
332 MatchUtils.convertMatchFileIntoABCFileOnQueryCoverage(matchFileName, obsFileName)
333
334 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
335
336 os.remove(matchFileName)
337 os.remove(expFileName)
338 os.remove(obsFileName)
339
340 def test_convertMatchFileIntoABCFileOnQueryCoverage_coverage_threshold_85(self):
341 matchFileName = "dummy.tab"
342 with open(matchFileName, "w") as f:
343 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
344 f.write("chr3\t1\t100\t100\t0.98\t0.95\tchr5\t11\t110\t100\t0.95\t1e-52\t133\t87.200000\n")
345 f.write("chr7\t1\t200\t200\t0.98\t0.95\tchr2\t11\t210\t200\t0.95\t1e-78\t235\t98.900000\n")
346 f.write("chr5\t1\t100\t100\t0.85\t0.95\tchr3\t11\t110\t100\t0.98\t1e-52\t133\t87.200000\n")
347 f.write("chr2\t1\t200\t200\t0.80\t0.95\tchr7\t11\t210\t200\t0.98\t1e-78\t235\t98.900000\n")
348 expFileName = "exp.abc"
349 with open(expFileName, "w") as f:
350 f.write("chr3\tchr5\t0.98\n")
351 f.write("chr7\tchr2\t0.98\n")
352 f.write("chr5\tchr3\t0.85\n")
353 obsFileName = "obs.abc"
354
355 MatchUtils.convertMatchFileIntoABCFileOnQueryCoverage(matchFileName, obsFileName, coverage = 0.85)
356
357 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
358
359 os.remove(matchFileName)
360 os.remove(expFileName)
361 os.remove(obsFileName)
362
363 def _writeFastaFile(self, fileName):
364 f = open(fileName, "w")
365 f.write(">HELITRON3\n")
366 f.write("GGCCAGTCACAATGGGGGTTTCACTGGTGTGTCATGCACATTTAATAGGGGTAAGACTGA\n")
367 f.write("ATAAAAAATGATTATTTGCATGAAATGGGGATGAGAGAGAAGGAAAGAGTTTCATCCTGG\n")
368 f.write("GATTCGTTTCATTCACCGGATCTCTTGCGTCCGCCTCCGCCGTGCGACCTCCGCATTCTC\n")
369 f.write(">HELITRON2\n")
370 f.write("GGCCAGTCACAATGGGGGTTTCACTGGTGTGTCATGCACATTTAATAGGGGTAAGACTGA\n")
371 f.write("ATAAAAAATGATTATTTGCATGAAATGGGGATGAGAGAGAAGGAAAGAGTTTCATCCTGG\n")
372 f.write("GATTCGTTTCATTCACCGGATCTCTTGCGTCCGCCTCCGCCGTGCGACCTCCGCATTCTC\n")
373 f.close()
374
375 def _writeMatchFile(self, fileName):
376 f = open(fileName, "w")
377 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
378 f.write("HELITRON3\t1\t180\t180\t1\t1\tHELITRON2\t1\t180\t180\t1\t2e-103\t357\t100\t1\n")
379 f.close()
380
381 def _writeFastaFile2(self, fileName):
382 f = open(fileName, "w")
383 f.write(">header2\n")
384 f.write("TTTCACTGGTGTGTCATGCACATTTAATAGGGGTAAGACTGAATAAAAAATGATTATTTG\n")
385 f.write("CATGAAATGGGGATGAGAGAGAAGGAAAGAGTTTCATCCTGGGATTCGTTTCATTCACCG\n")
386 f.close()
387
388 def _writeMatchFile2(self, fileName):
389 f = open(fileName, "w")
390 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
391 f.write("header2\t1\t120\t120\t1\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100\t1\n")
392 f.close()
393
394 def _writeMatchFile3(self, fileName):
395 f = open(fileName, "w")
396 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
397 f.write("header2\t1\t120\t120\t0.674157\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100\t1\n")
398 f.write("header3\t1\t120\t120\t0.99\t0.994157\tBS31790\t19\t138\t120\t0.994157\t3e-68\t238\t100\t1\n")
399 f.write("header4\t1\t120\t120\t1\t0.94157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t67\t1\n")
400 f.close()
401
402 def _writeMatchFile4(self, fileName):
403 f = open(fileName, "w")
404 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
405 f.write("header2\t1\t120\t120\t0.674157\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100\t1\n")
406 f.write("header3\t120\t220\t120\t0.99\t0.994157\tBS31790\t19\t138\t120\t0.994157\t3e-65\t238\t100\t1\n")
407 f.write("header4\t1\t120\t120\t1\t0.94157\tBS31790\t19\t138\t120\t0.674157\t3e-67\t244\t90\t1\n")
408 f.close()
409
410 def _writeExpAlignFile(self,fileName):
411 f = open(fileName, "w")
412 f.write("header2\t1\t120\tBS31790\t19\t138\t3e-68\t238.0\t100.0\n")
413 f.write("header3\t120\t220\tBS31790\t19\t138\t3e-65\t238.0\t100.0\n")
414 f.write("header4\t1\t120\tBS31790\t19\t138\t3e-67\t244.0\t90.0\n")
415 f.close()
416
417 def _writeMatchFile5(self,fileName):
418 f = open(fileName, "w")
419 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
420 f.write("header2\t1\t120\t120\t0.674157\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100\t1\n")
421 f.write("header2\t124\t144\t120\t0.674157\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100\t1\n")
422 f.write("header3\t120\t220\t120\t0.99\t0.994157\tBS31790\t19\t138\t120\t0.994157\t3e-65\t238\t100\t1\n")
423 f.write("header4\t1\t120\t120\t1\t0.94157\tBS31790\t19\t138\t120\t0.674157\t3e-67\t244\t90\t1\n")
424 f.close()
425
426 def _writeExpMatchFile(self,fileName):
427 f = open(fileName, "w")
428 f.write("query.name\tquery.start\tquery.end\tquery.length\tquery.length.%\tmatch.length.%\tsubject.name\tsubject.start\tsubject.end\tsubject.length\tsubject.length.%\tE.value\tScore\tIdentity\tpath\n")
429 f.write("header2\t1\t120\t120\t0.674157\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100.000000\t1\n")
430 f.write("header2\t124\t144\t120\t0.674157\t0.674157\tBS31790\t19\t138\t120\t0.674157\t3e-68\t238\t100.000000\t1\n")
431 f.write("header3\t120\t220\t120\t0.990000\t0.994157\tBS31790\t19\t138\t120\t0.994157\t3e-65\t238\t100.000000\t2\n")
432 f.write("header4\t1\t120\t120\t1.000000\t0.941570\tBS31790\t19\t138\t120\t0.674157\t3e-67\t244\t90.000000\t3\n")
433 f.close()
434
435
436 test_suite = unittest.TestSuite()
437 test_suite.addTest( unittest.makeSuite( Test_MatchUtils ) )
438 if __name__ == "__main__":
439 unittest.TextTestRunner(verbosity=2).run( test_suite )