【发布时间】:2010-12-23 08:57:50
【问题描述】:
对于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);
但这需要修改一个可能很长并且可能有数百万个序列的字符串。有没有一种方法可以将正则表达式与拆分一起使用?如果是,正则表达式是什么?
测试平台:Windows XP 64 位。 ActivePerl 64 位。来自 perl -v:为 MSWin32-x64-multi-thread 构建的 v5.10.0。
【问题讨论】:
-
@unknown:上下文...来自en.wikipedia.org/wiki/Tryptic:“胰蛋白酶被认为是内肽酶,即切割发生在多肽链内,而不是位于多肽末端的末端氨基酸。”
-
可能是有史以来最好的 SO 问题。有多少其他人可以同时夸耀代码、科学和性推理,同时又完全有效且可回答?
标签: regex perl bioinformatics