18
|
1 import unittest, os, os.path
|
|
2 from SMART.Java.Python.misc import Utils
|
|
3 from SMART.Java.Python.ClusterizeByTags import ClusterizeByTags
|
|
4
|
|
5 class Test_F_ClusterizeByTags(unittest.TestCase):
|
|
6
|
|
7 def setUp(self):
|
|
8 self._inputFileName = "inputFileTest.gff3"
|
|
9 self._expOutputFileName = "expOutput.gff3"
|
|
10 self._outputFileName = "output.gff3"
|
|
11
|
|
12 def tearDown(self):
|
|
13 for file in (self._inputFileName, self._expOutputFileName, self._outputFileName):
|
|
14 if os.path.exists(file):
|
|
15 os.remove(file)
|
|
16
|
|
17 def test_diff_simple(self):
|
|
18 handle = open(self._inputFileName, "w")
|
|
19 handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
|
|
20 chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
|
|
21 chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
|
|
22 chr1\tS-MART\ttest1.4\t700\t800\t.\t+\t.\tName=test1.4;score=100;ID=test1.4
|
|
23 chr1\tS-MART\ttest1.5\t900\t1000\t.\t+\t.\tName=test1.5;score=110;ID=test1.5
|
|
24 chr1\tS-MART\ttest1.6\t1100\t1200\t.\t+\t.\tName=test1.6;score=105;ID=test1.6
|
|
25 """)
|
|
26 handle.close()
|
|
27 handle = open(self._expOutputFileName, "w")
|
|
28 handle.write("""chr1 S-MART test1.1 100 600 40 + . nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
|
|
29 chr1 S-MART exon 100 200 10 + . ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
|
|
30 chr1 S-MART exon 300 400 15 + . ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
|
|
31 chr1 S-MART exon 500 600 15 + . ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
|
|
32 chr1 S-MART test1.4 700 1200 315 + . nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
|
|
33 chr1 S-MART exon 700 800 100 + . ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
|
|
34 chr1 S-MART exon 900 1000 110 + . ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
|
|
35 chr1 S-MART exon 1100 1200 105 + . ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
|
|
36 """)
|
|
37 handle.close()
|
|
38 cbt = ClusterizeByTags(0)
|
|
39 cbt.setInputFile(self._inputFileName, "gff3")
|
|
40 cbt.setOutputFile(self._outputFileName)
|
|
41 cbt.setTag("score", None)
|
|
42 cbt.setThreshold(20)
|
|
43 cbt.setOperation("diff")
|
|
44 cbt.setMaxDistance(None)
|
|
45 cbt.run()
|
|
46 self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
|
|
47
|
|
48 def test_diff_two_strands(self):
|
|
49 handle = open(self._inputFileName, "w")
|
|
50 handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
|
|
51 chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
|
|
52 chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
|
|
53 chr1\tS-MART\ttest1.4\t700\t800\t.\t-\t.\tName=test1.4;score=10;ID=test1.4
|
|
54 chr1\tS-MART\ttest1.5\t900\t1000\t.\t-\t.\tName=test1.5;score=15;ID=test1.5
|
|
55 chr1\tS-MART\ttest1.6\t1100\t1200\t.\t-\t.\tName=test1.6;score=15;ID=test1.6
|
|
56 """)
|
|
57 handle.close()
|
|
58 handle = open(self._expOutputFileName, "w")
|
|
59 handle.write("""chr1 S-MART test1.4 700 1200 40 - . nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
|
|
60 chr1 S-MART exon 700 800 10 - . ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
|
|
61 chr1 S-MART exon 900 1000 15 - . ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
|
|
62 chr1 S-MART exon 1100 1200 15 - . ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
|
|
63 chr1 S-MART test1.1 100 600 40 + . nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
|
|
64 chr1 S-MART exon 100 200 10 + . ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
|
|
65 chr1 S-MART exon 300 400 15 + . ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
|
|
66 chr1 S-MART exon 500 600 15 + . ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
|
|
67 """)
|
|
68 handle.close()
|
|
69 cbt = ClusterizeByTags(0)
|
|
70 cbt.setInputFile(self._inputFileName, "gff3")
|
|
71 cbt.setOutputFile(self._outputFileName)
|
|
72 cbt.setTag("score", None)
|
|
73 cbt.setThreshold(20)
|
|
74 cbt.setOperation("diff")
|
|
75 cbt.setMaxDistance(None)
|
|
76 cbt.run()
|
|
77 self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
|
|
78
|
|
79 def test_diff_one_strands(self):
|
|
80 handle = open(self._inputFileName, "w")
|
|
81 handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
|
|
82 chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
|
|
83 chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
|
|
84 chr1\tS-MART\ttest1.4\t700\t800\t.\t-\t.\tName=test1.4;score=10;ID=test1.4
|
|
85 chr1\tS-MART\ttest1.5\t900\t1000\t.\t-\t.\tName=test1.5;score=15;ID=test1.5
|
|
86 chr1\tS-MART\ttest1.6\t1100\t1200\t.\t-\t.\tName=test1.6;score=15;ID=test1.6
|
|
87 """)
|
|
88 handle.close()
|
|
89 handle = open(self._expOutputFileName, "w")
|
|
90 handle.write("""chr1 S-MART test1.1 100 600 40 + . nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
|
|
91 chr1 S-MART exon 100 200 10 + . ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
|
|
92 chr1 S-MART exon 300 400 15 + . ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
|
|
93 chr1 S-MART exon 500 600 15 + . ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
|
|
94 chr1 S-MART test1.4 700 1200 40 - . nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
|
|
95 chr1 S-MART exon 700 800 10 - . ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
|
|
96 chr1 S-MART exon 900 1000 15 - . ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
|
|
97 chr1 S-MART exon 1100 1200 15 - . ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
|
|
98 """)
|
|
99 handle.close()
|
|
100 cbt = ClusterizeByTags(0)
|
|
101 cbt.setInputFile(self._inputFileName, "gff3")
|
|
102 cbt.setOutputFile(self._outputFileName)
|
|
103 cbt.setTag("score", None)
|
|
104 cbt.setThreshold(20)
|
|
105 cbt.setOperation("diff")
|
|
106 cbt.setMaxDistance(None)
|
|
107 cbt.setOneStrand(True)
|
|
108 cbt.run()
|
|
109 self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
|
|
110
|
|
111 def test_diff_distance(self):
|
|
112 handle = open(self._inputFileName, "w")
|
|
113 handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
|
|
114 chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
|
|
115 chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
|
|
116 chr1\tS-MART\ttest1.4\t1000\t1100\t.\t+\t.\tName=test1.4;score=10;ID=test1.4
|
|
117 chr1\tS-MART\ttest1.5\t1200\t1300\t.\t+\t.\tName=test1.5;score=15;ID=test1.5
|
|
118 chr1\tS-MART\ttest1.6\t1400\t1500\t.\t+\t.\tName=test1.6;score=15;ID=test1.6
|
|
119 """)
|
|
120 handle.close()
|
|
121 handle = open(self._expOutputFileName, "w")
|
|
122 handle.write("""chr1 S-MART test1.1 100 600 40 + . nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
|
|
123 chr1 S-MART exon 100 200 10 + . ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
|
|
124 chr1 S-MART exon 300 400 15 + . ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
|
|
125 chr1 S-MART exon 500 600 15 + . ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
|
|
126 chr1 S-MART test1.4 1000 1500 40 + . nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
|
|
127 chr1 S-MART exon 1000 1100 10 + . ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
|
|
128 chr1 S-MART exon 1200 1300 15 + . ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
|
|
129 chr1 S-MART exon 1400 1500 15 + . ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
|
|
130 """)
|
|
131 handle.close()
|
|
132 cbt = ClusterizeByTags(0)
|
|
133 cbt.setInputFile(self._inputFileName, "gff3")
|
|
134 cbt.setOutputFile(self._outputFileName)
|
|
135 cbt.setTag("score", None)
|
|
136 cbt.setThreshold(20)
|
|
137 cbt.setOperation("diff")
|
|
138 cbt.setMaxDistance(200)
|
|
139 cbt.run()
|
|
140 self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
|
|
141
|
|
142
|
|
143 if __name__ == "__main__":
|
|
144 unittest.main()
|