Será uma expressão regular existem para clivagem enzimática?
-
13-09-2019 - |
Pergunta
Será que a exist expressão regular para (teórico) tríptico clivagem de proteína seqüências? A regra de clivagem para tripsina é:. Após R ou K, mas não antes de P
Exemplo:
A clivagem da sequência de VGTKCCTKPESERMPCTEDYLSLILNR
deve resultar nestas sequências 3 ( péptido s):
VGTK
CCTKPESER
MPCTEDYLSLILNR
Note-se que não há nenhuma clivagem após K no segundo péptido (porque P vem depois K).
Em Perl (que poderia muito bem ter sido em C #, Python ou Ruby):
my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR';
my @peptides = split /someRegularExpression/, $seq;
eu usei este trabalho a cerca de (onde um marcador de corte, =, é primeiro inserido na sequência e removido de novo, se P é imediatamente depois de a máquina de corte):
my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR';
$seq =~ s/([RK])/$1=/g; #Main cut rule.
$seq =~ s/=P/P/g; #The exception.
my @peptides = split( /=/, $seq);
Mas isso requer modificação para uma cadeia que pode ser potencialmente muito longo e pode haver milhões de sequências. Existe uma maneira em que uma expressão regular pode ser usado com divisão? Se sim, qual seria a expressão regular ser?
plataforma de Teste: Windows XP de 64 bits. ActivePerl 64 bits. De perl -v:. V5.10.0 construído para MSWIN32-x64-multi-thread
Solução
Você de fato precisa usar a combinação de um lookbehind positivo e um lookahead negativo. O (Perl) sintaxe correta é a seguinte:
my @peptides = split(/(?!P)(?<=[RK])/, $seq);
Outras dicas
Você pode usar afirmações olhar-around de excluir que os casos. Algo como isto deve funcionar:
split(/(?<=[RK](?!P))/, $seq)
Você pode usar lookaheads e visões traseiras para coincidir com essas coisas e ainda obter a posição correta.
/(?<=[RK])(?!P)/
deve acabar divisão num ponto após um R ou K que não é seguido por um P.
Em Python, você pode usar o método finditer
para retornar não sobrepostas partidas padrão, incluindo o início e informações span. Você pode então armazenar os deslocamentos de cadeia em vez de reconstruir a string.