我试图找到具有三肽的序列。三肽可以跟随其他任何氨基酸,除了' 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
答案 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。