Python DNA序列中的聚类发现

Python DNA序列中的聚类发现,python,sequence,Python,Sequence,我正在试图理解一个简短的代码,用于解决DNA序列中的团块查找问题。问题是 给定整数L和t,如果存在长度为L的基因组间隔,其中模式至少出现t次,则字符串模式在(较大的)字符串基因组内形成(L,t)-簇 例如,TGCA在以下基因组中形成(25,3)-簇:gatcagcataagggtctctctgaatgcatgagcctgcagtttttac 找块问题 在字符串中查找形成束的模式 给定:一个字符串基因组和整数k、L和t 返回:基因组中所有不同的k-聚体形成(L,t)-簇 代码如下: from co

我正在试图理解一个简短的代码,用于解决DNA序列中的团块查找问题。问题是

给定整数L和t,如果存在长度为L的基因组间隔,其中模式至少出现t次,则字符串模式在(较大的)字符串基因组内形成(L,t)-簇

例如,TGCA在以下基因组中形成(25,3)-簇:
gatcagcataagggtctctctgaatgcatgagcctgcagtttttac

找块问题

在字符串中查找形成束的模式

给定:一个字符串基因组和整数k、L和t

返回:基因组中所有不同的k-聚体形成(L,t)-簇

代码如下:

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) 什么是查找[seg]?它是k-mer clump的起始位置吗?

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


看起来好像
lookup[seg]
返回段
seg
的位置列表,如果它们在被解析段部分的
L
距离内。因此,
lookup[seg]
的返回对象是DNA序列的索引列表。

defaultdict
是一个Python对象,如果您请求的密钥不在字典中,它只返回一个“默认”对象。在这种情况下,默认项是列表

看起来好像
lookup[seg]
返回段
seg
的位置列表,如果它们在被解析段部分的
L
距离内。因此
lookup[seg]
的返回对象是DNA序列的索引列表。

1)使用
defaultdict
的目的是什么

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

(2) 什么是查找[seg]

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

1)使用
defaultdict
的目的是什么

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

(2) 什么是查找[seg]


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

你是说查找[seg]类似于列表[(‘蓝色’、[2,4])、(‘红色’、[1])、(‘黄色’、[1,3])?字符串不是颜色,而是k-mer序列和列表,记录了它们在整个基因组的L段中出现的次数。你是说查找[seg]类似于列表[('blue',[2,4]),('red',[1]),('yellow',[1,3])?字符串不是颜色,而是k-mer序列和列表记录了它们在整个基因组的L片段中出现的次数。