Mercurial > repos > yufei-luo > s_mart
comparison commons/tools/tests/Test_F_LaunchBlasterInParallel.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 from commons.core.utils.FileUtils import FileUtils | |
2 import unittest | |
3 import os | |
4 import shutil | |
5 from commons.tools.LaunchBlasterInParallel import LaunchBlasterInParallel | |
6 | |
7 class Test_F_LaunchBlasterInParallel(unittest.TestCase): | |
8 | |
9 CLUSTER_HOST = "compute-2-46.local" | |
10 | |
11 def setUp(self): | |
12 self._inFilePath = "%s/Tools/DmelChr4_chunks.fa" % os.environ["REPET_DATA"] | |
13 self._configFileName = "TE.cfg" | |
14 self._outputFileName = "out.align.not_over" | |
15 | |
16 def tearDown(self): | |
17 try: | |
18 os.remove(self._outputFileName) | |
19 os.remove(self._configFileName) | |
20 except: | |
21 pass | |
22 | |
23 def test_run_as_script_1bank_1file_withoutABA(self): | |
24 self._outputFileName = "out.align" | |
25 os.mkdir("tmp") | |
26 os.chdir("tmp") | |
27 queryFileName = "chunks.fa" | |
28 with open(queryFileName, "w") as f: | |
29 f.write(">chunk1\n") | |
30 f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n") | |
31 f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n") | |
32 os.chdir("..") | |
33 subjectFileName = "genome.fa" | |
34 with open(subjectFileName, "w") as f: | |
35 f.write(">chunk1\n") | |
36 f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n") | |
37 f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n") | |
38 f.write(">chunk2\n") | |
39 f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n") | |
40 f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n") | |
41 expFileName = "expected" | |
42 with open(expFileName, "w") as f: | |
43 f.write("chunk1\t1\t120\tchunk1\t1\t120\t4e-68\t238\t100\n") | |
44 f.write("chunk1\t1\t120\tchunk2\t1\t120\t4e-68\t238\t100\n") | |
45 self._writeConfig(0.1) | |
46 | |
47 cmd = "LaunchBlasterInParallel.py -q %s/tmp -s %s/%s -C %s -o %s" % (os.getcwd(), os.getcwd(), subjectFileName, self._configFileName, self._outputFileName) | |
48 os.system(cmd) | |
49 | |
50 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, self._outputFileName)) | |
51 FileUtils.removeFilesByPattern("*.param") | |
52 shutil.rmtree("tmp") | |
53 os.remove(subjectFileName) | |
54 os.remove(expFileName) | |
55 | |
56 def test_run_as_script_1bank_2_batches(self): | |
57 os.mkdir("tmp") | |
58 os.chdir("tmp") | |
59 os.symlink("%s/Tools/batches/batch_1.fa" % os.environ["REPET_DATA"], "batch_1.fa") | |
60 os.symlink("%s/Tools/batches/batch_2.fa" % os.environ["REPET_DATA"], "batch_2.fa") | |
61 os.chdir("..") | |
62 | |
63 expFileName = "%s/Tools/DmelChr4.align.not_over" % os.environ["REPET_DATA"] | |
64 self._writeConfig() | |
65 | |
66 cmd = "LaunchBlasterInParallel.py -q %s/tmp -s %s -a -o %s -C %s" % (os.getcwd(), self._inFilePath, self._outputFileName, self._configFileName) | |
67 os.system(cmd) | |
68 | |
69 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, self._outputFileName)) | |
70 FileUtils.removeFilesByPattern("*.param") | |
71 shutil.rmtree("tmp") | |
72 | |
73 def test_run_1bank_1bank_2_batches(self): | |
74 os.mkdir("tmp") | |
75 os.chdir("tmp") | |
76 os.symlink("%s/Tools/batches/batch_1.fa" % os.environ["REPET_DATA"], "batch_1.fa") | |
77 os.symlink("%s/Tools/batches/batch_2.fa" % os.environ["REPET_DATA"], "batch_2.fa") | |
78 os.chdir("..") | |
79 | |
80 expFileName = "%s/Tools/DmelChr4.align.not_over" % os.environ["REPET_DATA"] | |
81 self._writeConfig() | |
82 | |
83 iLaunchBlaster = LaunchBlasterInParallel(configFileName = self._configFileName, outFileName = self._outputFileName) | |
84 iLaunchBlaster.setDoAllByall(True) | |
85 iLaunchBlaster.setVerbosity(4) | |
86 iLaunchBlaster.setQueryDirectory("%s/tmp" % os.getcwd()) | |
87 iLaunchBlaster.setSubjectFilePath(self._inFilePath) | |
88 iLaunchBlaster.run() | |
89 | |
90 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, self._outputFileName)) | |
91 FileUtils.removeFilesByPattern("*.param") | |
92 shutil.rmtree("tmp") | |
93 | |
94 def _writeConfig(self, eValue = 1e-300): | |
95 with open(self._configFileName, "w") as fh: | |
96 fh.write("[jobs]\n") | |
97 if os.getenv("HOSTNAME") == self.CLUSTER_HOST: | |
98 fh.write("resources: test\n") | |
99 else: | |
100 fh.write("resources:\n") | |
101 fh.write("tmpDir:\n") | |
102 fh.write("copy: no\n") | |
103 fh.write("clean: yes\n") | |
104 fh.write("\n") | |
105 fh.write("[prepare_data]\n") | |
106 fh.write("chunk_length: 200000\n") | |
107 fh.write("chunk_overlap: 10000\n") | |
108 fh.write("\n") | |
109 fh.write("[alignment]\n") | |
110 fh.write("blast: ncbi\n") | |
111 fh.write("Evalue: %s\n" % eValue) | |
112 fh.write("length: 100\n") | |
113 fh.write("identity: 90\n") | |
114 | |
115 if __name__ == "__main__": | |
116 unittest.main() |