flowcraft/templates/metaspades.py
def main(sample_id, fastq_pair, max_len, kmer, clear):
    """Main executor of the spades template.

    Parameters
    ----------
    sample_id : str
        Sample Identification string.
    fastq_pair : list
        Two element list containing the paired FastQ files.
    max_len : int
        Maximum read length. This value is determined in
        :py:class:`templates.integrity_coverage`
    kmer : str
        Can be either ``'auto'``, ``'default'`` or a
        sequence of space separated integers, ``'23, 45, 67'``.

    """

    logger.info("Starting spades")

    logger.info("Setting SPAdes kmers")
    kmers = set_kmers(kmer, max_len)
    logger.info("SPAdes kmers set to: {}".format(kmers))

    cli = [
        "metaspades.py",
        "--only-assembler",
        "--threads",
        "$task.cpus",
        "-o",
        "."
    ]

    # Add kmers, if any were specified
    if kmers:
        cli += ["-k {}".format(",".join([str(x) for x in kmers]))]

    # Add FastQ files
    cli += [
        "-1",
        fastq_pair[0],
        "-2",
        fastq_pair[1]
    ]

    logger.debug("Running metaSPAdes subprocess with command: {}".format(cli))

    p = subprocess.Popen(cli, stdout=PIPE, stderr=PIPE)
    stdout, stderr = p.communicate()

    # Attempt to decode STDERR output from bytes. If unsuccessful, coerce to
    # string
    try:
        stderr = stderr.decode("utf8")
        stdout = stdout.decode("utf8")
    except (UnicodeDecodeError, AttributeError):
        stderr = str(stderr)
        stdout = str(stdout)

    logger.info("Finished metaSPAdes subprocess with STDOUT:\\n"
                "======================================\\n{}".format(stdout))
    logger.info("Fished metaSPAdes subprocesswith STDERR:\\n"
                "======================================\\n{}".format(stderr))
    logger.info("Finished metaSPAdes with return code: {}".format(
        p.returncode))

    with open(".status", "w") as fh:
        if p.returncode != 0:
            fh.write("error")
            return
        else:
            fh.write("pass")

    # Change the default contigs.fasta assembly name to a more informative one
    if "_trim." in fastq_pair[0]:
        sample_id += "_trim"

    assembly_file = "{}_metaspades.fasta".format(
        sample_id)
    os.rename("contigs.fasta", assembly_file)
    logger.info("Setting main assembly file to: {}".format(assembly_file))

    # Remove input fastq files when clear option is specified.
    # Only remove temporary input when the expected output exists.
    if clear == "true" and os.path.exists(assembly_file):
        clean_up(fastq_pair)
def main(sample_id, fastq_pair, max_len, kmer, clear):
    logger.info("Starting spades")

    logger.info("Setting SPAdes kmers")
    kmers = set_kmers(kmer, max_len)
    logger.info("SPAdes kmers set to: {}".format(kmers))

    cli = [
        "metaspades.py",
        "--only-assembler",
        "--threads",
        "$task.cpus",
        "-o",
        "."
    ]

    # Add kmers, if any were specified
    if kmers:
        cli += ["-k {}".format(",".join([str(x) for x in kmers]))]

    # Add FastQ files
    cli += [
        "-1",
        fastq_pair[0],
        "-2",
        fastq_pair[1]
    ]

    logger.debug("Running metaSPAdes subprocess with command: {}".format(cli))

    p = subprocess.Popen(cli, stdout=PIPE, stderr=PIPE)
    stdout, stderr = p.communicate()

    # Attempt to decode STDERR output from bytes. If unsuccessful, coerce to
    # string
    try:
        stderr = stderr.decode("utf8")
        stdout = stdout.decode("utf8")
    except (UnicodeDecodeError, AttributeError):
        stderr = str(stderr)
        stdout = str(stdout)

    logger.info("Finished metaSPAdes subprocess with STDOUT:\\n"
                "======================================\\n{}".format(stdout))
    logger.info("Fished metaSPAdes subprocesswith STDERR:\\n"
                "======================================\\n{}".format(stderr))
    logger.info("Finished metaSPAdes with return code: {}".format(
        p.returncode))

    with open(".status", "w") as fh:
        if p.returncode != 0:
            fh.write("error")
            return
        else:
            fh.write("pass")

    # Change the default contigs.fasta assembly name to a more informative one
    if "_trim." in fastq_pair[0]:
        sample_id += "_trim"

    assembly_file = "{}_metaspades.fasta".format(
        sample_id)
    os.rename("contigs.fasta", assembly_file)
    logger.info("Setting main assembly file to: {}".format(assembly_file))

    # Remove input fastq files when clear option is specified.
    # Only remove temporary input when the expected output exists.
    if clear == "true" and os.path.exists(assembly_file):
        clean_up(fastq_pair)
def main ( sample_id , fastq_pair , max_len , kmer , clear ) : logger . info ( "Starting spades" ) logger . info ( "Setting SPAdes kmers" ) kmers = set_kmers ( kmer , max_len ) logger . info ( "SPAdes kmers set to: {}" . format ( kmers ) ) cli = [ "metaspades.py" , "--only-assembler" , "--threads" , "$task.cpus" , "-o" , "." ] # Add kmers, if any were specified if kmers : cli += [ "-k {}" . format ( "," . join ( [ str ( x ) for x in kmers ] ) ) ] # Add FastQ files cli += [ "-1" , fastq_pair [ 0 ] , "-2" , fastq_pair [ 1 ] ] logger . debug ( "Running metaSPAdes subprocess with command: {}" . format ( cli ) ) p = subprocess . Popen ( cli , stdout = PIPE , stderr = PIPE ) stdout , stderr = p . communicate ( ) # Attempt to decode STDERR output from bytes. If unsuccessful, coerce to # string try : stderr = stderr . decode ( "utf8" ) stdout = stdout . decode ( "utf8" ) except ( UnicodeDecodeError , AttributeError ) : stderr = str ( stderr ) stdout = str ( stdout ) logger . info ( "Finished metaSPAdes subprocess with STDOUT:\\n" "======================================\\n{}" . format ( stdout ) ) logger . info ( "Fished metaSPAdes subprocesswith STDERR:\\n" "======================================\\n{}" . format ( stderr ) ) logger . info ( "Finished metaSPAdes with return code: {}" . format ( p . returncode ) ) with open ( ".status" , "w" ) as fh : if p . returncode != 0 : fh . write ( "error" ) return else : fh . write ( "pass" ) # Change the default contigs.fasta assembly name to a more informative one if "_trim." in fastq_pair [ 0 ] : sample_id += "_trim" assembly_file = "{}_metaspades.fasta" . format ( sample_id ) os . rename ( "contigs.fasta" , assembly_file ) logger . info ( "Setting main assembly file to: {}" . format ( assembly_file ) ) # Remove input fastq files when clear option is specified. # Only remove temporary input when the expected output exists. if clear == "true" and os . path . exists ( assembly_file ) : clean_up ( fastq_pair )
Main executor of the spades template.

    Parameters
    ----------
    sample_id : str
        Sample Identification string.
    fastq_pair : list
        Two element list containing the paired FastQ files.
    max_len : int
        Maximum read length. This value is determined in
        :py:class:`templates.integrity_coverage`
    kmer : str
        Can be either ``'auto'``, ``'default'`` or a
        sequence of space separated integers, ``'23, 45, 67'``.
Main executor of the spades template .