18
|
1 import unittest
|
|
2 import os, glob
|
|
3 from SMART.Java.Python.mapperAnalyzer import MapperAnalyzer
|
|
4 from commons.core.parsing.GffParser import GffParser
|
|
5
|
|
6 class Test_F_mapperAnalyzer(unittest.TestCase):
|
|
7
|
|
8 def setUp(self):
|
|
9 self.readsFileName = "inputFile.fastq"
|
|
10 self.mappingFileName = "inputFile.sam"
|
|
11 self.outputFileName = "outputFile.gff3"
|
|
12
|
|
13 def tearDown(self):
|
|
14 for fileRoot in (self.readsFileName, self.mappingFileName, self.outputFileName):
|
|
15 for file in glob.glob("%s*" % (fileRoot)):
|
|
16 os.remove(file)
|
|
17 os.system("rm tmpNames_* tmpSequences_* smartdb*")
|
|
18
|
|
19 def test_run_simple(self):
|
|
20 handle = open(self.readsFileName, "w")
|
|
21 handle.write("@read1\n")
|
|
22 handle.write("AAAAAAAAAAAAAAAAAAAA\n")
|
|
23 handle.write("+\n")
|
|
24 handle.write("AAAAAAAAAAAAAAAAAAAA\n")
|
|
25 handle.write("@read2\n")
|
|
26 handle.write("CCCCCCCCCCCCCCCCCCCC\n")
|
|
27 handle.write("+\n")
|
|
28 handle.write("AAAAAAAAAAAAAAAAAAAA\n")
|
|
29 handle.close()
|
|
30 handle = open(self.mappingFileName, "w")
|
|
31 handle.write("read1\t0\tchr1\t1\t30\t20M\t*\t0\t0\tAAAAAAAAAAAAAAAAAAAA\tAAAAAAAAAAAAAAAAAAAA\tNM:i:0\n")
|
|
32 handle.write("read2\t0\tchr2\t1\t30\t20M\t*\t0\t0\tCCCCCCCCCCCCCCCCCCCC\tAAAAAAAAAAAAAAAAAAAA\tNM:i:0\n")
|
|
33 handle.write("read2\t0\tchr3\t1\t30\t20M\t*\t0\t0\tCCCCCCCCCCCCCCCCCCCC\tAAAAAAAAAAAAAAAAAAAA\tNM:i:0\n")
|
|
34 handle.close()
|
|
35 analyzer = MapperAnalyzer(0)
|
|
36 analyzer.setMappingFile(self.mappingFileName, "sam")
|
|
37 analyzer.setSequenceFile(self.readsFileName, "fastq")
|
|
38 analyzer.setOutputFile(self.outputFileName, "S-MART")
|
|
39 analyzer.setMaxMappings(1)
|
|
40 analyzer.mergeExons(True)
|
|
41 analyzer.analyze()
|
|
42
|
|
43 parser = GffParser(self.outputFileName)
|
|
44 self.assertEqual(parser.getNbTranscripts(), 1)
|
|
45 for transcript in parser.getIterator():
|
|
46 self.assertEqual(transcript.getName(), "read1")
|
|
47 self.assertEqual(transcript.getChromosome(), "chr1")
|
|
48 self.assertEqual(transcript.getStart(), 1)
|
|
49 self.assertEqual(transcript.getEnd(), 20)
|
|
50 self.assertEqual(transcript.getDirection(), 1)
|
|
51
|
|
52
|
|
53 if __name__ == "__main__":
|
|
54 unittest.main()
|
|
55
|