Mercurial > repos > yufei-luo > s_mart
comparison SMART/Java/Python/test/Test_F_getLetterDistribution.py @ 18:94ab73e8a190
Uploaded
author | m-zytnicki |
---|---|
date | Mon, 29 Apr 2013 03:20:15 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
17:b0e8584489e6 | 18:94ab73e8a190 |
---|---|
1 import os | |
2 import sys | |
3 import unittest | |
4 from SMART.Java.Python.test.MockGetLetterDistribution import MockGetLetterDistributionFasta | |
5 from SMART.Java.Python.test.MockGetLetterDistribution import MockGetLetterDistributionFastq | |
6 from SMART.Java.Python.test.MockGetLetterDistribution import MockGetLetterDistributionExpectedCSV | |
7 | |
8 class Test_F_getLetterDistribution(unittest.TestCase): | |
9 | |
10 def tearDown(self): | |
11 os.system("rm tmp*.*") | |
12 | |
13 def test_getLetterDistributionWithFasta(self): | |
14 iFastaMock = MockGetLetterDistributionFasta() | |
15 fastaFileName = "MockFasta_GetLetterDistribution.fa" | |
16 iFastaMock.write(fastaFileName) | |
17 | |
18 outputName = "dummy_result_fasta" | |
19 os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fasta -o %s" % (os.environ["REPET_PATH"], fastaFileName, outputName)) | |
20 | |
21 self.assertTrue (os.path.exists(outputName + ".png")) | |
22 self.assertTrue (os.path.exists(outputName + "PerNt.png")) | |
23 | |
24 os.remove(outputName + ".png") | |
25 os.remove(outputName + "PerNt.png") | |
26 os.remove(fastaFileName) | |
27 | |
28 def test_getLetterDistributionWithFastq(self): | |
29 iFastqMock = MockGetLetterDistributionFastq() | |
30 fastqFileName = "MockFastq_GetLetterDistribution.fastq" | |
31 iFastqMock.write(fastqFileName) | |
32 | |
33 outputName = "dummy_result_fastq" | |
34 os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fastq -o %s" % (os.environ["REPET_PATH"], fastqFileName, outputName)) | |
35 | |
36 self.assertTrue (os.path.exists(outputName + ".png")) | |
37 self.assertTrue (os.path.exists(outputName + "PerNt.png")) | |
38 | |
39 os.remove(fastqFileName) | |
40 os.remove(outputName + ".png") | |
41 os.remove(outputName + "PerNt.png") | |
42 | |
43 def test_getLetterDistributionWithFastaCSVOutput(self): | |
44 iFastaMock = MockGetLetterDistributionFasta() | |
45 fastaFileName = "MockFasta_GetLetterDistribution.fa" | |
46 iFastaMock.write(fastaFileName) | |
47 | |
48 iCSVMock = MockGetLetterDistributionExpectedCSV() | |
49 expCSVFileName = "expCSV.csv" | |
50 iCSVMock.write(expCSVFileName) | |
51 | |
52 outputName = "dummy_result_fasta" | |
53 os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fasta -o %s -c" % (os.environ["REPET_PATH"], fastaFileName, outputName)) | |
54 | |
55 obsCSVFileName = outputName + ".csv" | |
56 | |
57 self.assertTrue (os.path.exists(outputName + ".png")) | |
58 self.assertTrue (os.path.exists(outputName + "PerNt.png")) | |
59 self.assertTrue (self._are2FilesIdentical(expCSVFileName, obsCSVFileName)) | |
60 | |
61 os.remove(outputName + ".png") | |
62 os.remove(outputName + "PerNt.png") | |
63 os.remove(fastaFileName) | |
64 os.remove(expCSVFileName) | |
65 os.remove(obsCSVFileName) | |
66 | |
67 def test_getLetterDistributionWithFastqCVSOutput(self): | |
68 iFastqMock = MockGetLetterDistributionFastq() | |
69 fastqFileName = "MockFastq_GetLetterDistribution.fastq" | |
70 iFastqMock.write(fastqFileName) | |
71 | |
72 iCSVMock = MockGetLetterDistributionExpectedCSV() | |
73 expCSVFileName = "expCSV.csv" | |
74 iCSVMock.write(expCSVFileName) | |
75 | |
76 outputName = "dummy_result_fastq" | |
77 os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fastq -o %s -c" % (os.environ["REPET_PATH"], fastqFileName, outputName)) | |
78 | |
79 obsCSVFileName = outputName + ".csv" | |
80 | |
81 self.assertTrue (os.path.exists(outputName + ".png")) | |
82 self.assertTrue (os.path.exists(outputName + "PerNt.png")) | |
83 self.assertTrue (self._are2FilesIdentical(expCSVFileName, obsCSVFileName)) | |
84 | |
85 os.remove(fastqFileName) | |
86 os.remove(outputName + ".png") | |
87 os.remove(outputName + "PerNt.png") | |
88 os.remove(expCSVFileName) | |
89 os.remove(obsCSVFileName) | |
90 | |
91 def _are2FilesIdentical(self, file1, file2 ): | |
92 tmpFile = "diff_%s_%s" % ( os.path.basename(file1), os.path.basename(file2) ) | |
93 cmd = "diff %s %s >> %s" % ( file1, file2, tmpFile ) | |
94 returnStatus = os.system( cmd ) | |
95 if returnStatus != 0: | |
96 msg = "ERROR: 'diff' returned '%i'" % ( returnStatus ) | |
97 sys.stderr.write( "%s\n" % msg ) | |
98 sys.stderr.flush() | |
99 os.remove( tmpFile ) | |
100 return False | |
101 if self.isEmpty( tmpFile ): | |
102 os.remove( tmpFile ) | |
103 return True | |
104 else: | |
105 os.remove( tmpFile ) | |
106 return False | |
107 | |
108 def getNbLinesInSingleFile(self, fileName): | |
109 fileHandler = open(fileName, "r" ) | |
110 lines = fileHandler.readlines() | |
111 fileHandler.close() | |
112 return len(lines) | |
113 | |
114 def isEmpty(self, fileName): | |
115 return 0 == self.getNbLinesInSingleFile( fileName ) | |
116 | |
117 if __name__ == "__main__": | |
118 unittest.main() |