Mercurial > repos > yufei-luo > s_mart
diff SMART/Java/Python/test/Test_F_mergeTranscriptLists.py @ 31:0ab839023fe4
Uploaded
author | m-zytnicki |
---|---|
date | Tue, 30 Apr 2013 14:33:21 -0400 |
parents | 94ab73e8a190 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMART/Java/Python/test/Test_F_mergeTranscriptLists.py Tue Apr 30 14:33:21 2013 -0400 @@ -0,0 +1,92 @@ +import unittest +import os, os.path, glob +from SMART.Java.Python.structure.Transcript import Transcript +from SMART.Java.Python.mergeTranscriptLists import MergeLists +from commons.core.writer.Gff3Writer import Gff3Writer +from commons.core.parsing.GffParser import GffParser + +class Test_F_mergeTranscriptLists(unittest.TestCase): + + def setUp(self): + self.queryFileName = "testQuery.gff3" + self.referenceFileName = "testReference.gff3" + self.outputFileName = "testOutput.gff3" + + def tearDown(self): + for fileRoot in (self.queryFileName, self.referenceFileName, self.outputFileName): + for file in glob.glob("%s*" % (fileRoot)): + os.remove(file) + for file in glob.glob("tmp_*.gff3"): + os.remove(file) + + def test_run_simple(self): + reference1 = self._createTranscript("chr1", 1000, 2000, "+", "ref1") + reference2 = self._createTranscript("chr1", 3000, 4000, "+", "ref2") + reference3 = self._createTranscript("chr1", 5000, 6000, "+", "ref3") + writer = Gff3Writer(self.referenceFileName, 0) + writer.addTranscript(reference1) + writer.addTranscript(reference2) + writer.addTranscript(reference3) + writer.close() + query1 = self._createTranscript("chr1", 1500, 3500, "+", "query1") + writer = Gff3Writer(self.queryFileName, 0) + writer.addTranscript(query1) + writer.close() + ml = MergeLists(0) + ml.setInputFileName(self.queryFileName, 'gff3', 0) + ml.setInputFileName(self.referenceFileName, 'gff3', 1) + ml.setOutputFileName(self.outputFileName) + ml.run() + parser = GffParser(self.outputFileName) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self._checkTranscript(transcript, "chr1", 1000, 4000, "+", None) + + def test_run_simple_aggregate(self): + reference1 = self._createTranscript("chr1", 1000, 2000, "+", "ref1") + reference2 = self._createTranscript("chr1", 3000, 4000, "+", "ref2") + reference3 = self._createTranscript("chr1", 5000, 6000, "+", "ref3") + writer = Gff3Writer(self.referenceFileName, 0) + writer.addTranscript(reference1) + writer.addTranscript(reference2) + writer.addTranscript(reference3) + writer.close() + query1 = self._createTranscript("chr1", 1500, 3500, "+", "query1") + writer = Gff3Writer(self.queryFileName, 0) + writer.addTranscript(query1) + writer.close() + ml = MergeLists(0) + ml.setInputFileName(self.queryFileName, 'gff3', 0) + ml.setInputFileName(self.referenceFileName, 'gff3', 1) + ml.setOutputFileName(self.outputFileName) + ml.setAggregate(True) + ml.run() + parser = GffParser(self.outputFileName) + self.assertEqual(parser.getNbTranscripts(), 2) + for cpt, transcript in enumerate(parser.getIterator()): + if cpt == 0: + self._checkTranscript(transcript, "chr1", 1000, 4000, "+", None) + else: + self._checkTranscript(transcript, "chr1", 5000, 6000, "+", None) + + def _createTranscript(self, chromosome, start, end, strand, name): + transcript = Transcript() + transcript.setChromosome(chromosome) + transcript.setStart(start) + transcript.setEnd(end) + transcript.setDirection(strand) + transcript.setName(name) + return transcript + + def _checkTranscript(self, transcript, chromosome, start, end, strand, name): + self.assertEqual(transcript.getChromosome(), chromosome) + self.assertEqual(transcript.getStart(), start) + self.assertEqual(transcript.getEnd(), end) + self.assertEqual(transcript.getStrand(), strand) + if name != None: + self.assertEqual(transcript.getName(), name) + + +if __name__ == "__main__": + unittest.main() +