Source code for clean.Clean_Deep_Program_Macse

from classes.ChewbaccaProgram import ChewbaccaProgram
from classes.Helpers import getInputFiles, init_pool, printVerbose, run_parallel, getFileName, cleanup_pool
from classes.ProgramRunner import ProgramRunner,ProgramRunnerCommands

class Clean_Deep_Program_Macse(ChewbaccaProgram):
    """Uses Macse's enrichAlignment program to align a set of sequences."""
    name = "macse"

    def execute_program(self):
        args = self.args
        self.align_macse(args.input_f, args.db, args.outdir, args.processes, args.extraargstring)

    def align_macse(self, input_f, db, outdir, processes, extraargstring):
        """Aligns sequences by iteratively adding them to a known good alignment.

        :param input_f: Filepath to an input file or folder to rename.
        :param db: Filepath to a reference file or folder of reference files for alignment.
        :param outdir: Filepath to the output directory.
        :param processes: The maximum number of processes to use.
        :param extraargstring: Advanced program parameter string.
        """
        # "macse_align":      "java -jar " + programPaths["MACSE"] + " -prog enrichAlignment  -seq \"%s\" -align \
        #                                    \"%s\" -seq_lr \"%s\" -maxFS_inSeq 0  -maxSTOP_inSeq 0  -maxINS_inSeq 0 \
        #                                    -maxDEL_inSeq 3 -gc_def 5 -fs_lr -10 -stop_lr -10 -out_NT \"%s\"_NT \
        #                                    -out_AA \"%s\"_AA -seqToAdd_logFile \"%s\"_log.csv",

        inputs = getInputFiles(input_f)
        pool = init_pool(min(len(inputs), processes))
        printVerbose("Aligning reads using MACSE")
        inputs = getInputFiles(input_f)
        run_parallel([ProgramRunner(ProgramRunnerCommands.MACSE_ALIGN,
                                    [db, db, input_] + ["%s/%s" % (outdir, getFileName(input_))] * 3,
                                    {"exists": [input_, db]}, extraargstring)
                      for input_ in inputs], pool)
        printVerbose("Done with MACSE alignment.")
        cleanup_pool(pool)