protein序列的(理论上)
tryptic切割是否存在正则表达式?胰蛋白酶的切割规则是:在R或K之后,但在P之前不是.
例:
切割序列VGTKCCTKPESERMPCTEDYLSLILNR应产生这3个序列(peptides):
VGTK CCTKPESER MPCTEDYLSLILNR
注意,在第二肽中K后没有切割(因为P在K之后).
在Perl中(它也可以用于C#,Python或Ruby):
my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR'; my @peptides = split /someRegularExpression/,$seq;
我已经使用过这种解决方法(切割标记= =首先插入序列中,如果P紧接在切割制造者之后再次移除):
my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR'; $seq =~ s/([RK])/$1=/g; #Main cut rule. $seq =~ s/=P/P/g; #The exception. my @peptides = split( /=/,$seq);
但这需要修改一个可能很长的字符串,并且可能有数百万个序列.有没有一种方法可以将正则表达式与split一起使用?如果是,那么正则表达式是什么?
测试平台:Windows XP 64位. ActivePerl 64位.从perl -v:v5.10.0为MSWin32-x64-multi-thread构建.
你确实需要使用积极的lookbehind和负的lookahead的组合.正确的(Perl)语法如下:
my @peptides = split(/(?!P)(?<=[RK])/,$seq);