comparison SMART/Java/Python/test/Test_FindOverlapsOptim.py @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
comparison
equal deleted inserted replaced
30:5677346472b5 31:0ab839023fe4
1 import unittest
2 import os
3 from SMART.Java.Python.FindOverlapsOptim import FindOverlapsOptim
4 from SMART.Java.Python.ncList.NCListCursor import NCListCursor
5 from SMART.Java.Python.ncList.test.MockFindOverlapsWithSeveralIntervals import *
6
7 REFERENCE = 0
8 QUERY = 1
9
10 class Test_FindOverlapsOptim(unittest.TestCase):
11
12 def setUp(self):
13 self._inputRefGff3FileName = 'sorted_Ref.gff3'
14 self._inputQueryGff3FileName = 'sorted_Query.gff3'
15 self._writeQueryGff3File(self._inputQueryGff3FileName)
16 self._outputGff3FileName = 'overlaps.gff3'
17 iMock = MockFindOverlapsWithServeralIntervals_case1()
18 iMock.write(self._inputRefGff3FileName)
19 self._iFOO = FindOverlapsOptim(0)
20 self._iFOO.setRefFileName(self._inputRefGff3FileName, "gff3")
21 self._iFOO.setQueryFileName(self._inputQueryGff3FileName, "gff3")
22 self._iFOO.setOutputFileName(self._outputGff3FileName)
23 self._iFOO.prepareIntermediateFiles()
24 self._iFOO.createNCLists()
25 self._queryNcList = self._iFOO._ncLists[QUERY]["chr1"]
26 self._refNcList = self._iFOO._ncLists[REFERENCE]["chr1"]
27
28 def tearDown(self):
29 os.remove(self._inputRefGff3FileName)
30 os.remove(self._inputQueryGff3FileName)
31 os.remove(self._outputGff3FileName)
32
33 def test_isOverlapping_true(self):
34 queryCursor = NCListCursor(None, self._queryNcList, 5, 0)
35 refCursor = NCListCursor(None, self._refNcList, 4, 0)
36 obs = self._iFOO.isOverlapping(queryCursor, refCursor)
37 exp = 0
38 self.assertEquals(exp, obs)
39
40 def test_isOverlapping_false_left(self):
41 queryCursor = NCListCursor(None, self._queryNcList, 5, 0)
42 refCursor = NCListCursor(None, self._refNcList, 2, 0)
43 obs = self._iFOO.isOverlapping(queryCursor, refCursor)
44 exp = -1
45 self.assertEquals(exp, obs)
46
47 def test_isOverlapping_false_right(self):
48 queryCursor = NCListCursor(None, self._queryNcList, 5, 0)
49 refCursor = NCListCursor(None, self._refNcList, 1, 0)
50 obs = self._iFOO.isOverlapping(queryCursor, refCursor)
51 exp = 1
52 self.assertEquals(exp, obs)
53
54 def test_isLastElement_true(self):
55 refCursor = NCListCursor(None, self._refNcList, 4, 0)
56 obsBool = refCursor.isLast()
57 expBool = True
58 self.assertEquals(expBool, obsBool)
59
60 def test_isLastElement_false(self):
61 refCursor = NCListCursor(None, self._refNcList, 3, 0)
62 obsBool = refCursor.isLast()
63 expBool = False
64 self.assertEquals(expBool, obsBool)
65
66 def test_isLastElement_highestLevel_true(self):
67 refCursor = NCListCursor(None, self._refNcList, 1, 0)
68 obsBool = refCursor.isLast()
69 expBool = True
70 self.assertEquals(expBool, obsBool)
71
72 def test_isLastElement_highestLevel_false(self):
73 refCursor = NCListCursor(None, self._refNcList, 0, 0)
74 obsBool = refCursor.isLast()
75 expBool = False
76 self.assertEquals(expBool, obsBool)
77
78 def test_findOverlapIter(self):
79 queryCursor = NCListCursor(None, self._queryNcList, 2, 0)
80 refCursor = NCListCursor(None, self._refNcList, 0, 0)
81 queryTranscript = queryCursor.getTranscript()
82 done = False
83 (cursor, done, empty) = self._iFOO.findOverlapIter(queryTranscript, refCursor, done)
84 obsFirstOverlapLAddr = (cursor._lIndex, done, empty)
85 expFirstOverlapLAddr = 4, True, False
86 self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr)
87
88 def test_not_findOverlapIter(self):
89 queryCursor = NCListCursor(None, self._queryNcList, 4, 0)
90 refCursor = NCListCursor(None, self._refNcList, 1, 0)
91 queryTranscript = queryCursor.getTranscript()
92 done = False
93 (cursor, done, empty) = self._iFOO.findOverlapIter(queryTranscript, refCursor, done)
94 obsFirstOverlapLAddr = (cursor._lIndex, done, empty)
95 expFirstOverlapLAddr = -1, False, True
96 self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr)
97
98 def test_findOverlapIter_not_the_first_RefOverlap(self):
99 queryCursor = NCListCursor(None, self._queryNcList, 3, 0)
100 refCursor = NCListCursor(None, self._refNcList, 4, 0)
101 queryTranscript = queryCursor.getTranscript()
102 done = True
103 (cursor, done, empty) = self._iFOO.findOverlapIter(queryTranscript, refCursor, done)
104 obsFirstOverlapLAddr = (cursor._lIndex, done, empty)
105 expFirstOverlapLAddr = 1, True, False
106 self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr)
107
108 def test_moveDown(self):
109 refCursor = NCListCursor(None, self._refNcList, 0, 0)
110 refCursor.moveDown()
111 expFirstChildLAddr = 2
112 self.assertEquals(expFirstChildLAddr, refCursor._lIndex)
113
114 def test_moveUp(self):
115 refCursor = NCListCursor(None, self._refNcList, 4, 0)
116 refCursor.moveUp()
117 expFirstChildLAddr = 0
118 self.assertEquals(expFirstChildLAddr, refCursor._lIndex)
119
120 def test_moveRight(self):
121 refCursor = NCListCursor(None, self._refNcList, 3, 0)
122 refCursor.moveRight()
123 expFirstChildLAddr = 4
124 self.assertEquals(expFirstChildLAddr, refCursor._lIndex)
125
126 def test_moveNext(self):
127 refCursor = NCListCursor(None, self._refNcList, 6, 0)
128 refCursor.moveNext()
129 expFirstChildLAddr = 1
130 self.assertEquals(expFirstChildLAddr, refCursor._lIndex)
131
132 def test_not_findOverlapIter_between2RefIntervals(self):
133 inputQueryGff3FileName = 'query2.gff3'
134 self._writeQueryGff3File2(inputQueryGff3FileName)
135 self._outputGff3FileName = 'overlaps.gff3'
136 iMock = MockFindOverlapsWithServeralIntervals_case1()
137 iMock.write(self._inputRefGff3FileName)
138 _iFOO = FindOverlapsOptim(0)
139 _iFOO.setRefFileName(self._inputRefGff3FileName, "gff3")
140 _iFOO.setQueryFileName(inputQueryGff3FileName, "gff3")
141 _iFOO.setOutputFileName(self._outputGff3FileName)
142 _iFOO.prepareIntermediateFiles()
143 _iFOO.createNCLists()
144 _queryNcList = _iFOO._ncLists[QUERY]["chr1"]
145 _refNcList = _iFOO._ncLists[REFERENCE]["chr1"]
146 queryCursor = NCListCursor(None, _queryNcList, 0, 0)
147 refCursor = NCListCursor(None, _refNcList, 0, 0)
148 queryTranscript = queryCursor.getTranscript()
149 done = True
150 (cursor, done, empty) = _iFOO.findOverlapIter(queryTranscript, refCursor, done)
151 lIndex = cursor._lIndex
152 obsFirstOverlapLAddr = (lIndex, done, empty)
153 expFirstOverlapLAddr = 1, False, True
154 self.assertEquals(expFirstOverlapLAddr, obsFirstOverlapLAddr)
155 os.remove(inputQueryGff3FileName)
156
157 def _writeQueryGff3File2(self, fileName):
158 f = open(fileName, 'w')
159 f.write("chr1\tquery\ttest1\t1100\t1150\t126\t+\t.\tID=test1.1;Name=test1.1\n")
160 f.write("chr1\tquery\ttest2\t1250\t1300\t781\t+\t.\tID=test1.2;Name=test1.2\n")
161 f.close()
162
163 def _writeQueryGff3File(self, fileName):
164 f = open(fileName, 'w')
165 f.write("chr1\tquery\ttest1.1\t25\t150\t126\t+\t.\tID=test1.1;Name=test1.1\n")
166 f.write("chr1\tquery\ttest1.2\t70\t850\t781\t+\t.\tID=test1.2;Name=test1.2\n")
167 f.write("chr1\tquery\ttest1.3\t550\t850\t201\t+\t.\tID=test1.3;Name=test1.3\n")
168 f.write("chr1\tquery\ttest1.4\t925\t1025\t101\t+\t.\tID=test1.4;Name=test1.4\n")
169 f.write("chr1\tquery\ttest1.5\t1201\t1210\t10\t+\t.\tID=test1.5;Name=test1.5\n")
170 f.write("chr1\tquery\ttest1.6\t1500\t1600\t101\t+\t.\tID=test1.6;Name=test1.6\n")
171 f.close()
172
173 if __name__ == "__main__":
174 unittest.main()