首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DNA序列中的丛集发现

DNA序列中的丛集发现
EN

Stack Overflow用户
提问于 2016-01-28 17:58:44
回答 2查看 2.1K关注 0票数 0

我正在努力理解一个用于解决DNA序列中的丛集发现的简短代码。问题是

给定整数L和t,如果有长度为L的基因组间隔,则字符串模式在(较大)字符串基因组中形成(L,t)-clump,其中模式至少出现t次。 例如,TGCA在以下基因组中形成(25,3)-clump:gatcagcataagggtcccTGCAaTGCAtgacaagccTGCAgttgttttac。 丛集发现问题 查找在字符串中形成丛集的模式。 给定:一个字符串基因组,和整数k,L,和t。 返回:基因组中所有不同的k-mers形成(L,t)-clumps .

守则如下:

代码语言:javascript
复制
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团块的起始位置吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-28 18:10:43

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

似乎lookup[seg]返回段seg的位置的列表,如果它们在被解析的部分的L距离内。因此,返回到lookup[seg]的对象是一个进入DNA序列的索引列表。

票数 1
EN

Stack Overflow用户

发布于 2016-01-28 18:11:14

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

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

(2)什么是看上去?

只要它们足够接近,就会列出序列中的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35068664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档