示例#1
0
文件: utils.py 项目: maxibor/pydamage
def prepare_bam(bam: str) -> Tuple[Tuple, str]:
    """Checks for file extension, and returns tuple of mapped refs

    Args:
        bam (str): Path to bam file

    Returns:
        Tuple: Tuple of mapped references
        str: bam opening mode
    """
    mode = check_extension(bam)
    alf = AlignmentFile(bam, mode)

    if not alf.has_index():
        print(f"BAM file {bam} has no index. Sort BAM file and provide index "
              "before running pydamage.")
        sys.exit(1)

    present_refs = set()
    for ref_stat in alf.get_index_statistics():
        refname = ref_stat[0]
        nb_mapped_reads = ref_stat[1]
        if nb_mapped_reads > 0:
            present_refs.add(refname)
    alf.close()
    return tuple(present_refs), mode