Página 1 de 1

Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-02-27 11:37 @525
por manuel3180
Estimados,

Estoy analizando alrededor de 3500 proteínas y me doy con la sorpresa de que algunas proteínas empiezan con otro AMINOÁCIDO (verde) que no es METIONINA (rojo), por ejemplo:

>gen_1
MEDGFGGLDLGK0VERVVERVMVEVVMFIG......

>gen_2
GVBFPDBFBDFBMFDOBDFBBDFBFB......

Entonces, para analizar las que no comienzan con M, traté de modificar algunos scripts en Perl, que se encargan de extraer secuencias, pero sin éxito. Os agradecería que me des una mano en este problema, como verás no tengo 10 secuencias sino 3500 y hacerlas a mano es un gran problema.

Muchas gracias de antemano

Saludos,

Manuel3180

Re: Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-02-27 15:44 @697
por explorer
Con una expresión regular como /^[^M]/ puedes encontrar las secuencias que comienzan (^) por algo que no es 'M' ([^M]) .

También se puede hacer negando todo el patrón:

$seq !~ /^M/

Re: Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-02-28 10:05 @461
por manuel3180
Estimado explorer:

¿Podrías explicarme la respuesta con el script en cuestión? A manera de entender mejor los comandos que se toman en un script escrito en Perl.

Muchas gracias.

Saludos.

Re: Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-02-28 10:51 @494
por explorer
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($seq !~ /^M/) {
  2.     print "La secuencia no comienza por 'M'\n";
  3. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Re: Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-02-28 10:54 @496
por manuel3180
Muchas gracias

Re: Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-03-01 07:59 @374
por pvaldes
La solución dada por explorer me parece perfecta en cualquier caso.

Ahora bien, por aportar algo al debate, una alternativa que se me ocurre es saltar la línea si empieza por 'm'
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. next if ~/^M/;
  2. "haz algo con esa cadena, sólo llegarán a ésta línea las que te interesan";
  3.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Esto es ya más una cuestión teórica que un problema real, pero buscar una letra es más sencillo en términos de computación que probar con todas las demás así que en teoría encontrar /^[^M]/ debería ser algo más costoso que encontrar /^M/ y luego descartarla. No sé si me explico.

En tu caso probablemente es irrelevante y la velocidad ganada (si es que se gana) sería inapreciable. Las búsquedas de expresiones regulares en Perl están tan optimizadas que probablemente no haya una ganancia real apreciable para sólo 3000 líneas.

Aparte de eso tienes que valorar la posibilidad de que una proteína se extienda a dos líneas en tu archivo, lo que te podría dar un valor erróneo ocasionalmente (algunas proteínas incompletas) de no controlarse. En ese caso podrías acotar a partir de los '>' probablemente. Quizás si vemos el trabajo que tienes hecho podamos aconsejarte alguna mejora o saber por qué lo que probaste no funcionaba.

Re: Búsqueda negada de secuencias de aminoácidos

NotaPublicado: 2012-03-01 10:48 @491
por explorer
pvaldes escribiste:Las búsquedas de expresiones regulares en Perl están tan optimizadas que probablemente no haya una ganancia real apreciable para sólo 3000 líneas.

Con el módulo Benchmark saldrás de dudas.