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