Существует ли регулярное выражение для (теоретического) триптического расщепления белка последовательностей? Правило расщепления для трипсина: после 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);
Но это требует модификации строки, которая потенциально может быть очень длинной и может содержать миллионы последовательностей. Есть ли способ, где регулярное выражение может использоваться с split? Если да, каким будет регулярное выражение?
Тестовая платформа: Windows XP 64 бит. ActivePerl 64 бит. Из perl -v: v5.10.0 для MSWin32-x64-multi-thread.