Mercurial > repos > yufei-luo > s_mart
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMART/Java/Python/ncList/test/Test_F_FileSorter.py Fri Jan 18 04:54:14 2013 -0500 @@ -0,0 +1,84 @@ +import os +import unittest +import struct +from SMART.Java.Python.misc import Utils +from SMART.Java.Python.ncList.FileSorter import FileSorter +from SMART.Java.Python.structure.Transcript import Transcript +from commons.core.writer.Gff3Writer import Gff3Writer +from commons.core.parsing.GffParser import GffParser +from SMART.Java.Python.ncList.NCListFilePickle import NCListFileUnpickle + + +class Test_F_FileSorter(unittest.TestCase): + + def setUp(self): + self._inputGff3FileName = 'inputFile.gff3' + self._outputFileName = 'outputFile.pkl' + + def tearDown(self): + return + for fileName in (self._inputGff3FileName, self._sortedFileName, self._expHFileName, self._expLFileName, self._obsHFileName, self._obsLFileName, self._addressFileName): + if os.path.exists(fileName): + os.remove(fileName) + + def test_unique(self): + transcript = self._createTranscript("chr1", 100, 200, "test1.1") + parser = self._writeAndSortAndParse([transcript]) + self.assertEquals(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self._checkTranscript(transcript, "chr1", 100, 200, "test1.1") + + def test_simple(self): + transcript1 = self._createTranscript("chr1", 300, 400, "test1.1") + transcript2 = self._createTranscript("chr1", 100, 200, "test1.2") + parser = self._writeAndSortAndParse([transcript1, transcript2]) + self.assertEquals(parser.getNbTranscripts(), 2) + for cpt, transcript in enumerate(parser.getIterator()): + if cpt == 0: + self._checkTranscript(transcript, "chr1", 100, 200, "test1.2") + else: + self._checkTranscript(transcript, "chr1", 300, 400, "test1.1") + + def test_same_start(self): + transcript1 = self._createTranscript("chr1", 100, 200, "test1.1") + transcript2 = self._createTranscript("chr1", 100, 300, "test1.2") + parser = self._writeAndSortAndParse([transcript1, transcript2]) + self.assertEquals(parser.getNbTranscripts(), 2) + for cpt, transcript in enumerate(parser.getIterator()): + if cpt == 0: + self._checkTranscript(transcript, "chr1", 100, 300, "test1.2") + else: + self._checkTranscript(transcript, "chr1", 100, 200, "test1.1") + + def _writeAndSortAndParse(self, transcripts): + writer = Gff3Writer(self._inputGff3FileName, 0) + for transcript in transcripts: + writer.addTranscript(transcript) + writer.close() + parser = GffParser(self._inputGff3FileName, 0) + fs = FileSorter(parser, 0) + fs.setOutputFileName(self._outputFileName) + fs.sort() + parser = NCListFileUnpickle(self._outputFileName, 0) + return parser + + def _createTranscript(self, chromosome, start, end, name): + transcript = Transcript() + transcript.setChromosome(chromosome) + transcript.setStart(start) + transcript.setEnd(end) + transcript.setDirection("+") + transcript.setName(name) + return transcript + + def _checkTranscript(self, transcript, chromosome, start, end, name): + self.assertEquals(transcript.getChromosome(), chromosome) + self.assertEquals(transcript.getStart(), start) + self.assertEquals(transcript.getEnd(), end) + self.assertEquals(transcript.getDirection(), 1) + self.assertEquals(transcript.getName(), name) + + +if __name__ == "__main__": + unittest.main() +