comparison SMART/Java/Python/test/Test_F_RestrictFromCoverage.py @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
comparison
equal deleted inserted replaced
30:5677346472b5 31:0ab839023fe4
1 import unittest
2 import os, os.path
3 from optparse import OptionParser
4 from SMART.Java.Python.misc import Utils
5 from SMART.Java.Python.structure.Transcript import Transcript
6 from commons.core.writer.Gff3Writer import Gff3Writer
7 from commons.core.parsing.GffParser import GffParser
8 from SMART.Java.Python.RestrictFromCoverage import RestrictFromCoverage
9
10 REFERENCE = 0
11 QUERY = 1
12
13 class Test_F_Clusterize(unittest.TestCase):
14
15 def setUp(self):
16 self._queryFileName = "testQuery.gff3"
17 self._refFileName = "testRef.gff3"
18 self._outputFileName = "output.gff3"
19 self._parsers = {QUERY: Gff3Writer(self._queryFileName, 0), REFERENCE: Gff3Writer(self._refFileName, 0)}
20 self._writeQuery()
21
22 def tearDown(self):
23 for file in (self._queryFileName, self._refFileName, self._outputFileName):
24 if os.path.exists(file):
25 os.remove(file)
26
27 def _writeQuery(self):
28 self._addTranscript(QUERY, 1, 1000, 2000, "+")
29 self._parsers[QUERY].close()
30
31 def _writeReferences(self, values):
32 for value in values:
33 self._addTranscript(REFERENCE, value["cpt"], value["start"], value["end"], value["strand"])
34 self._parsers[REFERENCE].close()
35
36 def _addTranscript(self, type, cpt, start, end, strand):
37 t = Transcript()
38 t.setChromosome("chr1")
39 t.setName("test%d" % (cpt))
40 t.setStart(start)
41 t.setEnd(end)
42 t.setDirection(strand)
43 self._parsers[type].addTranscript(t)
44
45 def _checkTranscript(self, transcript, start, end, strand):
46 self.assertEquals(transcript.getStart(), start)
47 self.assertEquals(transcript.getEnd(), end)
48 self.assertEquals(transcript.getDirection(), strand)
49
50 def _startTool(self, minNucleotides = None, maxNucleotides = None, minPercent = None, maxPercent = None, minOverlap = None, maxOverlap = None, strands = False):
51 rfc = RestrictFromCoverage(0)
52 rfc.setInputFileName(self._queryFileName, "gff3", QUERY)
53 rfc.setInputFileName(self._refFileName, "gff3", REFERENCE)
54 rfc.setOutputFileName(self._outputFileName)
55 rfc.setNbNucleotides(minNucleotides, maxNucleotides)
56 rfc.setPercent(minPercent, maxPercent)
57 rfc.setOverlap(minOverlap, maxOverlap)
58 rfc.setStrands(strands)
59 rfc.run()
60 return GffParser(self._outputFileName, 0)
61
62 def test_simple(self):
63 self._writeReferences([{"cpt": 1, "start": 1000, "end": 2000, "strand": "+"}])
64 parser = self._startTool()
65 self.assertEquals(parser.getNbTranscripts(), 1)
66 for transcript in parser.getIterator():
67 self._checkTranscript(transcript, 1000, 2000, 1)
68
69 def test_nbOverlapsMin_pos(self):
70 self._writeReferences([{"cpt": 1, "start": 1000, "end": 2000, "strand": "+"}, {"cpt": 2, "start": 1000, "end": 2000, "strand": "+"}])
71 parser = self._startTool(1, None, None, None, 2)
72 self.assertEquals(parser.getNbTranscripts(), 1)
73 for transcript in parser.getIterator():
74 self._checkTranscript(transcript, 1000, 2000, 1)
75
76 def test_nbOverlapsMin_neg(self):
77 self._writeReferences([{"cpt": 1, "start": 1000, "end": 2000, "strand": "+"}])
78 parser = self._startTool(1, None, None, None, 2)
79 self.assertEquals(parser.getNbTranscripts(), 0)
80
81 def test_nbOverlapsMax_pos(self):
82 self._writeReferences([{"cpt": 1, "start": 1000, "end": 2000, "strand": "+"}])
83 parser = self._startTool(1, None, None, None, None, 1)
84 self.assertEquals(parser.getNbTranscripts(), 1)
85 for transcript in parser.getIterator():
86 self._checkTranscript(transcript, 1000, 2000, 1)
87
88 def test_nbOverlapsMax_neg(self):
89 self._writeReferences([{"cpt": 1, "start": 1000, "end": 2000, "strand": "+"}, {"cpt": 2, "start": 1000, "end": 2000, "strand": "+"}])
90 parser = self._startTool(1, None, None, None, None, 1)
91 self.assertEquals(parser.getNbTranscripts(), 0)
92
93 def test_nbNucleotidesMin_pos(self):
94 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1100, "strand": "+"}])
95 parser = self._startTool(100, None, None, None, 1)
96 self.assertEquals(parser.getNbTranscripts(), 1)
97 for transcript in parser.getIterator():
98 self._checkTranscript(transcript, 1000, 2000, 1)
99
100 def test_nbNucleotidesMin_neg(self):
101 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1100, "strand": "+"}])
102 parser = self._startTool(200, None, None, None, 1)
103 self.assertEquals(parser.getNbTranscripts(), 0)
104
105 def test_PercentMin_pos(self):
106 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1500, "strand": "+"}])
107 parser = self._startTool(None, None, 50, None, 1)
108 self.assertEquals(parser.getNbTranscripts(), 1)
109 for transcript in parser.getIterator():
110 self._checkTranscript(transcript, 1000, 2000, 1)
111
112 def test_PercentMin_neg(self):
113 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1500, "strand": "+"}])
114 parser = self._startTool(None, None, 100, None, 1)
115 self.assertEquals(parser.getNbTranscripts(), 0)
116
117 def test_NoStrand_neg(self):
118 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1500, "strand": "-"}])
119 parser = self._startTool(1, None, None, None, 1)
120 self.assertEquals(parser.getNbTranscripts(), 1)
121
122 def test_strand_pos(self):
123 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1500, "strand": "+"}])
124 parser = self._startTool(1, None, None, None, 1, None, True)
125 self.assertEquals(parser.getNbTranscripts(), 1)
126
127 def test_strand_neg(self):
128 self._writeReferences([{"cpt": 1, "start": 1000, "end": 1500, "strand": "-"}])
129 parser = self._startTool(1, None, None, None, 1, None, True)
130 self.assertEquals(parser.getNbTranscripts(), 0)
131
132 if __name__ == "__main__":
133 unittest.main()