18
+ − 1 import unittest
+ − 2 import os
+ − 3 from SMART.Java.Python.GetRandomSubset import GetRandomSubset
+ − 4 from commons.core.parsing.BedParser import BedParser
+ − 5 from commons.core.parsing.GffParser import GffParser
+ − 6
+ − 7 class Test_F_GetRandomSubset(unittest.TestCase):
+ − 8
+ − 9 def setUp(self):
+ − 10 self._inputFileName = "inputFileTest.bed"
+ − 11 self._writeInputFile()
+ − 12 self._outputFileName = "output.gff3"
+ − 13
+ − 14 def tearDown(self):
+ − 15 os.remove(self._inputFileName)
+ − 16 os.remove(self._outputFileName)
+ − 17
+ − 18 def test_run_simple(self):
+ − 19 nbElements = 2
+ − 20 inputTranscripts = []
+ − 21 parser = BedParser(self._inputFileName, 0)
+ − 22 for transcript in parser.getIterator():
+ − 23 inputTranscripts.append(transcript)
+ − 24 grs = GetRandomSubset(0)
+ − 25 grs.setInputFile(self._inputFileName, "bed")
+ − 26 grs.setNumber(nbElements, None)
+ − 27 grs.setOutputFile(self._outputFileName)
+ − 28 grs.run()
+ − 29 outputTranscripts = []
+ − 30 parser = GffParser(self._outputFileName, 0)
+ − 31 for transcript in parser.getIterator():
+ − 32 outputTranscripts.append(transcript)
+ − 33 self.assertEqual(len(outputTranscripts), nbElements)
+ − 34 for outputTranscript in outputTranscripts:
+ − 35 for inputTranscript in inputTranscripts:
+ − 36 if outputTranscript.getChromosome() == inputTranscript.getChromosome() and outputTranscript.getDirection() == inputTranscript.getDirection() and outputTranscript.getStart() == inputTranscript.getStart() and outputTranscript.getEnd() == inputTranscript.getEnd() and outputTranscript.getName() == inputTranscript.getName():
+ − 37 break
+ − 38 else:
+ − 39 self.fail()
+ − 40
+ − 41 def _writeInputFile(self):
+ − 42 f = open(self._inputFileName, "w")
+ − 43 f.write("arm_X\t10000100\t10000200\ttest1.1\t100\t+\t10000100\t10000200\t0\t1\t100,\t0,\n")
+ − 44 f.write("arm_X\t10000100\t10000200\ttest1.2\t100\t-\t10000100\t10000200\t0\t1\t100,\t0,\n")
+ − 45 f.write("arm_2R\t10000100\t10000200\ttest1.3\t100\t+\t10000100\t10000200\t0\t1\t100,\t0,\n")
+ − 46 f.write("arm_X\t10000000\t10000100\ttest1.4\t100\t+\t10000000\t10000100\t0\t1\t100,\t0,\n")
+ − 47 f.write("arm_X\t10000200\t10000300\ttest1.5\t100\t+\t10000200\t10000300\t0\t1\t100,\t0,\n")
+ − 48 f.write("arm_X\t9999900\t9999950\ttest1.6\t100\t+\t9999900\t9999950\t0\t1\t50,\t0,\n")
+ − 49 f.write("arm_X\t10000000\t10000050\ttest1.7\t100\t-\t10000000\t10000050\t0\t1\t50,\t0,\n")
+ − 50 f.close()
+ − 51
+ − 52
+ − 53
+ − 54 if __name__ == "__main__":
+ − 55 unittest.main()