【问题标题】:to find position of identified patterns in protein sequence在蛋白质序列中找到已识别模式的位置
【发布时间】:2020-04-12 08:06:13
【问题描述】:

我正在尝试编写代码来查找蛋白质序列中的模式,然后找到已识别模式的位置(开始和结束)。对于已识别的模式,当我使用 .index() 搜索索引时,如果存在多个模式,我将无法获得正确的起始位置。但在这里我想要识别模式的开始和结束位置。 我正在寻找一种简单快捷的方法,而不是进行 BLAST。

import re
from io import StringIO

from Bio import SeqIO

sequence = StringIO(""">seq
FWSTQALLPTTLLGASP
""")

for seqs in SeqIO.parse(sequence, "fasta"):
    # to find pattern
    p = re.compile("L*")
    seqstr = str(seqs.seq)
    patternA = p.findall(seqstr)
    print(patternA)
    for t in patternA:
        print(seqstr.index(t))

预期结果: 7 LL 8 12 LL 13 提前致谢。

【问题讨论】:

  • 由于大多数开发人员不具备识别蛋白质序列模式的知识,您能否为您的问题添加更多背景信息?此外,您提供的代码无法正常工作,通过 Bio.Seq(sequence) 构造函数和 SeqIO.parse() 生成器构造的序列不会产生任何结果。
  • 很抱歉造成混乱。这是我的错误,因为我修改它以便在此处发布,我错过了在 for 循环中更改它。

标签: python bioinformatics biopython


【解决方案1】:

re.finditer 是您可能想要使用的,因为它会给您一个 match object,其中包含匹配的 startend 坐标;这些可用于从原始字符串中分割子字符串。

import re
from io import StringIO

from Bio import SeqIO

sequence = StringIO(
    """>seq
FWSTQALLPTTLLGASPL
"""
)

for seqs in SeqIO.parse(sequence, "fasta"):
    # to find pattern
    p = re.compile("L*")
    seqstr = str(seqs.seq)
    matches = p.finditer(seqstr)

    for m in matches:
        if m.group():
            start, end = m.span()
            print(
                "{start} {match} {end}".format(start=start, match=m.group(), end=end)
            )

哪些输出:

6 LL 8
11 LL 13

关于python中字符串的注释,它们从零开始,这意味着第一个字符编号为0。值得一读tutorial on strings。 Breifly,使用您的序列:

           +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
           | F | W | S | T | Q | A | L | L | P | T | T | L | L | G | A | S | P |
           +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
slice pos: 0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17
index pos:   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16

# So using the output you can see:
>>> seq[6:8]
'LL'

【讨论】:

  • 非常感谢 Alex 和您的精彩解释。你拯救了我的一天!
猜你喜欢
  • 1970-01-01
  • 2012-06-27
  • 2013-01-16
  • 1970-01-01
  • 2014-05-13
  • 2022-10-08
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
相关资源
最近更新 更多