comparison SMART/Java/Python/ncList/test/Test_F_FileSorter.py @ 6:769e306b7933

Change the repository level.
author yufei-luo
date Fri, 18 Jan 2013 04:54:14 -0500
parents
children
comparison
equal deleted inserted replaced
5:ea3082881bf8 6:769e306b7933
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