Algoritmo de Needleman-Wunsha

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 14 de julio de 2016; las comprobaciones requieren 10 ediciones .

El algoritmo de Needleman-Wunsch  es un algoritmo para realizar una alineación de dos secuencias (llamémoslas y ) que se utiliza en bioinformática para construir alineaciones de secuencias de aminoácidos o nucleótidos . El algoritmo fue propuesto en 1970 por Saul Needleman y Christian Wunsch [1] .

El algoritmo de Needleman-Wunsch es un ejemplo de programación dinámica y resultó ser el primer ejemplo de la aplicación de la programación dinámica a la comparación de secuencias biológicas.

Vista moderna

La correspondencia de los caracteres alineados viene dada por la matriz de similitud . Aquí  está la similitud de los símbolos y . También se utiliza una penalización de espacio lineal , aquí llamada .

Por ejemplo, si la matriz de similitud viene dada por la tabla

- A GRAMO C T
A diez -una -3 -cuatro
GRAMO -una 7 -5 -3
C -3 -5 9 0
T -cuatro -3 0 ocho

luego alineación:

GTTAC‒‒ G‒‒ACGT

con una penalización de hueco tendrá la siguiente puntuación:

Para encontrar la alineación con la puntuación más alta, se asigna una matriz (o matriz ) bidimensional que contiene tantas filas como caracteres en la secuencia y tantas columnas como caracteres en la secuencia . Una entrada en una fila y columna se denota como . Por lo tanto, si alineamos las secuencias de tamaños y , entonces la cantidad de memoria requerida será . ( El algoritmo de Hirschberg calcula la alineación óptima utilizando la cantidad de memoria pero aproximadamente el doble del tiempo de cálculo ) . 

Durante la operación del algoritmo, el valor tomará los valores de la estimación óptima para alinear los primeros caracteres en y los primeros caracteres en . Entonces, el principio de optimalidad de Bellman se puede formular de la siguiente manera:

Base: Recursividad basada en el principio de optimalidad:

Por lo tanto, el pseudocódigo del algoritmo para calcular la matriz F se verá así:

para i=0 a la longitud (A) F(i,0) ← d*i para j=0 a la longitud (B) F(0,j) ← d*j para i=1 a la longitud (A) para j = 1 a la longitud (B) { Partido ← F(i-1,j-1) + S(A i , B j ) Eliminar ← F(i-1, j) + d Insertar ← F(i, j-1) + d F(i,j) ← max (Coincidir, Insertar, Eliminar) }

Cuando se calcula una matriz , su elemento otorga la máxima puntuación entre todas las alineaciones posibles. Para calcular la alineación real que puntúa como esta, debe comenzar en la celda inferior derecha y comparar los valores en esa celda con las tres fuentes posibles (coincidencia, inserción o eliminación) para ver de dónde proviene. Si coinciden , y están alineados, si se eliminan, se alinean con una ruptura y, si se insertan, con una ruptura, ya están alineados . (En general, puede haber más de una opción con el mismo valor que dará como resultado alineaciones óptimas alternativas).

AlineaciónA ← "" AlineaciónB ← "" i ← longitud (A) j ← longitud (B) mientras que (i > 0 o j > 0) { Puntuación ← F(i,j) ScoreDiag ← F(i - 1, j - 1) Puntuación arriba ← F(i, j - 1) ScoreLeft ← F(i - 1, j) si (Puntaje == ScoreDiag + S(A i , B j )) { AlineaciónA ← A i + AlineaciónA AlineaciónB ← B j + AlineaciónB yo ← yo - 1 j ← j - 1 } de lo contrario si (Puntuación == ScoreLeft + d) { AlineaciónA ← A i + AlineaciónA AlineaciónB ← "-" + AlineaciónB yo ← yo - 1 } de lo contrario (Puntuación == ScoreUp + d) { AlineaciónA ← "-" + AlineaciónA AlineaciónB ← B j + AlineaciónB j ← j - 1 } } mientras (yo > 0) { AlineaciónA ← A i + AlineaciónA AlineaciónB ← "-" + AlineaciónB yo ← yo - 1 } mientras (j > 0) { AlineaciónA ← "-" + AlineaciónA AlineaciónB ← B j + AlineaciónB j ← j - 1 }

Observaciones históricas

Needleman y Wunsch describieron explícitamente su algoritmo para el caso en que solo se evalúa la coincidencia o la falta de coincidencia de caracteres, pero no la brecha ( ). La publicación original [1] de 1970 propone una recursión

El algoritmo de programación dinámica correspondiente requiere tiempo cúbico para calcular. El artículo también señala que la recursividad se puede adaptar a cualquier fórmula de penalización por brecha:

La penalización por espacios (el número que se resta por cada espacio) puede considerarse como una forma de evitar que aparezcan espacios en la alineación. La cantidad de la penalización del hueco puede ser una función del tamaño y/o la dirección del hueco. [pags. 444]

David Sankoff propuso por primera vez [2] un algoritmo de programación dinámica en tiempo cuadrático más rápido para el mismo problema (sin penalización por brecha) en 1972. TK Vintsyuk [3] descubrió de forma independiente un algoritmo cuadrático en el tiempo similar en 1968 para procesar el habla ( pre-énfasis de escala dinámica) y por Robert A. Wagner y Michael J. Fisher [4] en 1974 para emparejar cadenas.

Needleman y Wunsch formularon su problema en términos de maximizar la similitud. Otra posibilidad es minimizar la distancia de edición entre secuencias propuesta por V. Levenshtein , sin embargo, se demostró [5] que estos dos problemas son equivalentes.

En la terminología moderna, Needleman-Wunsch se refiere a un algoritmo de alineación de secuencia de tiempo cuadrático para una penalización de brecha lineal o afín.


Véase también

Notas

  1. 1 2 Needleman, Saúl B.; y Wunsch, Christian D. Un método general aplicable a la búsqueda de similitudes en la secuencia de aminoácidos de dos proteínas  //  Journal of Molecular Biology : diario. - 1970. - vol. 48 , núm. 3 . - Pág. 443-453 . - doi : 10.1016/0022-2836(70)90057-4 . —PMID 5420325 .
  2. Sankoff, D. Coincidencia de secuencias bajo restricciones de eliminación  / inserción  // Actas de la Academia Nacional de Ciencias de los Estados Unidos de América  : revista. - 1972. - vol. 69 , núm. 1 . - Pág. 4-6 .
  3. Vintsyuk, TK Discriminación del habla por programación dinámica  (neopr.)  // Kibernetika. - 1968. - T. 4 . - S. 81-88 .
  4. Wagner, RA y Fischer, MJ El problema de corrección de cadena a cadena  //  Journal of the ACM  : journal. - 1974. - vol. 21 . - pág. 168-173 . -doi : 10.1145/ 321796.321811 .
  5. Sellers, PH Sobre la teoría y el cálculo de distancias evolutivas  // SIAM Journal on Applied  Mathematics : diario. - 1974. - vol. 26 , núm. 4 . - Pág. 787-793 .

Enlaces