9

タンパク質配列の(理論上の)トリプシン切断には正規表現が存在しますか?トリプシンの切断規則は次のとおりです。RまたはKの後ですが、Pの前ではありません。

例:

配列の切断VGTKCCTKPESERMPCTEDYLSLILNRにより、次の3つの配列(ペプチド)が生成されます。

 VGTK
 CCTKPESER
 MPCTEDYLSLILNR

2番目のペプチドでは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で使用できる方法はありますか?はいの場合、正規表現は何になりますか?


テストプラットフォーム:WindowsXP64ビット。ActivePerl64ビット。perl -vから:MSWin32-x64-multi-thread用にビルドされたv5.10.0。

4

4 に答える 4

16

確かに、肯定的な後読みと否定的な先読みを組み合わせて使用​​する必要があります。正しい (Perl) 構文は次のとおりです。

my @peptides = split(/(?!P)(?<=[RK])/, $seq);
于 2009-12-04T19:30:32.470 に答える
6

ルックアラウンドアサーションを使用して、そのケースを除外できます。このようなものが機能するはずです:

split(/(?<=[RK](?!P))/, $seq)
于 2009-12-04T19:20:54.963 に答える
4

先読みと後読みを使用して、正しい位置を取得しながら、このようなものと一致させることができます。

/(?<=[RK])(?!P)/

Pが続かないRまたはKの後のポイントで分割することになります。

于 2009-12-04T19:23:23.573 に答える
1

Pythonでは、このメソッドを使用して、finditer開始情報とスパン情報を含む重複しないパターン一致を返すことができます。その後、文字列を再構築する代わりに、文字列オフセットを保存できます。

于 2009-12-04T19:25:41.163 に答える