【问题标题】: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)

【问题讨论】:

    标签: python sequence bioinformatics


    【解决方案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?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-23
          • 1970-01-01
          • 2019-06-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多