6
|
1 from commons.core.parsing.PslParser import PslParser
|
|
2 import unittest, os
|
|
3
|
|
4
|
|
5 class Test_PslParser(unittest.TestCase):
|
|
6
|
|
7 def test_forward(self):
|
|
8 fileName = "tmpFile.psl"
|
|
9 handle = open(fileName, "w")
|
|
10 handle.write("psLayout version 3\n\nmatch\tmis-\trep.\tN's\tQ gap\tQ gap\tT gap\tT gap\tstrand\tQ\tQ\tQ\tQ\T\tT\tT\tT\tblock\tblockSizes\tqStarts\ttStarts\nmatch\tmatch\tcount\tbases\tcount\tbases\tname\tsize\tstart\tend\tname\tsize\tstart\tend\tcount\n---------------------------------------------------------------------------------------------------------------------------------------------------------------\n158\t0\t0\t0\t0\t0\t1\t158\t+\ttest\t158\t0\t158\tchr1\t1501\t237\t553\t2\t79,79,\t0,79,\t237,474,\n")
|
|
11 handle.close()
|
|
12
|
|
13 parser = PslParser(fileName, 0)
|
|
14 self.assertEquals(parser.getNbMappings(), 1)
|
|
15 for mapping in parser.getIterator():
|
|
16 transcript = mapping.getTranscript()
|
|
17 self.assertEquals(transcript.getName(), "test")
|
|
18 self.assertEquals(transcript.getChromosome(), "chr1")
|
|
19 self.assertEquals(transcript.getDirection(), 1)
|
|
20 self.assertEquals(transcript.getStart(), 238)
|
|
21 self.assertEquals(transcript.getEnd(), 553)
|
|
22 self.assertEquals(transcript.getNbExons(), 2)
|
|
23 for i, exon in enumerate(transcript.getExons()):
|
|
24 if i == 0:
|
|
25 self.assertEquals(exon.getStart(), 238)
|
|
26 self.assertEquals(exon.getEnd(), 316)
|
|
27 elif i == 1:
|
|
28 self.assertEquals(exon.getStart(), 475)
|
|
29 self.assertEquals(exon.getEnd(), 553)
|
|
30 os.remove(fileName)
|
|
31
|
|
32
|
|
33 def test_backward(self):
|
|
34 fileName = "tmpFile.psl"
|
|
35 handle = open(fileName, "w")
|
|
36 handle.write("psLayout version 3\n\nmatch\tmis-\trep.\tN's\tQ gap\tQ gap\tT gap\tT gap\tstrand\tQ\tQ\tQ\tQ\tT\tT\tT\tT\tblock\tblockSizes\tqStarts\ttStarts\nmatch\tmatch\tcount\tbases\tcount\tbases\tname\tsize\tstart\tend\tname\tsize\tstart\tend\tcount\n---------------------------------------------------------------------------------------------------------------------------------------------------------------\n158\t0\t0\t0\t0\t0\t1\t158\t-\ttest\t158\t0\t158\tchr1\t1501\t237\t553\t2\t79,79,\t0,79,\t237,474,\n")
|
|
37
|
|
38 handle.close()
|
|
39
|
|
40 parser = PslParser(fileName, 0)
|
|
41 self.assertEquals(parser.getNbMappings(), 1)
|
|
42 for mapping in parser.getIterator():
|
|
43 transcript = mapping.getTranscript()
|
|
44 self.assertEquals(transcript.getName(), "test")
|
|
45 self.assertEquals(transcript.getChromosome(), "chr1")
|
|
46 self.assertEquals(transcript.getDirection(), -1)
|
|
47 self.assertEquals(transcript.getStart(), 238)
|
|
48 self.assertEquals(transcript.getEnd(), 553)
|
|
49 self.assertEquals(transcript.getNbExons(), 2)
|
|
50 for i, exon in enumerate(transcript.getExons()):
|
|
51 if i == 1:
|
|
52 self.assertEquals(exon.getStart(), 238)
|
|
53 self.assertEquals(exon.getEnd(), 316)
|
|
54 elif i == 0:
|
|
55 self.assertEquals(exon.getStart(), 475)
|
|
56 self.assertEquals(exon.getEnd(), 553)
|
|
57 os.remove(fileName)
|
|
58
|
|
59
|
|
60 def test_query_forward_target_forward(self):
|
|
61 fileName = "tmpFile.psl"
|
|
62 handle = open(fileName, "w")
|
|
63 handle.write("psLayout version 3\n\nmatch\tmis-\trep.\tN's\tQ gap\tQ gap\tT gap\tT gap\tstrand\tQ\tQ\tQ\tQ\tT\tT\tT\tT\tblock\tblockSizes\tqStarts\ttStarts\nmatch\tmatch\tcount\tbases\tcount\tbases\tname\tsize\tstart\tend\tname\tsize\tstart\tend\tcount\n---------------------------------------------------------------------------------------------------------------------------------------------------------------\n241\t0\t0\t0\t0\t0\t1\t60\t++\tseq1\t255\t9\t250\tref\t2262\t59\t360\t2\t121,120,\t9,130,\t59,240,\n")
|
|
64 handle.close()
|
|
65
|
|
66 parser = PslParser(fileName, 0)
|
|
67 self.assertEquals(parser.getNbMappings(), 1)
|
|
68 for mapping in parser.getIterator():
|
|
69 transcript = mapping.getTranscript()
|
|
70 self.assertEquals(transcript.getName(), "seq1")
|
|
71 self.assertEquals(transcript.getChromosome(), "ref")
|
|
72 self.assertEquals(transcript.getDirection(), 1)
|
|
73 self.assertEquals(transcript.getStart(), 60)
|
|
74 self.assertEquals(transcript.getEnd(), 360)
|
|
75 self.assertEquals(transcript.getNbExons(), 2)
|
|
76 for i, exon in enumerate(transcript.getExons()):
|
|
77 if i == 0:
|
|
78 self.assertEquals(exon.getStart(), 60)
|
|
79 self.assertEquals(exon.getEnd(), 180)
|
|
80 elif i == 1:
|
|
81 self.assertEquals(exon.getStart(), 241)
|
|
82 self.assertEquals(exon.getEnd(), 360)
|
|
83 os.remove(fileName)
|
|
84
|
|
85 def test_query_backward_target_forward(self):
|
|
86 fileName = "tmpFile.psl"
|
|
87 handle = open(fileName, "w")
|
|
88 handle.write("psLayout version 3\n\nmatch\tmis-\trep.\tN's\tQ gap\tQ gap\tT gap\tT gap\tstrand\tQ\tQ\tQ\tQ\tT\tT\tT\tT\tblock\tblockSizes\tqStarts\ttStarts\nmatch\tmatch\tcount\tbases\tcount\tbases\tname\tsize\tstart\tend\tname\tsize\tstart\tend\tcount\n---------------------------------------------------------------------------------------------------------------------------------------------------------------\n241\t0\t0\t0\t0\t0\t1\t60\t-+\tseq2\t255\t5\t246\tref\t2262\t59\t360\t2\t121,120,\t9,130,\t59,240,\n")
|
|
89 handle.close()
|
|
90
|
|
91 parser = PslParser(fileName, 0)
|
|
92 self.assertEquals(parser.getNbMappings(), 1)
|
|
93 for mapping in parser.getIterator():
|
|
94 transcript = mapping.getTranscript()
|
|
95 self.assertEquals(transcript.getName(), "seq2")
|
|
96 self.assertEquals(transcript.getChromosome(), "ref")
|
|
97 self.assertEquals(transcript.getDirection(), -1)
|
|
98 self.assertEquals(transcript.getStart(), 60)
|
|
99 self.assertEquals(transcript.getEnd(), 360)
|
|
100 self.assertEquals(transcript.getNbExons(), 2)
|
|
101 for i, exon in enumerate(transcript.getExons()):
|
|
102 if i == 1:
|
|
103 self.assertEquals(exon.getStart(), 60)
|
|
104 self.assertEquals(exon.getEnd(), 180)
|
|
105 elif i == 0:
|
|
106 self.assertEquals(exon.getStart(), 241)
|
|
107 self.assertEquals(exon.getEnd(), 360)
|
|
108 os.remove(fileName)
|
|
109
|
|
110 def test_query_backward_target_backward(self):
|
|
111 fileName = "tmpFile.psl"
|
|
112 handle = open(fileName, "w")
|
|
113 handle.write("psLayout version 3\n\nmatch\tmis-\trep.\tN's\tQ gap\tQ gap\tT gap\tT gap\tstrand\tQ\tQ\tQ\tQ\tT\tT\tT\tT\tblock\tblockSizes\tqStarts\ttStarts\nmatch\tmatch\tcount\tbases\tcount\tbases\tname\tsize\tstart\tend\tname\tsize\tstart\tend\tcount\n---------------------------------------------------------------------------------------------------------------------------------------------------------------\n241\t1\t0\t0\t0\t0\t1\t60\t--\tseq1\t255\t8\t250\tref\t2262\t58\t360\t2\t120,122,\t5,125,\t1902,2082,\n")
|
|
114 handle.close()
|
|
115
|
|
116 parser = PslParser(fileName, 0)
|
|
117 self.assertEquals(parser.getNbMappings(), 1)
|
|
118 for mapping in parser.getIterator():
|
|
119 transcript = mapping.getTranscript()
|
|
120 self.assertEquals(transcript.getName(), "seq1")
|
|
121 self.assertEquals(transcript.getChromosome(), "ref")
|
|
122 self.assertEquals(transcript.getDirection(), 1)
|
|
123 self.assertEquals(transcript.getStart(), 59)
|
|
124 self.assertEquals(transcript.getEnd(), 360)
|
|
125 self.assertEquals(transcript.getNbExons(), 2)
|
|
126 for i, exon in enumerate(transcript.getExons()):
|
|
127 if i == 0:
|
|
128 self.assertEquals(exon.getStart(), 59)
|
|
129 self.assertEquals(exon.getEnd(), 180)
|
|
130 elif i == 1:
|
|
131 self.assertEquals(exon.getStart(), 241)
|
|
132 self.assertEquals(exon.getEnd(), 360)
|
|
133 os.remove(fileName)
|
|
134
|
|
135
|
|
136 def test_query_forward_target_backward(self):
|
|
137 fileName = "tmpFile.psl"
|
|
138 handle = open(fileName, "w")
|
|
139 handle.write("psLayout version 3\n\nmatch\tmis-\trep.\tN's\tQ gap\tQ gap\tT gap\tT gap\tstrand\tQ\tQ\tQ\tQ\tT\tT\tT\tT\tblock\tblockSizes\tqStarts\ttStarts\nmatch\tmatch\tcount\tbases\tcount\tbases\tname\tsize\tstart\tend\tname\tsize\tstart\tend\tcount\n---------------------------------------------------------------------------------------------------------------------------------------------------------------\n241\t1\t0\t0\t0\t0\t1\t60\t+-\tseq2\t255\t5\t247\tref\t2262\t58\t360\t2\t120,122,\t5,125,\t1902,2082,\n")
|
|
140 handle.close()
|
|
141
|
|
142 parser = PslParser(fileName, 0)
|
|
143 self.assertEquals(parser.getNbMappings(), 1)
|
|
144 for mapping in parser.getIterator():
|
|
145 transcript = mapping.getTranscript()
|
|
146 self.assertEquals(transcript.getName(), "seq2")
|
|
147 self.assertEquals(transcript.getChromosome(), "ref")
|
|
148 self.assertEquals(transcript.getDirection(), -1)
|
|
149 self.assertEquals(transcript.getStart(), 59)
|
|
150 self.assertEquals(transcript.getEnd(), 360)
|
|
151 self.assertEquals(transcript.getNbExons(), 2)
|
|
152 for i, exon in enumerate(transcript.getExons()):
|
|
153 if i == 1:
|
|
154 self.assertEquals(exon.getStart(), 59)
|
|
155 self.assertEquals(exon.getEnd(), 180)
|
|
156 elif i == 0:
|
|
157 self.assertEquals(exon.getStart(), 241)
|
|
158 self.assertEquals(exon.getEnd(), 360)
|
|
159 os.remove(fileName)
|
|
160
|
|
161
|
|
162 if __name__ == "__main__":
|
|
163 unittest.main()
|
|
164
|
|
165
|