Mercurial > repos > yufei-luo > s_mart
diff commons/tools/tests/Test_F_LaunchBlasterInParallel.py @ 18:94ab73e8a190
Uploaded
author | m-zytnicki |
---|---|
date | Mon, 29 Apr 2013 03:20:15 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commons/tools/tests/Test_F_LaunchBlasterInParallel.py Mon Apr 29 03:20:15 2013 -0400 @@ -0,0 +1,116 @@ +from commons.core.utils.FileUtils import FileUtils +import unittest +import os +import shutil +from commons.tools.LaunchBlasterInParallel import LaunchBlasterInParallel + +class Test_F_LaunchBlasterInParallel(unittest.TestCase): + + CLUSTER_HOST = "compute-2-46.local" + + def setUp(self): + self._inFilePath = "%s/Tools/DmelChr4_chunks.fa" % os.environ["REPET_DATA"] + self._configFileName = "TE.cfg" + self._outputFileName = "out.align.not_over" + + def tearDown(self): + try: + os.remove(self._outputFileName) + os.remove(self._configFileName) + except: + pass + + def test_run_as_script_1bank_1file_withoutABA(self): + self._outputFileName = "out.align" + os.mkdir("tmp") + os.chdir("tmp") + queryFileName = "chunks.fa" + with open(queryFileName, "w") as f: + f.write(">chunk1\n") + f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n") + f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n") + os.chdir("..") + subjectFileName = "genome.fa" + with open(subjectFileName, "w") as f: + f.write(">chunk1\n") + f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n") + f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n") + f.write(">chunk2\n") + f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n") + f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n") + expFileName = "expected" + with open(expFileName, "w") as f: + f.write("chunk1\t1\t120\tchunk1\t1\t120\t4e-68\t238\t100\n") + f.write("chunk1\t1\t120\tchunk2\t1\t120\t4e-68\t238\t100\n") + self._writeConfig(0.1) + + cmd = "LaunchBlasterInParallel.py -q %s/tmp -s %s/%s -C %s -o %s" % (os.getcwd(), os.getcwd(), subjectFileName, self._configFileName, self._outputFileName) + os.system(cmd) + + self.assertTrue(FileUtils.are2FilesIdentical(expFileName, self._outputFileName)) + FileUtils.removeFilesByPattern("*.param") + shutil.rmtree("tmp") + os.remove(subjectFileName) + os.remove(expFileName) + + def test_run_as_script_1bank_2_batches(self): + os.mkdir("tmp") + os.chdir("tmp") + os.symlink("%s/Tools/batches/batch_1.fa" % os.environ["REPET_DATA"], "batch_1.fa") + os.symlink("%s/Tools/batches/batch_2.fa" % os.environ["REPET_DATA"], "batch_2.fa") + os.chdir("..") + + expFileName = "%s/Tools/DmelChr4.align.not_over" % os.environ["REPET_DATA"] + self._writeConfig() + + cmd = "LaunchBlasterInParallel.py -q %s/tmp -s %s -a -o %s -C %s" % (os.getcwd(), self._inFilePath, self._outputFileName, self._configFileName) + os.system(cmd) + + self.assertTrue(FileUtils.are2FilesIdentical(expFileName, self._outputFileName)) + FileUtils.removeFilesByPattern("*.param") + shutil.rmtree("tmp") + + def test_run_1bank_1bank_2_batches(self): + os.mkdir("tmp") + os.chdir("tmp") + os.symlink("%s/Tools/batches/batch_1.fa" % os.environ["REPET_DATA"], "batch_1.fa") + os.symlink("%s/Tools/batches/batch_2.fa" % os.environ["REPET_DATA"], "batch_2.fa") + os.chdir("..") + + expFileName = "%s/Tools/DmelChr4.align.not_over" % os.environ["REPET_DATA"] + self._writeConfig() + + iLaunchBlaster = LaunchBlasterInParallel(configFileName = self._configFileName, outFileName = self._outputFileName) + iLaunchBlaster.setDoAllByall(True) + iLaunchBlaster.setVerbosity(4) + iLaunchBlaster.setQueryDirectory("%s/tmp" % os.getcwd()) + iLaunchBlaster.setSubjectFilePath(self._inFilePath) + iLaunchBlaster.run() + + self.assertTrue(FileUtils.are2FilesIdentical(expFileName, self._outputFileName)) + FileUtils.removeFilesByPattern("*.param") + shutil.rmtree("tmp") + + def _writeConfig(self, eValue = 1e-300): + with open(self._configFileName, "w") as fh: + fh.write("[jobs]\n") + if os.getenv("HOSTNAME") == self.CLUSTER_HOST: + fh.write("resources: test\n") + else: + fh.write("resources:\n") + fh.write("tmpDir:\n") + fh.write("copy: no\n") + fh.write("clean: yes\n") + fh.write("\n") + fh.write("[prepare_data]\n") + fh.write("chunk_length: 200000\n") + fh.write("chunk_overlap: 10000\n") + fh.write("\n") + fh.write("[alignment]\n") + fh.write("blast: ncbi\n") + fh.write("Evalue: %s\n" % eValue) + fh.write("length: 100\n") + fh.write("identity: 90\n") + +if __name__ == "__main__": + unittest.main() \ No newline at end of file