使用Biopython找到蛋白质序列中的模式

时间:2017-06-21 13:16:40

标签: 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_Proteins.fasta", "fasta")

如何在此引入正则表达式,RGD(N)除了RGDP之外没什么问题?

提前致谢。

AP

1 个答案:

答案 0 :(得分:1)

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

len(re.findall(r"RGD(?!P)", str(record.seq)))

另外,请务必添加import re

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

请参阅Regular-Expressions.info "Lookarounds" section

请参阅regex demo