我正在寻找可能的脚本算法,该算法将搜索我在str对象中定义的长DNA序列中的指定基序(较短的DNA片段),计算每个发现(假设我的seq有几个相同的图案),并且在检测到基序的序列中打印第一个核苷酸编号。
假设在每个对象下面定义我应该在某个循环中使用这样的搜索,因为以下两个示例只能找到一次motif。指定这种循环的正确方法是什么?
#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)
答案 0 :(得分:2)
有什么东西可以做到吗? 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]
答案 1 :(得分:1)
这个问题在术语上听起来有点含糊不清。既然你说你正在寻找你的问题中的“主题”,我想问你是否真的想找到一个确切的序列,或者你的目的是搜索TFBS。如果您正在寻找特定字符串的确切出现,那么@CT朱的答案是适合您的。
然而,如果您正在寻找TFBS,那可能不像寻找精确序列那样微不足道,因为这些序列是简并的并且并不总是对应于相同的序列,尽管它们共享一些模式。在这种情况下,我建议看看主题数据库,如Jaspar或TRANSFAC,也许Biopython“motifs”模块可能是一个很好的起点: http://biopython.org/DIST/docs/api/Bio.motifs-module.html
在文献中可以找到更复杂的主题发现方法: http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1003214#pcbi-1003214-g008
答案 2 :(得分:0)
我将此添加为另一个答案,因为我不允许发表评论......
但是,我认为你可以在这个问题中找到答案:Python regex find all overlapping matches?