flowcraft/templates/process_assembly_mapping.py
def main(sample_id, assembly_file, coverage_file, coverage_bp_file, bam_file,
         opts, gsize):
    """Main executor of the process_assembly_mapping template.

    Parameters
    ----------
    sample_id : str
        Sample Identification string.
    assembly_file : str
        Path to assembly file in Fasta format.
    coverage_file : str
        Path to TSV file with coverage information for each contig.
    coverage_bp_file : str
        Path to TSV file with coverage information for each base.
    bam_file : str
        Path to BAM file.
    opts : list
        List of options for processing assembly mapping.
    gsize : int
        Expected genome size

    """

    min_assembly_coverage, max_contigs = opts

    logger.info("Starting assembly mapping processing")

    # Get coverage info, total size and total coverage from the assembly
    logger.info("Parsing coverage table")
    coverage_info, a_cov = parse_coverage_table(coverage_file)
    a_size, contig_size = get_assembly_size(assembly_file)
    logger.info("Assembly processed with a total size of '{}' and coverage"
                " of '{}'".format(a_size, a_cov))
    # Get number of assembled bp after filters
    logger.info("Parsing coverage per bp table")
    coverage_bp_data = get_coverage_from_file(coverage_bp_file)

    # Assess the minimum assembly coverage
    min_coverage = evaluate_min_coverage(min_assembly_coverage, a_cov, a_size)

    # Check if filtering the assembly using the provided min_coverage will
    # reduce the final bp number to less than 80% of the estimated genome
    # size.
    # If the check below passes with True, then the filtered assembly
    # is above the 80% genome size threshold.
    filtered_assembly = "{}_filt.fasta".format(
        os.path.splitext(assembly_file)[0])
    filtered_bam = "filtered.bam"
    logger.info("Checking filtered assembly")
    if check_filtered_assembly(coverage_info, coverage_bp_data, min_coverage,
                               gsize, contig_size, int(max_contigs),
                               sample_id):
        # Filter assembly contigs based on the minimum coverage.
        logger.info("Filtered assembly passed minimum size threshold")
        logger.info("Writting filtered assembly")
        filter_assembly(assembly_file, min_coverage, coverage_info,
                        filtered_assembly)
        logger.info("Filtering BAM file according to saved contigs")
        filter_bam(coverage_info, bam_file, min_coverage, filtered_bam)
    # Could not filter the assembly as it would drop below acceptable
    # length levels. Copy the original assembly to the output assembly file
    # for compliance with the output channel
    else:
        shutil.copy(assembly_file, filtered_assembly)
        shutil.copy(bam_file, filtered_bam)
        shutil.copy(bam_file + ".bai", filtered_bam + ".bai")

    with open(".status", "w") as status_fh:
        status_fh.write("pass")
def main(sample_id, assembly_file, coverage_file, coverage_bp_file, bam_file,
         opts, gsize):
    min_assembly_coverage, max_contigs = opts

    logger.info("Starting assembly mapping processing")

    # Get coverage info, total size and total coverage from the assembly
    logger.info("Parsing coverage table")
    coverage_info, a_cov = parse_coverage_table(coverage_file)
    a_size, contig_size = get_assembly_size(assembly_file)
    logger.info("Assembly processed with a total size of '{}' and coverage"
                " of '{}'".format(a_size, a_cov))
    # Get number of assembled bp after filters
    logger.info("Parsing coverage per bp table")
    coverage_bp_data = get_coverage_from_file(coverage_bp_file)

    # Assess the minimum assembly coverage
    min_coverage = evaluate_min_coverage(min_assembly_coverage, a_cov, a_size)

    # Check if filtering the assembly using the provided min_coverage will
    # reduce the final bp number to less than 80% of the estimated genome
    # size.
    # If the check below passes with True, then the filtered assembly
    # is above the 80% genome size threshold.
    filtered_assembly = "{}_filt.fasta".format(
        os.path.splitext(assembly_file)[0])
    filtered_bam = "filtered.bam"
    logger.info("Checking filtered assembly")
    if check_filtered_assembly(coverage_info, coverage_bp_data, min_coverage,
                               gsize, contig_size, int(max_contigs),
                               sample_id):
        # Filter assembly contigs based on the minimum coverage.
        logger.info("Filtered assembly passed minimum size threshold")
        logger.info("Writting filtered assembly")
        filter_assembly(assembly_file, min_coverage, coverage_info,
                        filtered_assembly)
        logger.info("Filtering BAM file according to saved contigs")
        filter_bam(coverage_info, bam_file, min_coverage, filtered_bam)
    # Could not filter the assembly as it would drop below acceptable
    # length levels. Copy the original assembly to the output assembly file
    # for compliance with the output channel
    else:
        shutil.copy(assembly_file, filtered_assembly)
        shutil.copy(bam_file, filtered_bam)
        shutil.copy(bam_file + ".bai", filtered_bam + ".bai")

    with open(".status", "w") as status_fh:
        status_fh.write("pass")
def main ( sample_id , assembly_file , coverage_file , coverage_bp_file , bam_file , opts , gsize ) : min_assembly_coverage , max_contigs = opts logger . info ( "Starting assembly mapping processing" ) # Get coverage info, total size and total coverage from the assembly logger . info ( "Parsing coverage table" ) coverage_info , a_cov = parse_coverage_table ( coverage_file ) a_size , contig_size = get_assembly_size ( assembly_file ) logger . info ( "Assembly processed with a total size of '{}' and coverage" " of '{}'" . format ( a_size , a_cov ) ) # Get number of assembled bp after filters logger . info ( "Parsing coverage per bp table" ) coverage_bp_data = get_coverage_from_file ( coverage_bp_file ) # Assess the minimum assembly coverage min_coverage = evaluate_min_coverage ( min_assembly_coverage , a_cov , a_size ) # Check if filtering the assembly using the provided min_coverage will # reduce the final bp number to less than 80% of the estimated genome # size. # If the check below passes with True, then the filtered assembly # is above the 80% genome size threshold. filtered_assembly = "{}_filt.fasta" . format ( os . path . splitext ( assembly_file ) [ 0 ] ) filtered_bam = "filtered.bam" logger . info ( "Checking filtered assembly" ) if check_filtered_assembly ( coverage_info , coverage_bp_data , min_coverage , gsize , contig_size , int ( max_contigs ) , sample_id ) : # Filter assembly contigs based on the minimum coverage. logger . info ( "Filtered assembly passed minimum size threshold" ) logger . info ( "Writting filtered assembly" ) filter_assembly ( assembly_file , min_coverage , coverage_info , filtered_assembly ) logger . info ( "Filtering BAM file according to saved contigs" ) filter_bam ( coverage_info , bam_file , min_coverage , filtered_bam ) # Could not filter the assembly as it would drop below acceptable # length levels. Copy the original assembly to the output assembly file # for compliance with the output channel else : shutil . copy ( assembly_file , filtered_assembly ) shutil . copy ( bam_file , filtered_bam ) shutil . copy ( bam_file + ".bai" , filtered_bam + ".bai" ) with open ( ".status" , "w" ) as status_fh : status_fh . write ( "pass" )
Main executor of the process_assembly_mapping template.

    Parameters
    ----------
    sample_id : str
        Sample Identification string.
    assembly_file : str
        Path to assembly file in Fasta format.
    coverage_file : str
        Path to TSV file with coverage information for each contig.
    coverage_bp_file : str
        Path to TSV file with coverage information for each base.
    bam_file : str
        Path to BAM file.
    opts : list
        List of options for processing assembly mapping.
    gsize : int
        Expected genome size
Main executor of the process_assembly_mapping template .