6
|
1 import unittest
|
|
2 import os
|
|
3 import time
|
|
4 from SMART.Java.Python.misc import Utils
|
|
5 from SMART.Java.Python.ncList.test.MockFindOverlaps_randomExample import *
|
|
6 from SMART.Java.Python.ncList.FindOverlaps_naif import FindOverlaps_naif
|
|
7 from SMART.Java.Python.FindOverlapsOptim import FindOverlapsOptim
|
|
8
|
|
9 class Test_FindOverlaps_randomExample(unittest.TestCase):
|
|
10
|
|
11 def setUp(self):
|
|
12 self._output_naif = 'output_naif.gff3'
|
|
13 self._outputOptim = 'outputOptim.gff3'
|
|
14
|
|
15
|
|
16 def tearDown(self):
|
|
17 return
|
|
18 os.remove(self._output_naif)
|
|
19 os.remove(self._outputOptim)
|
|
20
|
|
21 def test_run_smallSize(self):
|
|
22 inputRefGff3FileName = 'ref_small.gff3'
|
|
23 numberOfReads = 10
|
|
24 chromSize = 1000
|
|
25 iMFO_rand = MockFindOverlaps_randomExample(inputRefGff3FileName, 'reference', numberOfReads, chromSize)
|
|
26 iMFO_rand.write()
|
|
27
|
|
28 inputQueryGff3FileName = 'query_small.gff3'
|
|
29 iMFO_rand = MockFindOverlaps_randomExample(inputQueryGff3FileName,'query', 10, 1000)
|
|
30 iMFO_rand.write()
|
|
31
|
|
32 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
|
|
33 iFON.setOutputGff3FileName(self._output_naif)
|
|
34 iFOO = FindOverlapsOptim(0)
|
|
35 iFOO.setRefFileName(inputRefGff3FileName, "gff3")
|
|
36 iFOO.setQueryFileName(inputQueryGff3FileName, "gff3")
|
|
37 iFOO.setOutputFileName(self._outputOptim)
|
|
38 iFOO.prepareIntermediateFiles()
|
|
39 iFOO.createNCLists()
|
|
40
|
|
41 startTime_naif = time.time()
|
|
42 iFON.run()
|
|
43 iFON.close()
|
|
44 endTime_naif = time.time()
|
|
45 totalTime_naif = endTime_naif - startTime_naif
|
|
46 print 'for naive algo, we take %e second' % (totalTime_naif)
|
|
47
|
|
48 startTimeOptim = time.time()
|
|
49 iFOO.compare()
|
|
50 endTimeOptim = time.time()
|
|
51 totalTimeOptim = endTimeOptim - startTimeOptim
|
|
52 print 'for optim algo, we take %e second' % (totalTimeOptim)
|
|
53 iFOO.close()
|
|
54
|
|
55 self.assertTrue(Utils.diff(self._output_naif, self._outputOptim))
|
|
56
|
|
57 os.remove(inputRefGff3FileName)
|
|
58 os.remove(inputQueryGff3FileName)
|
|
59
|
|
60
|
|
61 def test_creatRandomExampleWithMOverlaps_smallSize(self):
|
|
62 inputRefGff3FileName = 'refMOverlaps_small.gff3'
|
|
63 inputQueryGff3FileName = 'queryMOverlaps_small.gff3'
|
|
64 numberOfReads = 10
|
|
65 chromSize = 1000
|
|
66 iRMSS = MockFindOverlaps_randomExample_MOverlaps(inputRefGff3FileName, inputQueryGff3FileName, 7, numberOfReads, chromSize)
|
|
67 iRMSS.createRandomExample()
|
|
68
|
|
69
|
|
70 iFON = FindOverlaps_naif(inputRefGff3FileName, inputQueryGff3FileName)
|
|
71 iFON.setOutputGff3FileName(self._output_naif)
|
|
72 iFOO = FindOverlapsOptim(0)
|
|
73 iFOO.setRefFileName(inputRefGff3FileName, "gff3")
|
|
74 iFOO.setQueryFileName(inputQueryGff3FileName, "gff3")
|
|
75 iFOO.setOutputFileName(self._outputOptim)
|
|
76 iFOO.prepareIntermediateFiles()
|
|
77 iFOO.createNCLists()
|
|
78
|
|
79 startTime_naif = time.time()
|
|
80 iFON.run()
|
|
81 endTime_naif = time.time()
|
|
82 totalTime_naif = endTime_naif - startTime_naif
|
|
83 print 'for naive algo, we take %e second' % (totalTime_naif)
|
|
84 iFON.close()
|
|
85
|
|
86 startTimeOptim = time.time()
|
|
87 iFOO.compare()
|
|
88 endTimeOptim = time.time()
|
|
89 totalTimeOptim = endTimeOptim - startTimeOptim
|
|
90 print 'for optim algo, we take %e second' % (totalTimeOptim)
|
|
91 iFOO.close()
|
|
92
|
|
93 self.assertTrue(Utils.diff(self._output_naif, self._outputOptim))
|
|
94
|
|
95 os.remove(inputRefGff3FileName)
|
|
96 os.remove(inputQueryGff3FileName)
|
|
97
|
|
98 if __name__ == "__main__":
|
|
99 unittest.main()
|