Mercurial > repos > yufei-luo > s_mart
comparison SMART/Java/Python/ncList/test/Test_F_NCList.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 import os | |
2 import unittest | |
3 import struct | |
4 from SMART.Java.Python.ncList.NCList import NCList | |
5 from SMART.Java.Python.misc import Utils | |
6 from commons.core.utils.FileUtils import FileUtils | |
7 from SMART.Java.Python.ncList.test.MockFindOverlapsWithSeveralIntervals import * | |
8 from commons.core.parsing.GffParser import GffParser | |
9 from SMART.Java.Python.ncList.FileSorter import FileSorter | |
10 | |
11 class Test_F_NCList(unittest.TestCase): | |
12 | |
13 def setUp(self): | |
14 self._inputGff3FileName = 'sortedFile.gff3' | |
15 self._sortedFileName = 'sortedFile.pkl' | |
16 self._expHFileName = 'expH.bin' | |
17 self._expLFileName = 'expL.bin' | |
18 self._obsHFileName = 'H.bin' | |
19 self._obsLFileName = 'L.bin' | |
20 self._addressFileName = 'address.txt' | |
21 self._writeGFF3File(self._inputGff3FileName) | |
22 self._ncList = NCList(0) | |
23 self._ncList.setChromosome("chr1") | |
24 | |
25 def tearDown(self): | |
26 return | |
27 for fileName in (self._inputGff3FileName, self._sortedFileName, self._expHFileName, self._expLFileName, self._obsHFileName, self._obsLFileName, self._addressFileName): | |
28 if os.path.exists(fileName): | |
29 os.remove(fileName) | |
30 | |
31 def _sortAndBuild(self): | |
32 parser = GffParser(self._inputGff3FileName) | |
33 fs = FileSorter(parser, 0) | |
34 fs.setOutputFileName(self._sortedFileName) | |
35 fs.sort() | |
36 self._ncList.setFileName(self._sortedFileName) | |
37 self._ncList.setNbElements(parser.getNbTranscripts()) | |
38 self._ncList.buildLists() | |
39 | |
40 def test_run_with_one_elementSubList(self): | |
41 iMock = MockFindOverlapsWithOneInterval() | |
42 iMock.write(self._inputGff3FileName) | |
43 self._sortAndBuild() | |
44 self._writeExpHFile_one_elementSubList() | |
45 self._writeExpLFile_one_elementSubList() | |
46 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
47 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
48 | |
49 def test_case1(self): | |
50 iMock = MockFindOverlapsWithServeralIntervals_case1() | |
51 iMock.write(self._inputGff3FileName) | |
52 self._sortAndBuild() | |
53 self._writeExpHFileCase1() | |
54 self._writeExpLFileCase1() | |
55 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
56 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
57 | |
58 def test_case2(self): | |
59 iMock = MockFindOverlapsWithServeralIntervals_case2() | |
60 iMock.write(self._inputGff3FileName) | |
61 self._sortAndBuild() | |
62 self._writeExpHFileCase2() | |
63 self._writeExpLFileCase2() | |
64 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
65 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
66 | |
67 def test_case3(self): | |
68 iMock = MockFindOverlapsWithServeralIntervals_case3() | |
69 iMock.write(self._inputGff3FileName) | |
70 self._sortAndBuild() | |
71 self._writeExpHFileCase3() | |
72 self._writeExpLFileCase3() | |
73 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
74 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
75 | |
76 def test_case4_5(self): | |
77 iMock = MockFindOverlapsWithServeralIntervals_case4_5() | |
78 iMock.write(self._inputGff3FileName) | |
79 self._sortAndBuild() | |
80 self._writeExpHFileCase4_5() | |
81 self._writeExpLFileCase4_5() | |
82 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
83 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
84 | |
85 def test_case6_7(self): | |
86 iMock = MockFindOverlapsWithServeralIntervals_case6_7() | |
87 iMock.write(self._inputGff3FileName) | |
88 self._sortAndBuild() | |
89 self._writeExpHFileCase6_7() | |
90 self._writeExpLFileCase6_7() | |
91 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
92 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
93 | |
94 def test_case8(self): | |
95 iMock = MockFindOverlapsWithServeralIntervals_case8() | |
96 iMock.write(self._inputGff3FileName) | |
97 self._sortAndBuild() | |
98 self._writeExpHFileCase8() | |
99 self._writeExpLFileCase8() | |
100 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
101 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
102 | |
103 def test_case9(self): | |
104 iMock = MockFindOverlapsWithServeralIntervals_case9() | |
105 iMock.write(self._inputGff3FileName) | |
106 self._sortAndBuild() | |
107 self._writeExpHFileCase9() | |
108 self._writeExpLFileCase9() | |
109 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
110 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
111 | |
112 def test_case10(self): | |
113 iMock = MockFindOverlapsWithServeralIntervals_case10() | |
114 iMock.write(self._inputGff3FileName) | |
115 self._sortAndBuild() | |
116 self._writeExpHFileCase10() | |
117 self._writeExpLFileCase10() | |
118 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
119 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
120 | |
121 def test_case11(self): | |
122 iMock = MockFindOverlapsWithServeralIntervals_case11() | |
123 iMock.write(self._inputGff3FileName) | |
124 self._sortAndBuild() | |
125 self._writeExpHFileCase11() | |
126 self._writeExpLFileCase11() | |
127 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
128 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
129 | |
130 def test_case12(self): | |
131 iMock = MockFindOverlapsWithServeralIntervals_case12() | |
132 iMock.write(self._inputGff3FileName) | |
133 self._sortAndBuild() | |
134 self._writeExpHFileCase12() | |
135 self._writeExpLFileCase12() | |
136 self.assertTrue(FileUtils.are2FilesIdentical(self._expHFileName, self._ncList._hFileName)) | |
137 self.assertTrue(FileUtils.are2FilesIdentical(self._expLFileName, self._ncList._lFileName)) | |
138 | |
139 def _writeGFF3File(self, fileName): | |
140 f = open(fileName, "w") | |
141 f.write("chr1\ttest\ttest2.1\t9\t1000\t1001\t+\t.\tID=test2.1;Name=test2.1\n") | |
142 f.write("chr1\ttest\ttest2.2\t50\t350\t301\t+\t.\tID=test2.2;Name=test2.2\n") | |
143 f.write("chr1\ttest\ttest2.3\t100\t600\t501\t+\t.\tID=test2.3;Name=test2.3\n") | |
144 f.write("chr1\ttest\ttest2.4\t200\t450\t251\t+\t.\tID=test2.4;Name=test2.4\n") | |
145 f.write("chr1\ttest\ttest2.5\t700\t950\t251\t+\t.\tID=test2.5;Name=test2.5\n") | |
146 f.write("chr1\ttest\ttest2.6\t800\t900\t101\t+\t.\tID=test2.6;Name=test2.6\n") | |
147 f.write("chr1\ttest\ttest2.7\t1200\t1300\t101\t+\t.\tID=test2.7;Name=test2.7\n") | |
148 f.close() | |
149 | |
150 def _writeBinFile(self, fileName, elements): | |
151 handle = open(fileName, "wb") | |
152 for element in elements: | |
153 handle.write(struct.pack('l', element)) | |
154 handle.close() | |
155 | |
156 def _writeExpHFile(self, HFileName): | |
157 list = [0, 2, 48, 3, -1, -1, -1, -1, 120, 1, 144, 1, -1, -1, -1, -1] | |
158 H = open(HFileName, 'wb') | |
159 | |
160 for item in list: | |
161 item = struct.pack('l', item) | |
162 H.write(item) | |
163 H.close() | |
164 | |
165 def _writeExpHFile_with_empty_SubParentDict(self, HFileName): | |
166 list = [0, 1, -1, -1] | |
167 H = open(HFileName, 'wb') | |
168 | |
169 for item in list: | |
170 item = struct.pack('l', item) | |
171 H.write(item) | |
172 H.close() | |
173 | |
174 def _writeExpHFile_one_elementSubList(self): | |
175 elements = [0, 1] | |
176 self._writeBinFile(self._expHFileName, elements) | |
177 | |
178 def _writeExpHFileCase1(self): | |
179 elements = [0, 2, 2, 3, 5, 1, 6, 1] | |
180 self._writeBinFile(self._expHFileName, elements) | |
181 | |
182 def _writeExpHFileCase2(self): | |
183 elements = [0, 2, 2, 1, 3, 1, 4, 1] | |
184 self._writeBinFile(self._expHFileName, elements) | |
185 | |
186 def _writeExpHFileCase3(self): | |
187 elements = [0, 2, 2, 1, 3, 1, 4, 2] | |
188 self._writeBinFile(self._expHFileName, elements) | |
189 | |
190 def _writeExpHFileCase4_5(self): | |
191 elements = [0, 1, 1, 1, 2, 1] | |
192 self._writeBinFile(self._expHFileName, elements) | |
193 | |
194 def _writeExpHFileCase6_7(self): | |
195 elements = [0, 1, 1, 4] | |
196 self._writeBinFile(self._expHFileName, elements) | |
197 | |
198 def _writeExpHFileCase8(self): | |
199 elements = [0, 1, 1, 2] | |
200 self._writeBinFile(self._expHFileName, elements) | |
201 | |
202 def _writeExpHFileCase9(self): | |
203 elements = [0, 2, 2, 1] | |
204 self._writeBinFile(self._expHFileName, elements) | |
205 | |
206 def _writeExpHFileCase10(self): | |
207 elements = [0, 3, 3, 3] | |
208 self._writeBinFile(self._expHFileName, elements) | |
209 | |
210 def _writeExpHFileCase11(self): | |
211 elements = [0, 2, 2, 2, 4, 2] | |
212 self._writeBinFile(self._expHFileName, elements) | |
213 | |
214 def _writeExpHFileCase12(self): | |
215 elements = [0, 1, 1, 3, 4, 1] | |
216 self._writeBinFile(self._expHFileName, elements) | |
217 | |
218 def _writeExpLFile_one_elementSubList(self): | |
219 elements = [0, 1000, 0, -1, -1] | |
220 self._writeBinFile(self._expLFileName, elements) | |
221 | |
222 def _writeExpLFileCase1(self): | |
223 elements = [ 0, 1000, 0, 1, -1, \ | |
224 1200, 1300, 2345, -1, -1, \ | |
225 50, 350, 391, -1, 0, \ | |
226 100, 600, 781, 2, 0, \ | |
227 700, 950, 1563, 3, 0, \ | |
228 200, 450, 1172, -1, 3, \ | |
229 800, 900, 1954, -1, 4] | |
230 self._writeBinFile(self._expLFileName, elements) | |
231 | |
232 def _writeExpLFileCase2(self): | |
233 elements = [ 0, 500, 0, 1, -1, \ | |
234 900, 1200, 1561, -1, -1, \ | |
235 50, 450, 389, 2, 0, \ | |
236 100, 400, 779, 3, 2, \ | |
237 100, 200, 1170, -1, 3] | |
238 self._writeBinFile(self._expLFileName, elements) | |
239 | |
240 def _writeExpLFileCase3(self): | |
241 elements = [ 0, 500, 0, 1, -1, \ | |
242 800, 1000, 1952, -1, -1, \ | |
243 50, 450, 389, 2, 0, \ | |
244 100, 400, 779, 3, 2, \ | |
245 100, 200, 1170, -1, 3, \ | |
246 300, 400, 1561, -1, 3] | |
247 self._writeBinFile(self._expLFileName, elements) | |
248 | |
249 def _writeExpLFileCase4_5(self): | |
250 elements = [ 0, 1000, 0, 1, -1, \ | |
251 200, 800, 391, 2, 0, \ | |
252 400, 600, 782, -1, 1] | |
253 self._writeBinFile(self._expLFileName, elements) | |
254 | |
255 def _writeExpLFileCase6_7(self): | |
256 elements = [ 0, 1000, 0, 1, -1, \ | |
257 100, 300, 391, -1, 0, \ | |
258 400, 500, 782, -1, 0, \ | |
259 510, 520, 1173, -1, 0, \ | |
260 850, 950, 1563, -1, 0] | |
261 self._writeBinFile(self._expLFileName, elements) | |
262 | |
263 def _writeExpLFileCase8(self): | |
264 elements = [ 0, 1000, 0, 1, -1, \ | |
265 100, 200, 391, -1, 0, \ | |
266 300, 400, 782, -1, 0] | |
267 self._writeBinFile(self._expLFileName, elements) | |
268 | |
269 def _writeExpLFileCase9(self): | |
270 elements = [ 0, 1000, 0, 1, -1, \ | |
271 800, 1200, 782, -1, -1, \ | |
272 600, 700, 391, -1, 0] | |
273 self._writeBinFile(self._expLFileName, elements) | |
274 | |
275 def _writeExpLFileCase10(self): | |
276 elements = [ 0, 1000, 0, 1, -1, \ | |
277 1200, 1300, 1576, -1, -1, \ | |
278 1400, 1500, 1972, -1, -1, \ | |
279 100, 200, 394, -1, 0, \ | |
280 300, 400, 788, -1, 0, \ | |
281 500, 600, 1182, -1, 0] | |
282 self._writeBinFile(self._expLFileName, elements) | |
283 | |
284 def _writeExpLFileCase11(self): | |
285 elements = [ 0, 500, 0, 1, -1, \ | |
286 700, 900, 1180, 2, -1, \ | |
287 100, 200, 392, -1, 0, \ | |
288 300, 400, 786, -1, 0, \ | |
289 710, 720, 1574, -1, 1, \ | |
290 740, 750, 1967, -1, 1] | |
291 self._writeBinFile(self._expLFileName, elements) | |
292 | |
293 def _writeExpLFileCase12(self): | |
294 elements = [ 0, 1400, 0, 1, -1, \ | |
295 300, 500, 368, 2, 0, \ | |
296 800, 1100, 1106, -1, 0, \ | |
297 1200, 1300, 1476, -1, 0, \ | |
298 300, 500, 737, -1, 1] | |
299 self._writeBinFile(self._expLFileName, elements) | |
300 | |
301 if __name__ == "__main__": | |
302 unittest.main() |