按顺序寻找主题
Posted
技术标签:
【中文标题】按顺序寻找主题【英文标题】:Looking for the motifs in sequence 【发布时间】:2014-03-30 17:41:36 【问题描述】:我正在寻找可能的脚本算法,它将搜索我在 str 对象中定义的长 DNA 序列以查找指定的基序(较短的 DNA 片段),计算每个发现(假设我的 seq 有几个相同的基序),然后打印已检测到基序的序列中的第一个核苷酸编号。
假设在每个对象下方定义,我应该在某个循环中使用此类搜索,因为下面的两个示例都只能找到 1 次主题。指定这种循环的正确方法是什么?
#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)
【问题讨论】:
【参考方案1】:是否已经存在可以做到这一点的东西? 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]
【讨论】:
【参考方案2】:这个问题在我看来在术语上有点模棱两可。既然你说你在你的问题中寻找“主题”,我想问一下你是否真的想找到一个确切的序列,或者你的目的是否是搜索 TFBS。如果您正在寻找特定字符串的确切出现,那么@CT Zhu 的答案就是您的正确答案。
但是,如果您正在寻找 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
【讨论】:
【参考方案3】:我将此添加为另一个答案,因为我不允许制作 cmets...
不过,我想你可以在这个问题中找到答案:Python regex find all overlapping matches?
【讨论】:
以上是关于按顺序寻找主题的主要内容,如果未能解决你的问题,请参考以下文章