stats_from_bam.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:pomoxis 作者: nanoporetech 项目源码 文件源码
def stats_from_aligned_read(read):
    """Create summary information for an aligned read

    :param read: :class:`pysam.AlignedSegment` object
    """

    tags = dict(read.tags)
    try:
        tags.get('NM')
    except:
        raise IOError("Read is missing required 'NM' tag. Try running 'samtools fillmd -S - ref.fa'.")

    name = read.qname
    if read.flag == 4:
        return None
    counts = defaultdict(int)
    for (i, j) in read.cigar:
        counts[i] += j
    match = counts[0]
    ins = counts[1]
    delt = counts[2]
    # NM is edit distance: NM = INS + DEL + SUB
    sub = tags['NM'] - ins - delt
    length = match + ins + delt
    iden = 100*float(match - sub)/match
    acc = 100 - 100*float(tags['NM'])/length

    read_length = read.infer_read_length()
    coverage = 100*float(read.query_alignment_length) / read_length
    direction = '-' if read.is_reverse else '+'

    results = {
        "name":name,
        "coverage":coverage,
        "direction":direction,
        "length":length,
        "read_length":read_length,
        "ins":ins,
        "del":delt,
        "sub":sub,
        "iden":iden,
        "acc":acc
    }

    return results
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号