Mercurial > repos > yufei-luo > s_mart
comparison SMART/Java/Python/ncList/test/Test_F_FindOverlapsWithSeveralIntervals.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 unittest | |
2 import os, os.path | |
3 from SMART.Java.Python.ncList.FindOverlapsWithSeveralIntervals import FindOverlapsWithSeveralIntervals | |
4 from SMART.Java.Python.misc import Utils | |
5 | |
6 class Test_F_FindOverlapsWithSeveralIntervals(unittest.TestCase): | |
7 | |
8 def setUp(self): | |
9 self._inputRefGff3FileName = 'sorted_Ref.gff3' | |
10 self._inputQueryGff3FileName = 'sorted_Query.gff3' | |
11 self._outputGff3FileName = 'output.gff3' | |
12 self._expOutputFileName = 'expOutGff3.gff3' | |
13 self._writeQueryGff3File(self._inputQueryGff3FileName) | |
14 self._writeGFF3File(self._inputRefGff3FileName) | |
15 self._iFOWSI = FindOverlapsWithSeveralIntervals(0) | |
16 self._iFOWSI.setRefFileName(self._inputRefGff3FileName, "gff3") | |
17 self._iFOWSI.setQueryFileName(self._inputQueryGff3FileName, "gff3") | |
18 self._iFOWSI.setOutputFileName(self._outputGff3FileName) | |
19 self._iFOWSI.prepareIntermediateFiles() | |
20 self._iFOWSI.createNCLists() | |
21 | |
22 def tearDown(self): | |
23 for fileName in (self._inputRefGff3FileName, self._inputQueryGff3FileName, self._outputGff3FileName, self._expOutputFileName): | |
24 if os.path.exists(fileName): | |
25 os.remove(fileName) | |
26 | |
27 def test_run_general(self): | |
28 self._writeQueryGff3File(self._inputQueryGff3FileName) | |
29 self._writeGFF3File(self._inputRefGff3FileName) | |
30 self._iFOWSI = FindOverlapsWithSeveralIntervals(0) | |
31 self._iFOWSI.setRefFileName(self._inputRefGff3FileName, "gff3") | |
32 self._iFOWSI.setQueryFileName(self._inputQueryGff3FileName, "gff3") | |
33 self._iFOWSI.setOutputFileName(self._outputGff3FileName) | |
34 self._iFOWSI.prepareIntermediateFiles() | |
35 self._iFOWSI.createNCLists() | |
36 self._iFOWSI.compare() | |
37 self._iFOWSI.close() | |
38 self._writeExpOutFile_general(self._expOutputFileName) | |
39 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName)) | |
40 | |
41 def test_run_general_asScript(self): | |
42 cmd = 'python ../FindOverlapsWithSeveralIntervals.py -i %s -f gff3 -j %s -g gff3 -o %s -v 0' % (self._inputQueryGff3FileName, self._inputRefGff3FileName, self._outputGff3FileName) | |
43 os.system(cmd) | |
44 self._writeExpOutFile_general(self._expOutputFileName) | |
45 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName)) | |
46 | |
47 | |
48 def test_run_overlap_special_case(self): | |
49 inputQueryGff3FileName = 'query2.gff3' | |
50 self._writeQueryGff3File2(inputQueryGff3FileName) | |
51 self._iFOWSI = FindOverlapsWithSeveralIntervals(0) | |
52 self._iFOWSI.setRefFileName(self._inputRefGff3FileName, "gff3") | |
53 self._iFOWSI.setQueryFileName(inputQueryGff3FileName, "gff3") | |
54 self._iFOWSI.setOutputFileName(self._outputGff3FileName) | |
55 self._iFOWSI.prepareIntermediateFiles() | |
56 self._iFOWSI.createNCLists() | |
57 self._iFOWSI.compare() | |
58 self._iFOWSI.close() | |
59 self._writeExpOutFile_special_case(self._expOutputFileName) | |
60 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName)) | |
61 os.remove(inputQueryGff3FileName) | |
62 | |
63 def test_run_overlap_special_case_asScript(self): | |
64 inputQueryGff3FileName = 'query2.gff3' | |
65 self._writeQueryGff3File2(inputQueryGff3FileName) | |
66 cmd = 'python ../FindOverlapsWithSeveralIntervals.py -i %s -f gff3 -j %s -g gff3 -o %s -v 0' % (inputQueryGff3FileName, self._inputRefGff3FileName, self._outputGff3FileName) | |
67 os.system(cmd) | |
68 self._writeExpOutFile_special_case(self._expOutputFileName) | |
69 self.assertTrue(Utils.diff(self._expOutputFileName, self._outputGff3FileName)) | |
70 os.remove(inputQueryGff3FileName) | |
71 | |
72 def _writeExpOutFile_special_case(self, fileName): | |
73 f = open(fileName, 'w') | |
74 f.write("chr1 S-MART test2 1250 1300 781 + . nbOverlaps=1;overlapsWith=test2.7;ID=query_2;Name=test1.2\n") | |
75 f.close() | |
76 | |
77 def _writeExpOutFile_general(self, fileName): | |
78 f = open(fileName, 'w') | |
79 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 | |
80 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 | |
81 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 | |
82 chr1 S-MART test1.4 925 1025 101 + . nbOverlaps=2;overlapsWith=test2.1--test2.5;ID=query_4;Name=test1.4 | |
83 chr1 S-MART test1.5 1201 1210 10 + . nbOverlaps=1;overlapsWith=test2.7;ID=query_5;Name=test1.5 | |
84 """) | |
85 f.close() | |
86 | |
87 def _writeExpOutFile_cas_1(self, fileName): | |
88 f = open(fileName, 'w') | |
89 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_3;score=1001;feature=test2.1;ID=test2.1\n") | |
90 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tName=test2.3;OverlapWith=query_3;score=501;feature=test2.3;ID=test2.3\n") | |
91 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tName=test2.5;OverlapWith=query_3;score=251;feature=test2.5;ID=test2.5\n") | |
92 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tName=test2.6;OverlapWith=query_3;score=101;feature=test2.6;ID=test2.6\n") | |
93 f.close() | |
94 | |
95 def _writeExpOutFile_cas_2(self, fileName): | |
96 f = open(fileName, 'w') | |
97 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_2;score=1001;feature=test2.1;ID=test2.1\n") | |
98 f.write("chr1\tS-MART\ttest2.2\t50\t350\t301\t+\t.\tName=test2.2;OverlapWith=query_2;score=301;feature=test2.2;ID=test2.2\n") | |
99 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tName=test2.3;OverlapWith=query_2;score=501;feature=test2.3;ID=test2.3\n") | |
100 f.write("chr1\tS-MART\ttest2.4\t200\t450\t251\t+\t.\tName=test2.4;OverlapWith=query_2;score=251;feature=test2.4;ID=test2.4\n") | |
101 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tName=test2.5;OverlapWith=query_2;score=251;feature=test2.5;ID=test2.5\n") | |
102 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tName=test2.6;OverlapWith=query_2;score=101;feature=test2.6;ID=test2.6\n") | |
103 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_3;score=1001;feature=test2.1;ID=test2.1\n") | |
104 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tName=test2.3;OverlapWith=query_3;score=501;feature=test2.3;ID=test2.3\n") | |
105 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tName=test2.5;OverlapWith=query_3;score=251;feature=test2.5;ID=test2.5\n") | |
106 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tName=test2.6;OverlapWith=query_3;score=101;feature=test2.6;ID=test2.6\n") | |
107 f.close() | |
108 | |
109 def _writeExpOutFile_all_overlap(self, fileName): | |
110 f = open(fileName, 'w') | |
111 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_2;score=1001;feature=test2.1;ID=test2.1\n") | |
112 f.write("chr1\tS-MART\ttest2.2\t50\t350\t301\t+\t.\tName=test2.2;OverlapWith=query_2;score=301;feature=test2.2;ID=test2.2\n") | |
113 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tName=test2.3;OverlapWith=query_2;score=501;feature=test2.3;ID=test2.3\n") | |
114 f.write("chr1\tS-MART\ttest2.4\t200\t450\t251\t+\t.\tName=test2.4;OverlapWith=query_2;score=251;feature=test2.4;ID=test2.4\n") | |
115 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tName=test2.5;OverlapWith=query_2;score=251;feature=test2.5;ID=test2.5\n") | |
116 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tName=test2.6;OverlapWith=query_2;score=101;feature=test2.6;ID=test2.6\n") | |
117 f.close() | |
118 | |
119 def _writeExpOutFile_overlap_to_children(self, fileName): | |
120 f = open(fileName, 'w') | |
121 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_3;score=1001;feature=test2.1;ID=test2.1\n") | |
122 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tName=test2.3;OverlapWith=query_3;score=501;feature=test2.3;ID=test2.3\n") | |
123 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tName=test2.5;OverlapWith=query_3;score=251;feature=test2.5;ID=test2.5\n") | |
124 f.write("chr1\tS-MART\ttest2.6\t800\t900\t101\t+\t.\tName=test2.6;OverlapWith=query_3;score=101;feature=test2.6;ID=test2.6\n") | |
125 f.close() | |
126 | |
127 def _writeExpOutFile_not_overlap_to_children(self, fileName): | |
128 f = open(fileName, 'w') | |
129 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_1;score=1001;feature=test2.1;ID=test2.1\n") | |
130 f.write("chr1\tS-MART\ttest2.2\t50\t350\t301\t+\t.\tName=test2.2;OverlapWith=query_1;score=301;feature=test2.2;ID=test2.2\n") | |
131 f.write("chr1\tS-MART\ttest2.3\t100\t600\t501\t+\t.\tName=test2.3;OverlapWith=query_1;score=501;feature=test2.3;ID=test2.3\n") | |
132 f.write("chr1\tS-MART\ttest2.1\t9\t1000\t1001\t+\t.\tName=test2.1;OverlapWith=query_4;score=1001;feature=test2.1;ID=test2.1\n") | |
133 f.write("chr1\tS-MART\ttest2.5\t700\t950\t251\t+\t.\tName=test2.5;OverlapWith=query_4;score=251;feature=test2.5;ID=test2.5\n") | |
134 f.close() | |
135 | |
136 def _writeExpOutFile_no_overlap_right(self, fileName): | |
137 f = open(fileName, 'w') | |
138 f.close() | |
139 | |
140 def _writeExpOutFile_one_overlap(self, fileName): | |
141 f = open(fileName, 'w') | |
142 f.write("chr1\tS-MART\ttest2.7\t1200\t1300\t101\t+\t.\tName=test2.7;OverlapWith=query_5;score=101;feature=test2.7;ID=test2.7\n") | |
143 f.close() | |
144 | |
145 def _writeQueryGff3File2(self, fileName): | |
146 f = open(fileName, 'w') | |
147 f.write("chr1\tquery\ttest1\t1100\t1150\t126\t+\t.\tID=query_1;Name=test1.1\n") | |
148 f.write("chr1\tquery\ttest2\t1250\t1300\t781\t+\t.\tID=query_2;Name=test1.2\n") | |
149 f.close() | |
150 | |
151 def _writeQueryGff3File(self, fileName): | |
152 f = open(fileName, 'w') | |
153 f.write("chr1\tquery\ttest1.1\t25\t150\t126\t+\t.\tID=query_1;Name=test1.1\n") | |
154 f.write("chr1\tquery\ttest1.2\t70\t850\t781\t+\t.\tID=query_2;Name=test1.2\n") | |
155 f.write("chr1\tquery\ttest1.3\t550\t850\t201\t+\t.\tID=query_3;Name=test1.3\n") | |
156 f.write("chr1\tquery\ttest1.4\t925\t1025\t101\t+\t.\tID=query_4;Name=test1.4\n") | |
157 f.write("chr1\tquery\ttest1.5\t1201\t1210\t10\t+\t.\tID=query_5;Name=test1.5\n") | |
158 f.write("chr1\tquery\ttest1.6\t1500\t1600\t101\t+\t.\tID=query_6;Name=test1.6\n") | |
159 f.close() | |
160 | |
161 def _writeGFF3File(self, fileName): | |
162 f = open(fileName, "w") | |
163 f.write("chr1\ttest\ttest2.1\t9\t1000\t1001\t+\t.\tID=test2.1;Name=test2.1\n") | |
164 f.write("chr1\ttest\ttest2.2\t50\t350\t301\t+\t.\tID=test2.2;Name=test2.2\n") | |
165 f.write("chr1\ttest\ttest2.3\t100\t600\t501\t+\t.\tID=test2.3;Name=test2.3\n") | |
166 f.write("chr1\ttest\ttest2.4\t200\t450\t251\t+\t.\tID=test2.4;Name=test2.4\n") | |
167 f.write("chr1\ttest\ttest2.5\t700\t950\t251\t+\t.\tID=test2.5;Name=test2.5\n") | |
168 f.write("chr1\ttest\ttest2.6\t800\t900\t101\t+\t.\tID=test2.6;Name=test2.6\n") | |
169 f.write("chr1\ttest\ttest2.7\t1200\t1300\t101\t+\t.\tID=test2.7;Name=test2.7\n") | |
170 f.close() | |
171 | |
172 if __name__ == "__main__": | |
173 unittest.main() |