preprocessor.py 文件源码

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

项目:CLAM 作者: Xinglab 项目源码 文件源码
def collapse_stack(stack, collapse_dict, max_tags):
    """DOCSTRING
    Args
    Returns
    """
    new_alignment_list = []
    new_alignment_dict = defaultdict(list)
    for aln in stack:
        new_alignment_dict[aln.query_sequence].append(aln)

    # TODO 2017.10.21: 
    # further collapse `new_alignment_dict`
    # based on degeneracy and/or read tags

    for seq in new_alignment_dict:
        this_alignment_qname_list = [x.qname for x in new_alignment_dict[seq] ]
        is_collapsed = [True if x in collapse_dict else False for x in this_alignment_qname_list]
        ## if any of the alignment is collapsed before,
        ## we require all of them to be collapsed
        if any(is_collapsed):
            assert all(is_collapsed)
            target_alignment_qname = collapse_dict[this_alignment_qname_list[0]][0:max_tags]
            assert len(collapse_dict[this_alignment_qname_list[0]]) <= max_tags
            target_alignment = [new_alignment_dict[seq][this_alignment_qname_list.index(x)] for x in target_alignment_qname]
        else:
            target_alignment = new_alignment_dict[seq][0:max_tags]
            for aln_qname in this_alignment_qname_list:
                collapse_dict[aln_qname] = [x.qname for x in target_alignment]
        new_alignment_list.extend( target_alignment )
    return new_alignment_list, collapse_dict
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号