Página 1 de 1

Duda sencilla sobre algoritmo de traducción ADN-Proteina

NotaPublicado: 2016-08-16 14:04 @627
por Hamtaro
Hola a todos y muchas gracias por el trabajo que realizáis. No sabéis qué bien me ha venido vuestra ayuda.

Actualmente estoy haciendo un máster de bioinformática, pero vengo de la rama de biología y estoy aprendiendo programación. Mi duda es "teórica" más que "práctica" y viene con este algoritmo para dado un codón convertirlo en aminoácido.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $codon = <STDIN>;
  2. if    ( $codon =~ /GC./i)        { print 'A'; } # Alanine
  3. elsif ( $codon =~ /UC.|AG[UC]/i) { print 'S'; } # Serine
  4. elsif ( $codon =~ /UG[UC]/i)     { print 'C'; } # Cysteine
  5. elsif ( $codon =~ /GA[UC]/i)     { print 'D'; } # Aspartic Acid
  6. elsif ( $codon =~ /GA[AG]/i)     { print 'E'; } # Glutamic Acid
  7. elsif ( $codon =~ /UU[UC]/i)     { print 'F'; } # Phenylalanine
  8. else {print "No se ha encontrado el codón";}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo que no llego a comprender son algunas partes del algoritmo, ya que en los apuntes que me estoy estudiando no aparece.

- ¿Qué significa $codon =~ /GC./i ?
He usado =~ y sé que es el operador binding, pero no entiendo el '.' ahí ni el 'i'. ¿Por qué no 'g'?

- ¿Qué significa /UC.|AG[UC]/i?
He usado el operador '||' pero no '|' y el '[ ]' tampoco lo he visto en mi vida.


Muchas gracias y saludos.

Re: Duda sencilla sobre algoritmo de traducción ADN-Proteina

NotaPublicado: 2016-08-16 15:54 @704
por explorer
Hamtaro escribiste:- ¿Qué significa $codon =~ /GC./i ?
He usado =~ y sé que es el operador binding, pero no entiendo el '.' ahí ni el 'i'. ¿Por qué no 'g'?

El operador '=~' es el de confrontación entre una cadena y un patrón, lo que llamamos normalmente una operación de expresiones regulares.

El '.' es el comodín principal. Equivale a cualquier carácter. Así que /GC./ significa que estamos buscando por las letras 'G', 'C', y seguidas por una letra más.

El modificador 'i' indica que queremos hacer una búsqueda independiente del tamaño de caja de las letras. O sea, que nos da igual buscar mayúsculas que minúsculas. Así, /GC./i significa que estamos buscando por 'GC' (y una letra más), o 'gc' (y una letra más) o incluso 'Gc' o 'gC' (y una letra más).

El modificar 'g' sirve para hacer búsquedas repetidas (búsqueda global). Pero no estamos haciendo eso. En esa parte del código solo queremos saber si existe, en alguna parte de $codon, la cadena que coincida con el patrón. Si es así, hace un print, y termina. Otro caso sería si queremos buscar por todas las ocurrencias del patrón dentro del $codon.

Hamtaro escribiste:- ¿Qué significa /UC.|AG[UC]/i?
He usado el operador '||' pero no '|' y el '[ ]' tampoco lo he visto en mi vida.

Los patrones de expresiones regulares tienen su propio lenguaje (mira el enlace que te he puesto antes). Entonces, los caracteres que, en Perl significan una cosa, dentro de un patrón significan algo completamente distinto.

/UC.|AG[UC]/i quiere decir que estamos buscando (independientemente del tamaño de caja, 'i') por:
  • 'UC', seguido por un carácter más, o ('|')
  • 'AG', seguido por un carácter más, que puede ser, 'U' o 'G'. Los corchetes conforman "clases de caracteres", y coinciden con un único carácter
Tienes una introducción rápida a las exp. reg. en tu propio ordenador en perldoc perlrequick, y en la Web (traducido al español). Y una referencia rápida en perlreref.

Más información en tu propio ordenador sobre las exp. reg. en perldoc perlre, y en la Web (traducido al español).

Un tutorial sobre exp. reg. en tu propio ordenador en perldoc perlretut, y en la Web (traducido al español).

Mayor explicación sobre las clases de caracteres, en tu propio ordenador en perldoc perlrecharclass, y en la Web (traducido al español).


Para cualquier duda, aquí mismo :)