Python 按顺序寻找图案

Python 按顺序寻找图案,python,sequence,bioinformatics,Python,Sequence,Bioinformatics,我正在寻找脚本的可能算法,该算法将搜索str对象中定义的长DNA序列中指定的基序(较短的DNA片段),计算每个发现(假设我的序列有几个相同的基序),并打印检测到基序的序列中的第一个核苷酸编号 假设定义在每个对象下面,我应该在某个循环中使用这种搜索,因为下面的两个示例只能找到一次主题。指定这种循环的正确方法是什么 #Loading data seq = open('motif.txt', 'r') chains=[] [chains.append(line[:-1]) for line in se

我正在寻找脚本的可能算法,该算法将搜索str对象中定义的长DNA序列中指定的基序(较短的DNA片段),计算每个发现(假设我的序列有几个相同的基序),并打印检测到基序的序列中的第一个核苷酸编号

假设定义在每个对象下面,我应该在某个循环中使用这种搜索,因为下面的两个示例只能找到一次主题。指定这种循环的正确方法是什么

#Loading data
seq = open('motif.txt', 'r')
chains=[]
[chains.append(line[:-1]) for line in seq]
Seq,Motif = chains[0], chains[1]
count=0


# Search motif
Seq.find(Motif)

if y == 1:
    print "%s has been detected" %(Motif)

if Motif in Seq:
    print "%s has been detected" %(Motif)

是否已经存在可以做到这一点的东西<代码>biopython?但无论如何,这并不难,也不需要循环:

import re

seq='aaattatagggatatata'

motif='ata'

Q=re.compile(motif)

[item.start(0) for item in Q.finditer(seq)] #or maybe item.start(0)+1 if you want it
#Out[23]: [5, 11, 15]

这个问题在术语上听起来有点模棱两可。既然你说你在你的问题中寻找“主题”,我想问你是否真的试图找到一个确切的序列,或者你的目的是寻找TFB。如果您正在查找特定字符串的精确匹配项,那么@CT Zhu的答案就是最适合您的

但是,如果您正在寻找TFB,那么这可能不像寻找精确序列那样简单,因为这些序列是退化的,并且并不总是对应于相同的序列,尽管它们共享一些模式。在这种情况下,我建议查看motif数据库,如Jaspar或TRANSFAC,也许Biopython“motif”模块是一个很好的起点:

在文献中可以找到更复杂的母题查找方法:

我将此添加为另一个答案,因为我不允许发表评论

然而,我认为你可以在这个问题中找到答案: