view commons/tools/tests/Test_F_LaunchBlaster.py @ 18:94ab73e8a190

Uploaded
author m-zytnicki
date Mon, 29 Apr 2013 03:20:15 -0400
parents
children
line wrap: on
line source

from commons.core.utils.FileUtils import FileUtils
import unittest
import os
import glob
from commons.tools.LaunchBlaster import LaunchBlaster

class Test_F_LaunchBlaster(unittest.TestCase):

    def setUp(self):
        self._inFileName = "DmelChr4.fa"
        inFilePath = "%s/Tools/%s" % (os.environ["REPET_DATA"], self._inFileName)
        try:
            os.remove(self._inFileName)
        except:
            pass
        os.symlink(inFilePath, self._inFileName)
        self._iLaunchBlaster = LaunchBlaster(self._inFileName)
        self._iLaunchBlaster.setDoAllByall(True)
        self._iLaunchBlaster.setVerbosity(4)

    def tearDown(self):
        try:
            FileUtils.removeFilesByPattern("%s*" % self._inFileName)
            os.remove("formatdb.log")
        except:
            pass

    def test_run_as_class_1_file(self):
        expFileName = "%s/Tools/DmelChr4.align" % os.environ["REPET_DATA"]
        obsFileName = "%s.align" % self._inFileName
        
        self._iLaunchBlaster.run()
        
        self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
        
    def test_run_as_class_1_file_changed_params(self):
        expFileName = "DmelChr4.align"
        with open(expFileName, "w") as fh:
            fh.write("dmel_chr4\t691910\t692326\tdmel_chr4\t700019\t700435\t0\t827\t100\n")
        obsFileName = "%s.align" % self._inFileName
        
        self._iLaunchBlaster.setIdentity(100)
        self._iLaunchBlaster.setCPU(4)
        self._iLaunchBlaster.setDoClean(True)
        self._iLaunchBlaster.run()
        
        self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
        os.remove(expFileName)
        self.assertTrue(glob.glob("*fa_cut*") == [])
        self.assertTrue(glob.glob("*Nstretch*") == [])
        self.assertTrue(glob.glob("*seq_treated*") == [])
        self.assertTrue(glob.glob("*.log") == [])
        
    def test_run_as_script_1bank_1file(self):
        inputFileName = "chunks.fa"
        with open(inputFileName, "w") as f:
            f.write(">chunk1\n")
            f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n")
            f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n")
        expFileName = "exp.align"
        with open(expFileName, "w") as f:
            f.write("chunk1\t1\t120\tdmel_chr4\t1\t120\t2e-64\t238\t100\n")
        obsFileName = "%s.align" % inputFileName
        
        cmd = "LaunchBlaster.py -q %s -s %s -e 0.1 -a" % (inputFileName, self._inFileName)
        os.system(cmd)
        
        self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
        FileUtils.removeFilesByPattern("%s*" % inputFileName)
        os.remove(expFileName)
        
    def test_run_as_script_1bank_1file_withoutABA(self):
        queryFileName = "chunks.fa"
        with open(queryFileName, "w") as f:
            f.write(">chunk1\n")
            f.write("GAATTCGCGTCCGCTTACCCATGTGCCTGTGGATGCCGAACAGGAGGCGCCGTTGACGGC\n")
            f.write("GAATGACTTACTCAAGGGAGTAGCCAATCTGTCGGATACGCCCGGATTGGAGCTGCCCAT\n")
        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 = "exp.align"
        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")
        obsFileName = "%s.align" % queryFileName
        
        cmd = "LaunchBlaster.py -q %s -s %s -e 0.1" % (queryFileName, subjectFileName)
        os.system(cmd)
        
        self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
        FileUtils.removeFilesByPattern("%s*" % queryFileName)
        FileUtils.removeFilesByPattern("%s*" % subjectFileName)
        os.remove(expFileName)

if __name__ == "__main__":
    unittest.main()