6
|
1 import os
|
|
2 import unittest
|
|
3 import struct
|
|
4 from SMART.Java.Python.misc import Utils
|
|
5 from SMART.Java.Python.ncList.FileSorter import FileSorter
|
|
6 from SMART.Java.Python.structure.Transcript import Transcript
|
|
7 from commons.core.writer.Gff3Writer import Gff3Writer
|
|
8 from commons.core.parsing.GffParser import GffParser
|
|
9 from SMART.Java.Python.ncList.NCListFilePickle import NCListFileUnpickle
|
|
10
|
|
11
|
|
12 class Test_F_FileSorter(unittest.TestCase):
|
|
13
|
|
14 def setUp(self):
|
|
15 self._inputGff3FileName = 'inputFile.gff3'
|
|
16 self._outputFileName = 'outputFile.pkl'
|
|
17
|
|
18 def tearDown(self):
|
|
19 return
|
|
20 for fileName in (self._inputGff3FileName, self._sortedFileName, self._expHFileName, self._expLFileName, self._obsHFileName, self._obsLFileName, self._addressFileName):
|
|
21 if os.path.exists(fileName):
|
|
22 os.remove(fileName)
|
|
23
|
|
24 def test_unique(self):
|
|
25 transcript = self._createTranscript("chr1", 100, 200, "test1.1")
|
|
26 parser = self._writeAndSortAndParse([transcript])
|
|
27 self.assertEquals(parser.getNbTranscripts(), 1)
|
|
28 for transcript in parser.getIterator():
|
|
29 self._checkTranscript(transcript, "chr1", 100, 200, "test1.1")
|
|
30
|
|
31 def test_simple(self):
|
|
32 transcript1 = self._createTranscript("chr1", 300, 400, "test1.1")
|
|
33 transcript2 = self._createTranscript("chr1", 100, 200, "test1.2")
|
|
34 parser = self._writeAndSortAndParse([transcript1, transcript2])
|
|
35 self.assertEquals(parser.getNbTranscripts(), 2)
|
|
36 for cpt, transcript in enumerate(parser.getIterator()):
|
|
37 if cpt == 0:
|
|
38 self._checkTranscript(transcript, "chr1", 100, 200, "test1.2")
|
|
39 else:
|
|
40 self._checkTranscript(transcript, "chr1", 300, 400, "test1.1")
|
|
41
|
|
42 def test_same_start(self):
|
|
43 transcript1 = self._createTranscript("chr1", 100, 200, "test1.1")
|
|
44 transcript2 = self._createTranscript("chr1", 100, 300, "test1.2")
|
|
45 parser = self._writeAndSortAndParse([transcript1, transcript2])
|
|
46 self.assertEquals(parser.getNbTranscripts(), 2)
|
|
47 for cpt, transcript in enumerate(parser.getIterator()):
|
|
48 if cpt == 0:
|
|
49 self._checkTranscript(transcript, "chr1", 100, 300, "test1.2")
|
|
50 else:
|
|
51 self._checkTranscript(transcript, "chr1", 100, 200, "test1.1")
|
|
52
|
|
53 def _writeAndSortAndParse(self, transcripts):
|
|
54 writer = Gff3Writer(self._inputGff3FileName, 0)
|
|
55 for transcript in transcripts:
|
|
56 writer.addTranscript(transcript)
|
|
57 writer.close()
|
|
58 parser = GffParser(self._inputGff3FileName, 0)
|
|
59 fs = FileSorter(parser, 0)
|
|
60 fs.setOutputFileName(self._outputFileName)
|
|
61 fs.sort()
|
|
62 parser = NCListFileUnpickle(self._outputFileName, 0)
|
|
63 return parser
|
|
64
|
|
65 def _createTranscript(self, chromosome, start, end, name):
|
|
66 transcript = Transcript()
|
|
67 transcript.setChromosome(chromosome)
|
|
68 transcript.setStart(start)
|
|
69 transcript.setEnd(end)
|
|
70 transcript.setDirection("+")
|
|
71 transcript.setName(name)
|
|
72 return transcript
|
|
73
|
|
74 def _checkTranscript(self, transcript, chromosome, start, end, name):
|
|
75 self.assertEquals(transcript.getChromosome(), chromosome)
|
|
76 self.assertEquals(transcript.getStart(), start)
|
|
77 self.assertEquals(transcript.getEnd(), end)
|
|
78 self.assertEquals(transcript.getDirection(), 1)
|
|
79 self.assertEquals(transcript.getName(), name)
|
|
80
|
|
81
|
|
82 if __name__ == "__main__":
|
|
83 unittest.main()
|
|
84
|