Question

Est-ce une expression régulière existe pour (théorique) tryptique clivage de protéines séquences ? La règle de clivage pour la trypsine est la suivante:. Après R ou K, mais pas avant P

Exemple:

Le clivage de la séquence VGTKCCTKPESERMPCTEDYLSLILNR devrait aboutir à ces 3 séquences ( s):

 VGTK
 CCTKPESER
 MPCTEDYLSLILNR

Notez qu'il n'y a pas de clivage après K dans le deuxième peptide (parce que P vient après K).

En Perl (il pourrait tout aussi bien avoir été en C #, Python ou Ruby):

  my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR';
  my @peptides = split /someRegularExpression/, $seq;

J'utilise ce travail autour (où un marqueur de coupe, =, est d'abord inséré dans la séquence et retiré à nouveau si P est immédiatement après la machine de coupe):

  my $seq      = 'VGTRCCTKPESERMPCTEDYLSLILNR';
  $seq         =~ s/([RK])/$1=/g; #Main cut rule.
  $seq         =~ s/=P/P/g;       #The exception.
  my @peptides = split( /=/, $seq);

Mais cela nécessite une modification à une chaîne qui peut potentiellement être très long et il peut y avoir des millions de séquences. Est-il possible où une expression régulière peut être utilisé avec séparation? Si oui, qu'est-ce que l'expression régulière est?


Plate-forme de test: Windows XP 64 bits. bit ActivePerl 64. A partir de perl -v:. V5.10.0 construit pour MSWin32-x64-multi-thread

Était-ce utile?

La solution

Vous devez bien utiliser la combinaison d'un lookbehind positif et un négatif préanalyse. La syntaxe correcte (Perl) est la suivante:

my @peptides = split(/(?!P)(?<=[RK])/, $seq);

Autres conseils

Vous pouvez utiliser regarder autour des affirmations pour exclure que les cas. Quelque chose comme cela devrait fonctionner:

split(/(?<=[RK](?!P))/, $seq)

Vous pouvez utiliser lookaheads et pour correspondre à cette assertions arrières des choses tout en obtenant la position correcte.

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

Si finissent par fractionnement sur un point après un R ou K qui ne sont pas suivis par un P.

En Python, vous pouvez utiliser la méthode finditer pour revenir motif non chevauchement matches, dont début et informations d'extension. Vous pouvez ensuite enregistrer le décalage de chaîne au lieu de reconstruire la chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top