寻找已识别模式在蛋白质序列中的位置

2024-09-30 05:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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 812 LL 13 提前谢谢


Tags: infromimportreforindex模式seq
1条回答
网友
1楼 · 发布于 2024-09-30 05:19:56

^{}是您可能想要使用的,因为它将为您提供一个^{},它具有匹配的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。这本书值得一读。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'

相关问题 更多 >

    热门问题