Mercurial > repos > yufei-luo > s_mart
diff SMART/Java/Python/structure/test/Test_TranscriptListsComparator.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/structure/test/Test_TranscriptListsComparator.py Fri Jan 18 04:54:14 2013 -0500 @@ -0,0 +1,262 @@ +import os +import unittest +from SMART.Java.Python.structure.TranscriptListsComparator import TranscriptListsComparator +from SMART.Java.Python.structure.TranscriptContainer import TranscriptContainer +from commons.core.writer.Gff3Writer import Gff3Writer +from commons.core.parsing.GffParser import GffParser +from commons.core.utils.FileUtils import FileUtils + +SMART_PATH = os.environ["REPET_PATH"] + "/SMART" + +class Test_TranscriptListsComparator(unittest.TestCase): + + + def test_compareTranscriptList(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList1.bed" % SMART_PATH, "bed", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList2.bed" % SMART_PATH, "bed", 0) + outputContainer = "output.gff3" + comparator = TranscriptListsComparator(None, 0) + comparator.computeOdds(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + comparator.setOutputWriter(Gff3Writer(outputContainer, 0)) + comparator.compareTranscriptList() + parser = GffParser("output.gff3", 0) + self.assertEqual(parser.getNbTranscripts(), 2) + cpt = 0 + for transcript in parser.getIterator(): + if cpt == 0: + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 1999) + self.assertEqual(transcript.getDirection(), 1) + elif cpt == 1: + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 1999) + self.assertEqual(transcript.getDirection(), -1) + cpt += 1 + + + def test_compareTranscriptListDistanceSimple(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple1.gff3" % SMART_PATH, "gff", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple2.gff3" % SMART_PATH, "gff", 0) + + comparator = TranscriptListsComparator(None, 0) + comparator.computeOdds(True) + comparator.setMaxDistance(1000) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + distances = comparator.compareTranscriptListDistance() + + self.assertEqual(distances, {0: 1}) + + comparator = TranscriptListsComparator(None, 0) + comparator.computeOdds(True) + comparator.setMaxDistance(1000) + comparator.setInputTranscriptContainer(comparator.QUERY, container2) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container1) + distances = comparator.compareTranscriptListDistance() + + self.assertEqual(distances, {0: 1, -1000: 1}) + + + def test_compareTranscriptListDistanceAntisense(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense1.gff3" % SMART_PATH, "gff", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense2.gff3" % SMART_PATH, "gff", 0) + + comparator = TranscriptListsComparator(None, 0) + comparator.computeOdds(True) + comparator.setMaxDistance(10000) + comparator.getAntisenseOnly(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + distances = comparator.compareTranscriptListDistance() + + self.assertEqual(distances, {1000: 1}) + + + + def test_compareTranscriptListMergeSimple(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple1.bed" % SMART_PATH, "bed", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple2.bed" % SMART_PATH, "bed", 0) + outputContainer = 'output.gff3' + comparator = TranscriptListsComparator(None, 0) + comparator.computeOdds(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + comparator.setOutputWriter(Gff3Writer(outputContainer, 0)) + comparator.compareTranscriptListMerge() + + parser = GffParser(outputContainer, 0) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 3999) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getSize(), 3000) + + def test_compareTranscriptListMergeSenseAntiSenseAway(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1.bed" % SMART_PATH, "bed", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway2.bed" % SMART_PATH, "bed", 0) + outputContainer = 'output.gff3' + comparator = TranscriptListsComparator(None, 0) + comparator.restrictToStart(comparator.QUERY, 2) + comparator.restrictToStart(comparator.REFERENCE, 2) + comparator.extendFivePrime(comparator.REFERENCE, 150) + comparator.getAntisenseOnly(True) + comparator.computeOdds(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + comparator.setOutputWriter(Gff3Writer(outputContainer, 0)) + comparator.compareTranscriptListMerge() + + parser = GffParser(outputContainer, 0) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 10000048) + self.assertEqual(transcript.getEnd(), 10000199) + self.assertEqual(transcript.getSize(), 152) + self.assertEqual(transcript.getNbExons(), 1) + + + def test_compareTranscriptListMergeAggregation(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation1.bed" % SMART_PATH, "bed", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation2.bed" % SMART_PATH, "bed", 0) + outputContainer = 'output.gff3' + comparator = TranscriptListsComparator(None, 0) + comparator.getColinearOnly(True) + comparator.computeOdds(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + comparator.aggregate(True) + comparator.setOutputWriter(Gff3Writer(outputContainer, 0)) + comparator.compareTranscriptListMerge() + + parser = GffParser(outputContainer, 0) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 10000000) + self.assertEqual(transcript.getEnd(), 10000199) + self.assertEqual(transcript.getSize(), 200) + self.assertEqual(transcript.getNbExons(), 1) + + + def test_compareTranscriptListSelfMerge(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMerge1.gff3" % SMART_PATH, "gff", 0) + + comparator = TranscriptListsComparator(None, 0) + comparator.computeOdds(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setOutputWriter(Gff3Writer("output.gff3", 0)) + comparator.compareTranscriptListSelfMerge() + + parser = GffParser("output.gff3", 0) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 2000) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getNbExons(), 1) + self.assertEqual(transcript.getSize(), 1001) + self.assertEqual(float(transcript.getTagValue("nbElements")), 3) + + + def test_compareTranscriptListSelfMergeSense(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMerge1.gff3" % SMART_PATH, "gff", 0) + + comparator = TranscriptListsComparator(None, 0) + comparator.getColinearOnly(True) + comparator.computeOdds(True) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setOutputWriter(Gff3Writer("output.gff3", 0)) + comparator.compareTranscriptListSelfMerge() + + parser = GffParser("%s/SMART/Java/Python/structure/test/output.gff3" % os.environ["REPET_PATH"], 0) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 2000) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getNbExons(), 1) + self.assertEqual(transcript.getSize(), 1001) + + def test_compareTranscriptListSelfMergeDifferentClusters(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeDifferentClusters1.bed" % SMART_PATH, "bed", 0) + comparator = TranscriptListsComparator(None, 0) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setOutputWriter(Gff3Writer("output.gff3", 0)) + comparator.compareTranscriptListSelfMerge() + + parser = GffParser("output.gff3", 0) + self.assertEquals(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 100) + self.assertEqual(transcript.getEnd(), 100099) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getNbExons(), 1) + self.assertEqual(transcript.getSize(), 100000) + + + def test_compareTranscriptListgetDifferenceTranscriptList(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference1.gff3" % SMART_PATH, "gff", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference2.gff3" % SMART_PATH, "gff", 0) + + comparator = TranscriptListsComparator(None, 0) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + comparator.setOutputWriter(Gff3Writer("output.gff3", 0)) + comparator.getDifferenceTranscriptList() + + parser = GffParser("output.gff3", 0) + self.assertEqual(parser.getNbTranscripts(), 1) + for transcript in parser.getIterator(): + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 4000) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getNbExons(), 2) + exon1, exon2 = transcript.getExons() + self.assertEqual(exon1.getStart(), 1000) + self.assertEqual(exon1.getEnd(), 1999) + self.assertEqual(exon2.getStart(), 3001) + self.assertEqual(exon2.getEnd(), 4000) + + + + def test_compareTranscriptListgetDifferenceTranscriptListSplit(self): + container1 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference1.gff3" % SMART_PATH, "gff", 0) + container2 = TranscriptContainer("%s/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference2.gff3" % SMART_PATH, "gff", 0) + + comparator = TranscriptListsComparator(None, 0) + comparator.setInputTranscriptContainer(comparator.QUERY, container1) + comparator.setInputTranscriptContainer(comparator.REFERENCE, container2) + comparator.setSplitDifference(True) + comparator.setOutputWriter(Gff3Writer("output.gff3", 0)) + comparator.getDifferenceTranscriptList() + + parser = GffParser("output.gff3", 0) + self.assertEqual(parser.getNbTranscripts(), 2) + for id, transcript in enumerate(parser.getIterator()): + if id == 0: + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 1000) + self.assertEqual(transcript.getEnd(), 1999) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getNbExons(), 1) + else: + self.assertEqual(transcript.getChromosome(), "arm_X") + self.assertEqual(transcript.getStart(), 3001) + self.assertEqual(transcript.getEnd(), 4000) + self.assertEqual(transcript.getDirection(), 1) + self.assertEqual(transcript.getNbExons(), 1) + + +if __name__ == '__main__': + unittest.main()