Python 3.x 用Biopython定位蛋白质序列中的模式
我试图找到含有三肽的序列。三肽后面可以有除“P”之外的任何其他氨基酸。我用下面的方法提取它们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
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)))