繁体   English   中英

DNA序列中的团簇发现

[英]Clump Finding in DNA sequence

我正在尝试理解一个简短的代码,用于解决DNA序列中的团簇发现问题。 问题是

给定整数L和t,如果存在一个长度为L的基因组间隔,其中Pattern出现至少t次,则字符串Pattern在(更大的)字符串Genome中形成一个(L,t)-簇。

例如,TGCA在以下基因组中形成(25,3)-团块: gatcagcataagggtcccTGCAaTGCAtgacaagccTGCAgttgttttac

团发现问题

查找在字符串中形成团块的模式。

给定:字符串Genome,整数k,L和t。

返回值:基因组中所有形成(L,t)团块的不同k聚体。

代码如下:

from collections import defaultdict

def search(inseq, k, L, t):
    lookup = defaultdict(list)
    result = set()

    for cursor in range(len(inseq) - k + 1):
        seg = inseq[cursor:cursor + k]

        # remove prior positions of the same segment
        # if they are more than L distance far
        while lookup[seg] and cursor + k - lookup[seg][0] > L:
            lookup[seg].pop(0)

        lookup[seg].append(cursor)
        if len(lookup[seg]) == t:
            result.add(seg)

    return result

这是我的问题,

(1)使用defaultdict代替dict的目的是什么?

(2)什么是查找[段]? 它是k-mer团簇的起始位置吗?

defaultdict是一个Python对象,如果您请求不在字典中的键,则仅返回“默认”对象。 在这种情况下,默认项是列表。 这是defaultdict的文档

如果lookup[seg]位于要解析的片段部分的L距离之内,则好像lookup[seg]返回了片段seg的位置列表。 因此, lookup[seg]的返回对象是DNA序列的索引列表。

1)使用defaultdict的目的是什么?

defaultdict(list)允许您使用lookup[seg]访问键,并“神奇地”在其中找到准备好的列表。 如果键( seg )已经存在,那您将得到。 否则,您将获得一个空列表。 对于普通字典,第二个字典是错误的。

(2)什么是查找[段]?

只要位置足够接近,它就是序列中的位置列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM