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()
|