蛋白质序列的(理论上)胰蛋白酶切割是否存在正则表达式?胰蛋白酶的切割规则是:在 R 或 K 之后,但不在 P 之前。
例子:
序列的切割VGTKCCTKPESERMPCTEDYLSLILNR
应产生以下 3 个序列(肽段):
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);
但这需要修改一个可能很长并且可能有数百万个序列的字符串。有没有一种方法可以将正则表达式与拆分一起使用?如果是,正则表达式是什么?
测试平台:Windows XP 64 位。ActivePerl 64 位。来自 perl -v:为 MSWin32-x64-multi-thread 构建的 v5.10.0。