Python DNA序列中的聚类发现
我正在试图理解一个简短的代码,用于解决DNA序列中的团块查找问题。问题是 给定整数L和t,如果存在长度为L的基因组间隔,其中模式至少出现t次,则字符串模式在(较大的)字符串基因组内形成(L,t)-簇 例如,TGCA在以下基因组中形成(25,3)-簇: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
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片段中出现的次数。