Página 1 de 1

Interpretación de una expresión regular

NotaPublicado: 2016-12-05 17:30 @771
por angelluigi
Buenas. Estaba mirando un programa que han subido aquí y no entiendo muy bien este trozo de código.

my @orfs = $sequence =~ /(ATG(?:.{3})*?)(TAA|TAG|TGA|.{1,3}$)/g;

Muchas gracias.

Re: Interpretación de una expresión regular

NotaPublicado: 2016-12-05 18:03 @793
por explorer
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @orfs = $sequence =~ /(ATG(?:.{3})*?)(?:TAA|TAG|TGA|.{1,3}$)/g;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

La línea realiza la búsqueda repetida (/g) de una serie de patrones dentro de $sequence, y lo encontrado se va almacenando en @orfs.

Lo que se busca son secuencias que comiencen por 'ATG', seguida por 0 o más (*) codones (.{3}, tres letras cualesquiera), justo antes (?) de una marca final, es decir, cualquiera de las combinaciones 'TAA', 'TAG', 'TGA', o cualquier otra combinación de entre uno a tres letras que estén al final de $sequence (.{1,3}$). Los paréntesis de captura alrededor de toda el patrón permiten llevar la secuencia encontrada a @orfs (los paréntesis interiores no capturan nada, solo agrupan subpatrones (?:)).

Las secuencias corresponden a lo que conocemos como ORF (Open reading frame).