annotate SMART/Java/Python/test/Test_F_GetFlanking.py @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
1 import unittest
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
2 import os, os.path, glob
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
3 from SMART.Java.Python.structure.Transcript import Transcript
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
4 from SMART.Java.Python.GetFlanking import GetFlanking
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
5 from commons.core.writer.Gff3Writer import Gff3Writer
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
6 from commons.core.parsing.GffParser import GffParser
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
7
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
8 class Test_F_GetFlanking(unittest.TestCase):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
9
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
10 def setUp(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
11 self.queryFileName = "testQuery.gff3"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
12 self.referenceFileName = "testReference.gff3"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
13 self.outputFileName = "testOutput.gff3"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
14
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
15 def tearDown(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
16 for fileRoot in (self.queryFileName, self.referenceFileName, self.outputFileName):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
17 for file in glob.glob("%s*" % (fileRoot)):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
18 os.remove(file)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
19
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
20 def test_run_simple(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
21 #return
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
22 reference1 = self._createTranscript("chr1", 1000, 1100, "+", "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
23 reference2 = self._createTranscript("chr1", 2000, 2100, "+", "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
24 reference3 = self._createTranscript("chr1", 1000000, 1200000, "+", "ref3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
25 writer = Gff3Writer(self.referenceFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
26 writer.addTranscript(reference1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
27 writer.addTranscript(reference2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
28 writer.addTranscript(reference3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
29 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
30 query1 = self._createTranscript("chr1", 100, 200, "+", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
31 query2 = self._createTranscript("chr1", 10000, 10100, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
32 writer = Gff3Writer(self.queryFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
33 writer.addTranscript(query1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
34 writer.addTranscript(query2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
35 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
36 gf = GetFlanking(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
37 gf.setInputFile(self.queryFileName, 'gff3', 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
38 gf.setInputFile(self.referenceFileName, 'gff3', 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
39 gf.setOutputFile(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
40 gf.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
41 parser = GffParser(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
42 self.assertEqual(parser.getNbTranscripts(), 2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
43 for i, transcript in enumerate(sorted(parser.getIterator(), key = lambda t: t.getStart())):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
44 if i == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
45 self._checkTranscript(transcript, "chr1", 100, 200, "+", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
46 self.assertEqual(transcript.getTagValue("flanking"), "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
47 self.assertEqual(transcript.getTagValue("_region_flanking"), "downstream")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
48 self.assertEqual(transcript.getTagValue("_sense_flanking"), "collinear")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
49 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
50 self._checkTranscript(transcript, "chr1", 10000, 10100, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
51 self.assertEqual(transcript.getTagValue("flanking"), "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
52 self.assertEqual(transcript.getTagValue("_region_flanking"), "upstream")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
53 self.assertEqual(transcript.getTagValue("_sense_flanking"), "collinear")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
54
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
55 def test_run_simple_downstream(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
56 return
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
57 reference1 = self._createTranscript("chr1", 300, 400, "+", "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
58 reference2 = self._createTranscript("chr1", 1000, 1100, "+", "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
59 writer = Gff3Writer(self.referenceFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
60 writer.addTranscript(reference1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
61 writer.addTranscript(reference2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
62 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
63 query1 = self._createTranscript("chr1", 100, 200, "+", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
64 query2 = self._createTranscript("chr1", 1200, 1300, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
65 query3 = self._createTranscript("chr1", 1400, 1500, "+", "query3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
66 writer = Gff3Writer(self.queryFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
67 writer.addTranscript(query1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
68 writer.addTranscript(query2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
69 writer.addTranscript(query3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
70 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
71 gf = GetFlanking(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
72 gf.setInputFile(self.queryFileName, 'gff3', 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
73 gf.setInputFile(self.referenceFileName, 'gff3', 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
74 gf.setOutputFile(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
75 gf.addDownstreamDirection(True)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
76 gf.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
77 parser = GffParser(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
78 self.assertEqual(parser.getNbTranscripts(), 3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
79 for i, transcript in enumerate(sorted(parser.getIterator(), key = lambda t: t.getStart())):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
80 if i == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
81 self._checkTranscript(transcript, "chr1", 100, 200, "+", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
82 self.assertEqual(transcript.getTagValue("flanking_downstream"), "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
83 self.assertEqual(transcript.getTagValue("_region_flanking"), "downstream")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
84 self.assertEqual(transcript.getTagValue("_sense_flanking"), "collinear")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
85 if i == 1:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
86 self._checkTranscript(transcript, "chr1", 1200, 1300, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
87 self.assertIsNone(transcript.getTagValue("flanking_downstream"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
88 if i == 2:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
89 self._checkTranscript(transcript, "chr1", 1400, 1500, "+", "query3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
90 self.assertIsNone(transcript.getTagValue("flanking_downstream"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
91
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
92 def test_run_simple_minus_strand_downstream(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
93 return
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
94 reference1 = self._createTranscript("chr1", 1000, 1100, "+", "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
95 reference2 = self._createTranscript("chr1", 2000, 2100, "+", "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
96 writer = Gff3Writer(self.referenceFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
97 writer.addTranscript(reference1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
98 writer.addTranscript(reference2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
99 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
100 query1 = self._createTranscript("chr1", 100, 200, "-", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
101 query2 = self._createTranscript("chr1", 1200, 1300, "-", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
102 query3 = self._createTranscript("chr1", 1400, 1500, "-", "query3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
103 writer = Gff3Writer(self.queryFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
104 writer.addTranscript(query1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
105 writer.addTranscript(query2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
106 writer.addTranscript(query3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
107 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
108 gf = GetFlanking(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
109 gf.setInputFile(self.queryFileName, 'gff3', 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
110 gf.setInputFile(self.referenceFileName, 'gff3', 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
111 gf.setOutputFile(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
112 gf.addDownstreamDirection(True)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
113 gf.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
114 parser = GffParser(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
115 self.assertEqual(parser.getNbTranscripts(), 3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
116 for i, transcript in enumerate(sorted(parser.getIterator(), key = lambda t: t.getStart())):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
117 if i == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
118 self._checkTranscript(transcript, "chr1", 100, 200, "-", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
119 self.assertIsNone(transcript.getTagValue("flanking_downstream"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
120 if i == 1:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
121 self._checkTranscript(transcript, "chr1", 1200, 1300, "-", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
122 self.assertEqual(transcript.getTagValue("flanking_downstream"), "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
123 if i == 2:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
124 self._checkTranscript(transcript, "chr1", 1400, 1500, "-", "query3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
125 self.assertEqual(transcript.getTagValue("flanking_downstream"), "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
126
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
127 def test_run_simple_upstream(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
128 return
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
129 reference1 = self._createTranscript("chr1", 500, 600, "+", "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
130 reference2 = self._createTranscript("chr1", 700, 800, "+", "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
131 reference3 = self._createTranscript("chr1", 2000, 2100, "+", "ref3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
132 writer = Gff3Writer(self.referenceFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
133 writer.addTranscript(reference1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
134 writer.addTranscript(reference2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
135 writer.addTranscript(reference3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
136 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
137 query1 = self._createTranscript("chr1", 100, 200, "+", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
138 query2 = self._createTranscript("chr1", 300, 400, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
139 query3 = self._createTranscript("chr1", 1200, 1300, "+", "query3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
140 writer = Gff3Writer(self.queryFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
141 writer.addTranscript(query1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
142 writer.addTranscript(query2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
143 writer.addTranscript(query3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
144 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
145 gf = GetFlanking(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
146 gf.setInputFile(self.queryFileName, 'gff3', 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
147 gf.setInputFile(self.referenceFileName, 'gff3', 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
148 gf.setOutputFile(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
149 gf.addUpstreamDirection(True)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
150 gf.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
151 parser = GffParser(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
152 self.assertEqual(parser.getNbTranscripts(), 3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
153 for i, transcript in enumerate(sorted(parser.getIterator(), key = lambda t: t.getStart())):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
154 if i == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
155 self._checkTranscript(transcript, "chr1", 100, 200, "+", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
156 self.assertIsNone(transcript.getTagValue("flanking_upstream"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
157 if i == 1:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
158 self._checkTranscript(transcript, "chr1", 300, 400, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
159 self.assertIsNone(transcript.getTagValue("flanking_upstream"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
160 if i == 2:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
161 self._checkTranscript(transcript, "chr1", 1200, 1300, "+", "query3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
162 self.assertEqual(transcript.getTagValue("flanking_upstream"), "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
163
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
164 def test_run_simple_colinear(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
165 return
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
166 reference1 = self._createTranscript("chr1", 100, 200, "+", "ref1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
167 reference2 = self._createTranscript("chr1", 1000, 1100, "+", "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
168 reference3 = self._createTranscript("chr1", 1600, 1700, "+", "ref3")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
169 writer = Gff3Writer(self.referenceFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
170 writer.addTranscript(reference1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
171 writer.addTranscript(reference2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
172 writer.addTranscript(reference3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
173 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
174 query1 = self._createTranscript("chr1", 1200, 1300, "-", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
175 query2 = self._createTranscript("chr1", 1400, 1500, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
176 writer = Gff3Writer(self.queryFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
177 writer.addTranscript(query1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
178 writer.addTranscript(query2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
179 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
180 gf = GetFlanking(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
181 gf.setInputFile(self.queryFileName, 'gff3', 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
182 gf.setInputFile(self.referenceFileName, 'gff3', 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
183 gf.setOutputFile(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
184 gf.addUpstreamDirection(True)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
185 gf.setColinear(True)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
186 gf.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
187 parser = GffParser(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
188 self.assertEqual(parser.getNbTranscripts(), 2)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
189 for i, transcript in enumerate(sorted(parser.getIterator(), key = lambda t: t.getStart())):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
190 if i == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
191 self._checkTranscript(transcript, "chr1", 1200, 1300, "-", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
192 self.assertIsNone(transcript.getTagValue("flanking"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
193 if i == 1:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
194 self._checkTranscript(transcript, "chr1", 1400, 1500, "+", "query2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
195 self.assertEqual(transcript.getTagValue("flanking_upstream"), "ref2")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
196
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
197 def test_run_simple_max_distance(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
198 return
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
199 reference = self._createTranscript("chr1", 1000, 1100, "+", "ref")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
200 writer = Gff3Writer(self.referenceFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
201 writer.addTranscript(reference)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
202 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
203 query1 = self._createTranscript("chr1", 2000, 2100, "-", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
204 writer = Gff3Writer(self.queryFileName, 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
205 writer.addTranscript(query1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
206 writer.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
207 gf = GetFlanking(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
208 gf.setInputFile(self.queryFileName, 'gff3', 0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
209 gf.setInputFile(self.referenceFileName, 'gff3', 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
210 gf.setOutputFile(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
211 gf.setMaxDistance(100)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
212 gf.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
213 parser = GffParser(self.outputFileName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
214 self.assertEqual(parser.getNbTranscripts(), 1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
215 for i, transcript in enumerate(sorted(parser.getIterator(), key = lambda t: t.getStart())):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
216 if i == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
217 self._checkTranscript(transcript, "chr1", 2000, 2100, "-", "query1")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
218 self.assertIsNone(transcript.getTagValue("flanking"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
219
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
220 def _createTranscript(self, chromosome, start, end, strand, name):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
221 transcript = Transcript()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
222 transcript.setChromosome(chromosome)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
223 transcript.setStart(start)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
224 transcript.setEnd(end)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
225 transcript.setDirection(strand)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
226 transcript.setName(name)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
227 return transcript
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
228
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
229 def _checkTranscript(self, transcript, chromosome, start, end, strand, name):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
230 self.assertEqual(transcript.getChromosome(), chromosome)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
231 self.assertEqual(transcript.getStart(), start)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
232 self.assertEqual(transcript.getEnd(), end)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
233 self.assertEqual(transcript.getStrand(), strand)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
234 self.assertEqual(transcript.getName(), name)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
235
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
236
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
237 if __name__ == "__main__":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
238 unittest.main()