Python 3.x 用Biopython定位蛋白质序列中的模式

Python 3.x 用Biopython定位蛋白质序列中的模式,python-3.x,pattern-matching,biopython,Python 3.x,Pattern Matching,Biopython,我试图找到含有三肽的序列。三肽后面可以有除“P”之外的任何其他氨基酸。我用下面的方法提取它们 from Bio import SeqIO RGD = [] for record in SeqIO.parse("input.fasta", "fasta"): rgd_count = record.seq.count('RGD') if rgd_count >= 1: RGD.append(record) SeqIO.write(RGD, "RGD_Prot

我试图找到含有三肽的序列。三肽后面可以有除“P”之外的任何其他氨基酸。我用下面的方法提取它们

from Bio import SeqIO
RGD = [] 
for record in SeqIO.parse("input.fasta", "fasta"):
    rgd_count = record.seq.count('RGD')
    if rgd_count >= 1:
        RGD.append(record) 
SeqIO.write(RGD, "RGD_Proteins.fasta", "fasta")
我如何在这里引入正则表达式,使得除了RGDP之外,RGD(N)是好的

提前谢谢


AP

您可以使用
re.findall
查找
str(record.seq)
中所有不重叠的正则表达式匹配项。替换
record.seq.count('RGD')

另外,请确保添加
导入re

RGD(?!p)
模式匹配未跟
p
RGD
子字符串。
(?!P)
称为负前瞻,如果在当前位置的右侧立即找到其模式,则匹配失败


请参阅。

您使用的方法是否支持正则表达式?如果是,您需要类似于
RGD(?!P)
(匹配
RGD
,后面不跟
P
)。也许,您可以像
rgd_count=len(re.findall(r“rgd(?P)”,str(record.seq))
那样执行此操作。不要忘记导入re。虽然不确定是否需要使用
str()
,但它可能会使用
record.seq
作为
re.findall
的第二个参数。我想,它可以支持正则表达式。因为,文档中说,Bio.seq对象类似于字符串。我将尝试它&更新!谢谢,请告诉我它是否对您有效,以便我可以添加答案。我可以确认注释是正确的解决方案,并且(否则您正在处理
Bio.Seq
对象)。@BioGeek很抱歉打扰您,我将删除注释。
len(re.findall(r"RGD(?!P)", str(record.seq)))