iv alineamiento múltiple de secuencias

Post on 13-Jan-2016

57 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

IV Alineamiento múltiple de secuencias. Andrés Moreira Departamento de Informática UTFSM. Alineamiento de secuencias. Hemos hablado del alineamiento de a pares : - PowerPoint PPT Presentation

TRANSCRIPT

IVAlineamiento múltiple de

secuencias

IVAlineamiento múltiple de

secuencias

Andrés MoreiraDepartamento de Informática UTFSM

Alineamiento de secuenciasAlineamiento de secuenciasAlineamiento de secuenciasAlineamiento de secuencias

Hemos hablado del alineamiento de a pares : se alinean dos secuencias de la mejor manera posible para maximizar identidad y conservación; se busca evaluar similaridad, y posible homología.

Sirve para ver si dos secuencias se parecen, significativamente.

Sirve para buscar secuencias parecidas a una secuencia dada.

...Y también es la base para poder alinear de a más de 2.

Alineamiento múltiple: se alinea un grupo de secuencias ( no es lo mismo que alinearlas a todas de a pares!).

El alineamiento múltiple busca identificar letras homólogas en secuencias homólogas.

En general se aplica sobre grupos de secuencias que ya se saben homólogas.

Aún en sus variantes más simples, es NP-duro.

Alineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuencias

El alineamiento múltiple ayuda a:

Hacer árboles filogenéticos, y estudiar la evolución a nivel molecular.

Alineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuencias

Preguntas del tipo:•¿De dónde salió la secuencia X?•¿Qué filogenia tienen las secuencias X, Y, Z?•¿Este genoma, contiene algún gen que haya llegado por transferencia horizontal?•¿Hay genes duplicados?•...etc

Alineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuencias

El alineamiento múltiple ayuda a:

Hacer árboles filogenéticos, y estudiar la evolución a nivel molecular.

El alineamiento múltiple ayuda a:

Caracterizar familias de proteínas

identificación de regiones conservadas, funcionalmente importantes (sitios activos de enzimas, sitios de asociación con otras moléculas...)

inferencia de función (cuando alguien entra a la familia)

inferencia de estructura (global y de regiones específicas) para miembros nuevos de la familia

Alineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuencias

El alineamiento múltiple ayuda a:

Caracterizar familias de proteínas

Alineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuenciasAlineamiento múltiple de secuencias

También sirve para buscar miembros nuevos, buscando homólogos en una BD, que sigan el mismo “perfil”.

Alineamiento y perfil:

Perfiles y logosPerfiles y logosPerfiles y logosPerfiles y logos

A 0.8 0 0.4 0.2 1 0

C 0 0.6 0.2 0.2 0 0

G 0 0 0.4 0.4 0 0.2

T 0.2 0.4 0 0.2 0 0.8

A C A T A T

A T A A A T

A C G C A T

T C G G A T

A T C G A G

Sequence Logo

Perfiles y logosPerfiles y logosPerfiles y logosPerfiles y logos

A 0.8 0 0.4 0.2 1 0

C 0 0.6 0.2 0.2 0 0

G 0 0 0.4 0.4 0 0.2

T 0.2 0.4 0 0.2 0 0.8

En cada columna tenemos una densidad de probabilidad; podemos calcular su entropía:

Si pia es la frecuencia de la letra a en la

columna i, entonces H(i) = −Σa pia log pia

•Es una forma de evaluar la calidad del alineamiento en esa columna:

H(i)=0 todas iguales (la misma letra)H(i) máximo cero información!

•Se suelen tomar los gaps como una letra más, aunque hay variaciones.

Perfiles y logosPerfiles y logosPerfiles y logosPerfiles y logos

Perfiles y logosPerfiles y logosPerfiles y logosPerfiles y logos

En el logo, se escala cada columna por su entropía (con respecto al máximo, o mejor dicho, a su diferencia con respecto al máximo: columnas más altas reducen más la incerteza).

Más útil que

Perfiles y logosPerfiles y logosPerfiles y logosPerfiles y logos

También se hacen de proteínas:

Perfiles y logosPerfiles y logosPerfiles y logosPerfiles y logos

En ese caso se colorean los aminoácidos por grupos:

•Hidrofóbicos: A, V, I, L, M, F, P, W

•Básicos: K, R, H

•Acídicos: D, E

•Polares: S, T, N, Q, G, Y, C

¿Cómo elegimos el alineamiento?

Opción 1: el que construye un experto, a ojo. Se usan. Y a veces son excelentes.

Opción 2: el que encontramos con un algoritmo.

Pero en ese caso necesitamos una función a maximizar.

¿Qué es un buen alineamiento múltiple?

¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?

En rigor, quisiéramos buscar el árbol filogenético más probable...

AA BB

CC DD EEUU

VV WW

XX

... pero es impracticable.Falta demasiada información (e.g., las ramas pueden ser de distintos largos), y además es demasiado cómputo.

¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?

(nos deshacemos de lo desconocido, sumándolo)

Lo más común: se dan puntajes por columnas del alineamiento, y se busca optimizar la suma de esos puntajes (es la extensión más obvia de lo que se hace en el alineamiento de a pares).

Se usan varias opciones. Entre otras:

•Cantidad máxima de letras idénticas (trivial, e inútil)

•Entropía

•“Suma de a pares”: suma el puntaje de cada par de letras de la columna (calculado como al alinear de a pares).

¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?

Suma de a pares:

...A...

...A...

...S...

...T...

AA: 4, AS: 1, AT:0AS: 1, AT: 0ST: 1

Puntaje: 4+1+0+1+0+1 = 7

Desventaja de la suma de a pares:•No tiene detrás un modelo probabilista razonable.

Desventaja de la entropía (y de la suma de a pares):•No tiene detrás un modelo de la filogenia!

Se parcha. Se ponen pesos para distintos niveles de semejanza (en alguna medida, recoge filogenia).

¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?¿Cómo evaluar?

Ok, escogemos una forma de poner puntaje, por columna. ¿Cómo lo optimizamos?

Primera idea: extender el método de programación dinámica usado para alinear de a pares.

Así como antes avanzábamos por cada una de las secuencias, moviéndonos en un plano, ahora avanzamos por k secuencias.

Prog. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensional

0 1 1 2 3 4

A A T -- C

A -- T G C

-- A T G C

(0,0,0) (1,1,0) (1,2,1) (2,3,2) (3,3,3) (4,4,4)

Prog. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensional

2D

V

W

3D

Prog. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensional

si-1,j-1,k-1 + (vi, wj, uk)

si-1,j-1,k + (vi, wj, _ )

si-1,j,k-1 + (vi, _, uk)

si,j-1,k-1 + (_, wj, uk)

si-1,j,k + (vi, _ , _)

si,j-1,k + (_, wj, _)

si,j,k-1 + (_, _, uk)

si,j,k = max

Prog. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensionalProg. dinámica multidimensional

El orden es O(2knk), para k secuencias de largo n.

Para una proteína típica, n=100.

Más allá de k=4,5, se vuelve inservible.

Para k=7, n=100, requeriría varios terabytes de RAM.

No se usa!!

Otras ideas...Otras ideas...Otras ideas...Otras ideas...

Otra idea: alinear todos los pares de secuencias, y combinar todos esos alineamientos en uno común.

Después de todo, un alineamiento múltiple induce alineamientos de a pares:

(se proyecta el camino 3d sobre los lados del cubo)

Otras ideas...Otras ideas...Otras ideas...Otras ideas...

x: AC-GCGG-C y: AC-GC-GAG z: GCCGC-GAG

induce:x: ACGCGG-C; x: AC-GCGG-C; y: AC-GCGAGy: ACGC-GAC; z: GCCGC-GAG; z: GCCGCGAG

...así que cabría la esperanza de hacer el proceso inverso.

Otras ideas...Otras ideas...Otras ideas...Otras ideas...

Pero:

•Alineamiento óptimo múltiple no induce óptimos de a pares.

•Alineamientos óptimos de a pares son difíciles de combinar en un buen alineamiento múltiple.

•Alineamientos de a pares pueden ser inconsistentes (es decir, puede no existir uno múltiple que los induzca).

no va por ahí la cosa.

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Algo que sí se usa (y mucho): alineamiento progresivo.

Idea: alineo primero dos secuencias. Luego alineo el resultado de eso con una tercera secuencia. Y así sucesivamente.

¿En qué orden?

Una opción sería tomar las dos más cercanas (evaluando la similaridad de a pares). Luego, la que se acerque más al resultado de eso. Y así, sucesivamente. No se hace.

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

CLUSTAL:

•Calcula la similaridad de cada par.

•Construye un “árbol guía”.

•Alinea primero lo más cercano, y va subiendo por el árbol.

Ojo: se requiere alinear secuencias con alineamientos (y alineamientos con alineamientos!). AA BB

CC DD EEUU

VV WW

XX

AA

BB

CCDD

EE

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

v1

v3

v4 v2

Calcular:v1,3 = alineamiento(v1, v3)v1,3,4 = alineamiento((v1,3),v4)v1,2,3,4 = alineamiento((v1,3,4),v2)

v1 v2 v3 v4

v1 -v2 .17 -v3 .87 .28 -v4 .59 .33 .62 -

El arbol guía se construye con neighbour joining (un algoritmo que veremos al hablar de filogenia).

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Pueden aparecer nuevos gaps en el camino.

S1 S3 S4 S2

S1

S3

S2

S4

S1

S3

S2

S4 Gap nuevo para optimizar el alineamiento de (S2,S4) con (S1,S3)

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

¿Cómo asignar puntajes al alinear una letra contra un perfil, o un perfil contra otro?

•Lo sencillo: escribir la nueva columna completa (con lo que ya llevo alineado en cada lado para esa posición), y evaluar el puntaje de la columna.

•Alternativa: comparar sólo con el perfil: No será A contra AC, sino A contra (0.5,0.5,0,0). Esto es útil cuando hay muchas secuencias, y cuando se usa un perfil para buscar en una base de datos.

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Pero ojo: si se compara una letra y contra un perfil p (en que p(x) es la frecuencia de la letra x ), y estamos usando la matriz de sustitución Q, entonces el puntaje NO es

x

yxQxp ),()(

pues ese Q se obtuvo como Q(a,b)=log q (a,b), donde q (a,b) representaba la probabilidad de que el alineamiento fuera no aleatorio. Para que siga teniendo sentido sumar, hay que usar

x

yxqxp ),()(log

X

y para dos perfiles, y x

yxqypxp ),()()(log 21

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Clustal es lejos lo más usado hoy en día por los biólogos para alinear secuencias.

http://www.clustal.org/

Viene en dos sabores: ClustalW (línea de comando), ClustalX (+GUI). La GUI no es algo menor: alinear es un arte.

La W viene de “weighted”: añade pesos en distintos niveles del alineamiento (según la distancia a la raíz), quitándole importancia excesiva a grupos de secuencias muy similares.

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Otras cosas que agrega:

•Usa matrices de sustitución distintas, según nivel de semejanza entre secuencias.

•La penalización de gaps también la va variando:

•Se penalizan menos allí donde ya hay gaps•Se penalizan más cerca de donde ya hay gaps.•Además los modifica con consideraciones bioquímicas.

•Hay posibilidades para que el usuario predetermine el árbol guía, o para realinear tramos de la secuencia.

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Problemas del alineamiento progresivo:

•Se casa mucho con los alineamientos con que parte; esos gaps y alineación se acarrean después. Si las secuencias no son muy parecidas, puede ser malo.

Respuesta: métodos iterativos, y otros.

•Es global! La semejanza puede estar en trozos de las secuencias.

Alineamiento progresivoAlineamiento progresivoAlineamiento progresivoAlineamiento progresivo

Respuestas a eso:1. Cortar antes los tramos similares y alinearlos.2. Usar algoritmos que se preocupan de eso.

Lo que debiera ser Lo que da Clustal

Alineamiento iterativoAlineamiento iterativoAlineamiento iterativoAlineamiento iterativo

Iterar: para deshacerse de la dependencia de lo inicial.

En Clustal es posible iterar de varias formas:

•Usar el alineamiento para construir un árbol filogenético, y usar eso como árbol guía en un nuevo alineamiento. [Eso requiere pasar por otro software].

•Realinear las secuencias ya alineadas (con sus gaps).

+Hacerlo a partir de varios sets de parámetros distintos. Ir viendo qué zonas son importantes. Realinear a mano. Etc. (El manual recomienda generar al menos 10 alineamientos).

Alineamiento iterativoAlineamiento iterativoAlineamiento iterativoAlineamiento iterativo

Otros métodos iterativos:

•DIALIGN: pone énfasis en alineamientos locales entre las secuencias.

•MUSCLE: va revisando el árbol guía

Alineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLE

MUSCLE: va revisando el árbol guía.

1) Parte como Clustal2) Sobre la marcha va revisando: acaso el árbol

guía ha cambiado, y acaso alguna parte se puede realinear mejor.

Alineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLE

¿Ha cambiado el árbol?

Calcula la similaridad de los alineamientos de a pares inducidos por el actual alineamiento múltiple.

Si eso da un árbol distinto al que está usando, realínea según eso, y ve si el puntaje general mejora.

Alineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLEAlineamiento iterativo: MUSCLE

¿Hay algo que realinear? Prueba a cortar el árbol.

S

T

U

X

Z

Borra aristaRealínea los perfiles resultantes de cada árbol

S

T

U

X

Z

Alineamiento iterativo: alg. Alineamiento iterativo: alg. evolucionariosevolucionarios

Alineamiento iterativo: alg. Alineamiento iterativo: alg. evolucionariosevolucionarios

Métodos evolucionarios:

Lo que se muta es la ubicación de los gaps (un alineamiento no es otra cosa que una distribución de gaps!).

• Algoritmos genéticos: SAGA

• Simulated Annealing: MSASA

Variante “hill climbing”: muta en direcciones provechosas.

Alineamiento iterativo: alg. Alineamiento iterativo: alg. evolucionariosevolucionarios

Alineamiento iterativo: alg. Alineamiento iterativo: alg. evolucionariosevolucionarios

Cruce de alineamientos

Una mutación

...etc

Alineamiento : DIALIGN IIAlineamiento : DIALIGN IIAlineamiento : DIALIGN IIAlineamiento : DIALIGN II

Énfasis en los alineamientos locales.

•Busca buenos (=buen P-value) alineamientos locales (de a pares).•Los va re-evaluando según qué tan compatibles son unos con otros...•Hasta que obtiene un buen set de alineamientos locales ordenados y coherentes. Y con eso, alínea.

Alineamiento : DIALIGN IIAlineamiento : DIALIGN IIAlineamiento : DIALIGN IIAlineamiento : DIALIGN II

Es especialmente útil para: •similitudes que son sólo locales

•secuencias muy lejanas

Y es una gracia el no tener que tratar los “gaps” de manera ad-hoc.

Alineamiento: nota al margenAlineamiento: nota al margenAlineamiento: nota al margenAlineamiento: nota al margen

•Hay muuuchos algoritmos y software de MSA.

•Casi toda técnica de optimización conocida por el hombre, se ha aplicado. Para bien o para mal.

•Clasificar los algoritmos es difícil; combinan características de varios lados (estocásticos/deterministas, progresivos/simultaneos, exactos/heurísticos, iterativos o no...), y mutan de año en año.

•Aquí daré sólo las ideas principales de algunos; meternos al detalle sería interminable.

Alineamiento: nota al margenAlineamiento: nota al margenAlineamiento: nota al margenAlineamiento: nota al margen

•Esa diversidad, y los avances permanentes, son importantes. El alineamiento (de a pares y múltiple) es ubicuo en bioinformática.

Dos reviews instructivos, legibles y no muy largos:

•Multiple sequence alignment, R.C. Edgar & S. Batzoglou (2006), Curr Op Struct Biol 16(3) 368-373; doi:10.1016/j.sbi.2006.04.004

Disponible en http://ai.stanford.edu/~serafim/Publications/2006_MSA_COSB.pdf

•Recent evolutions of multiple sequence alignment algorithms, C. Notredame (2007), PLoS Comput Biol 3(8) e123, doi:10.1371/journal.pcbi.0030123

Disponible ahí.

Idea: Generar una biblioteca de alineamientos (globales y locales) de a pares entre las secuencias. Tratar de hacer el alineamiento múltiple que sea consistente con esa biblioteca.

•Primero genera una biblioteca, haciendo alineamientos de a pares, global y local, entre todas las secuencias.

Alineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-Coffee

•Asigna puntaje a los matches de esos alineamientos. En un proceso llamado extensión de la biblioteca, usa terceras secuencias para modificar los puntajes en un par dado.•Al final tiene, sobre los alineamientos de a pares, puntajes que reflejan la compatibilidad con otros alineamientos.•Y usa eso para hacer la prog. din., en alineamiento progresivo.

Alineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-Coffee

Alineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-Coffee

Alineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-CoffeeAlineamiento: T-Coffee

+ Presta más atención a homologías locales que Clustal.

+ Permite incluir información de otras fuentes! A la biblioteca primaria se le pueden agregar alineamientos obtenidos con Clustal, Dialign, información biológica, lo que sea.

Es de lo mejorcito que ha aparecido.

Alineamiento: POAAlineamiento: POAAlineamiento: POAAlineamiento: POA

POA: Partial Order Alignment

Idea: no resumir los alineamientos en perfiles, sino que dibujar un grafo. Y alinear vía programación dinámica, pero contra ese grafo.

Alineamiento: POAAlineamiento: POAAlineamiento: POAAlineamiento: POA

La idea no es mala... Y permite conservar la información de un alineamiento, en una representación compacta.

Alineamiento: POAAlineamiento: POAAlineamiento: POAAlineamiento: POA

Alínea permitiendo agregar caminos alternativos por sobre la matriz 2d.

Y ayuda a visualizar estructuras compartidas parcialmente:

Alineamiento: POAAlineamiento: POAAlineamiento: POAAlineamiento: POA

Problemas:

•Se vuelve poco práctico si hay demasiada bifurcación: con sets muy grandes de secuencias, o secuencias evolutivamente distantes.

•Con frecuencia lo que queremos es generalizar: discernir los motivos que caracterizan una familia de proteínas, o una secuencia de regulación en el DNA, etc.

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

Como ya dijimos, los benchmarks aquí son humanos: sets curados a mano, a partir de amplia información filogenética, estructural, etc.

El más conocido es BaliBase:http://www.people.virginia.edu/~wrp/papers/ismb2000.pdf•Son “correctos”

•Tiene sets “difíciles”, agrupados según naturaleza de la dificultad.•Lo más difícil es donde hay mucha distancia evolutiva: la twilight zone!

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

DescripciónPROBLEMA

BaliBase, Thompson et al, NAR, 1999,

1. Grupo de secuencias cercanas

2. Una secuencia lejana

3. Dos grupos distantes

4. Inserción interna

5. Inserción en un extremo

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

PROBLEMA Estrategia

ClustalW, T-coffee,MSA

T-Coffee

Dialign

T-Coffee

T-Coffee

Dialign

T-Coffee

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

...aunque, de otra fuente:

Pero parece ser que: Dialign para cosas lejanas, T-Coffee para lo demás.

Como regla a primera vista, claro. Toda la fauna que anda afuera tiene razón de ser, según el caso. Y en último término, T-Coffee puede combinar.

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

Lista de algunos:

MAFFT Progressive www.biophys.kyoto-u.jp/katoh POA Progressive/Simulataneous www.bioinformatics.ucla.edu/poa MUSCLE Progressive/Iterative www.drive5.com/muscle/

Alineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarksAlineamiento: benchmarks

En todo caso, la mayoría de los biólogos sigue usando Clustal.

Volvamos a eso de generalizar. Extracción de motivos patrones.

MotivosMotivosMotivosMotivos

Motivo ( motif ): un patrón que puede estar presente en una secuencia.

Puede ser más o menos estricto. Puede reflejar un sitio activo de una proteína, o un punto de interacción entre moléculas.

MotivosMotivosMotivosMotivos

Con los motivos se necesita:

•Un lenguaje para describirlos: para saber que tipos de motivos se pueden encontrar.

•Una forma de evaluarlos: una función objetivo, que defina los motivos que son “interesantes”.

•Algoritmos para determinarlos, y para localizarlos.Determinarlos: extraer un motivo a

partir de un conjunto de secuencias.Localizarlos: dado un motivo, saber reconocerlo.

MotivosMotivosMotivosMotivos

Lenguaje para describirlos:

Se usan varios.

•Expresiones regulares (no necesito explicárselas)

•Perfiles (ya vistos, es la matriz de frecuencias x ubicación)

•Modelos markovianos ocultos (HMM)

Cadenas de MarkovCadenas de MarkovCadenas de MarkovCadenas de Markov

En una cadena de Markov, el sistema puede estar en una serie de posibles estados (en un momento dado), y entre un instante y el siguiente cambia de estado de acuerdo a una cierta matriz de probabilidad.

Componentes:•Set de estados.•Una distribución inicial de probabilidad sobre los estados•La matriz de transición.

A B

C

Cadenas de MarkovCadenas de MarkovCadenas de MarkovCadenas de Markov

Estados: día soleado, lluvioso, nublado.

Matriz de transición: probabilidades para hoy, dado el estado de ayer

Una distribución inicial.

Cadenas de MarkovCadenas de MarkovCadenas de MarkovCadenas de Markov

Hay un montón de teoría sobre cadenas de Markov; se usan mucho. Aquí nos interesa un tipo un poco más complicado de proceso Markoviano:

1. El grafo será acíclico: no hay “vuelta atrás” en los estados.

2. En cada paso, no observamos el estado, sino un estado “de salida”, que depende del estado en que estemos, con cierta probabilidad.

Como no observamos directamente el estado en que estamos, se habla de modelos ocultos de Markov.

HMMHMMHMMHMM

"Hidden Markov Model" (HMM).

Ejemplo (no acíclico): un casino tiene un dado bueno, y un dado cargado (con P(6)=½, el resto uniforme). Cambia del bueno al cargado con probabilidad 0.05, y del cargado al bueno con probabilidad 0.1.

0.90

0.1

0.050.95

Bueno Cargado

Eso sería como cadena de Markov. Pero supongamos que no sabemos que dado se está usando. Sólo vemos el resultado de las tiradas.

HMMHMMHMMHMM

0.90

0.1

0.050.95

Bueno Cargado

HMM: la variable que observamos depende de estados internos que no vemos.

Si aparece 312453666641

¿cuál es la secuencia de estados internos más probable?

BBBBBBCCCCCC

1:1/62:1/63:1/64:1/65:1/66:1/6

Bueno

1:1/102:1/103:1/104:1/105:1/106:1/2

Cargado

0.95

0.10

0.05

0.90

HMMHMMHMMHMM

Esquema general de un HMM (hidden markov model):

Componentes:•Set de estados ocultos

(aquí, x1, x2, x3)

•Set de estados de salida, o “alfabeto” (aquí, y1, y2, y3)

•Distribución inicial•Matriz de transición entre estados (Pij)

•Matriz de output (prob. de estados de salida, dados los ocultos) (Qij)

HMMHMMHMMHMM

Problemas usuales con HMM:

•Dado un HMM y una secuencia observada, ¿cuál es la probabilidad de que la secuencia sea producida por ese HMM?

•Dado un HMM y una secuencia observada, ¿cuál es la secuencia más probable de estados internos que la genera?

•Dado un conjunto de secuencias observadas, ¿cuál es el mejor HMM?

Algoritmos: forward, Viterbi, Baum-Welch

HMMHMMHMMHMM

Aplicando a secuencias genéticas:Los estados internos son las columnas “relevantes” de un alineamiento.

M1 M5M3M2 M4

“Motif HMM”

Si no hay gaps, entonces se reduce a un perfil:

HMMHMMHMMHMM

Los “problemas usuales” se convierten en:

•Dado un perfil HMM, esta secuencia, ¿es probable que pertenezca al club?

•Dado un perfil HMM, esta secuencia, ¿cómo la alíneo con las previas?

•Dado este conjunto de secuencias, ¿cómo lo resumo con un perfil tipo HMM?

Todas son importantes!

HMMHMMHMMHMM

ACA - - - ATG TCA ACT ATCACA C - - AGCAGA - - - ATCACC G - - ATC Prob. de transición

Prob. de output

inserción

Sec. de consenso: P (ACACATC) = 0.8 x 1 x 0.8 x 1 x 0.8 x 0.6 x 0.4 x 0.6 x 1 x 1 x 0.8 x 1 x 0.8 = 4.7 x 10 -2

ACAC - - ATC

HMMHMMHMMHMM

Hay que distinguir entre la secuencia observada, y el camino que se usa para generarla (que no se ve!).

Para una secuencia observada, pueden haber varios caminos alternativos.

Si conocemos la secuencia observada a=a1,...aL, y también el camino, s=s1,...,sL (supondremos que el carácter vacío es parte del alfabeto, para tener la misma longitud), entonces la probabilidad conjunta es

Liiiii ssPsaPsaPsaP

...2111 )()()(),(

Lissasas iiii

PQQsaP...2

,,, 111),(O con la notación de

antes,

HMMHMMHMMHMM

Pero si no conocemos los estados internos (s), entonces sólo podemos calcular

s

saPaP ),()(

donde sumamos sobre todos los s que pueden generar a.

Nota: se suele agregar un estado de inicio y uno de término, ambos “mudos” (o bien, con outputs especiales, “^” y “$”, por ejemplo).

HMMHMMHMMHMM

Este es un caso fácil:cada a tiene un único s.

P(ACA---ATG) = 3.3x10-2

P(TCAACTATC) = 0.0075x10-2 P(ACAC--AGC) = 1.2x10-2

P(AGA---ATC) = 3.3x10-2

P(ACCG--ATC) = 0.59x10-2

Consenso:P(ACAC--ATC) = 4.7x10-2

P(ACA---ATC) = 13.1x10-2

Excepcional:P(TGCT--AGG) = 0.0023x10-2

ACA - - - ATG TCA ACT ATCACA C - - AGCAGA - - - ATCACC G - - ATC

Usamos log odds para tener cifras más fáciles. Odds: prob. / prob. del caso nulo.Nulo en este caso: secuencia aleatoria de largo L P=(0.25)L

Log Odds(a) = log(P(a)/(0.25)L)Valor positivoMás probable que modelo nulo!

4.9

3.0 5.34.94.6

6.7 6.3

-0.97

HMM: ViterbiHMM: ViterbiHMM: ViterbiHMM: Viterbi

Dada a y un HMM M, ¿cuál es la s más probable?

Respuesta: algoritmo de Viterbi.

Programación dinámica, similar a Smith-Waterman.

También rellenamos una matriz.

En un eje ponemos la secuencia observada, en el otro los estados ocultos.

En la posición (x,y) la matriz contiene la máxima probabilidad de un camino que termine en el estado oculto x-ésimo con la observación ay.(pasando por a1,...ay-1).

HMM: ViterbiHMM: ViterbiHMM: ViterbiHMM: Viterbi

Secuencia observada y

x

^ A C A C G $

Esta

dos

ocu

ltos

0 (inicio) 11 02 0 V(2,c)

3 (fin) 0

0 1 2 300),0(

,1)0,0(

kkV

V

)](),([max)1()1,( xwPywVxyPyxV w

...y vamos guardando el argmax, para poder reconstruir la ruta al llegar al final, desde (3,$).

$^ ACG

HMM: ForwardHMM: ForwardHMM: ForwardHMM: Forward

Dada a, y un HMM M, ¿cuánto vale P( a/M )?

Respuesta: algoritmo Forward.

Idéntico a Viterbi, pero reemplazamos “max” por “sum”.

En la posición (x,y) la matriz contiene la suma de las probabilidades de los caminos que terminan en el estado oculto x-ésimo con la observación ay.(pasando por a1,...ay-1).

00),0(

,1)0,0(

kkF

F

w

xwPywFxyPyxF )(),()1()1,(

HMM: Decodificación posteriorHMM: Decodificación posteriorHMM: Decodificación posteriorHMM: Decodificación posterior

Posterior decoding contesta a la pregunta: dada a y un HMM M que generó a, ¿cuál es la probabilidad de que el estado oculto x haya generado la letra ay?

Esto sirve, por ejemplo, para saber cómo se corresponden los aminoácidos de una proteína con posiciones estructurales conservadas.

Respuesta: 1) Se hace un algoritmo Backward, análogo a

Forward. La variable B(x,y) será la suma de probalidades de caminos que parten en el estado x con la observación ay.

2) La respuesta a la pregunta será

),(),( yxByxF

Demostración: ejercicio

HMM: ConstrucciónHMM: ConstrucciónHMM: ConstrucciónHMM: Construcción

Queda la pregunta del millón:¿cómo construímos el HMM?

Hay dos problemas:•Determinar la arquitectura (estados ocultos y sus conexiones)•Determinar los parámetros (probabilidades de transición y de output)

En el caso más general, la arquitectura es un arte.

Para alineamientos, se puede usar esta forma estándar. ¿Cuántos nodos “M”? La cantidad de columnas mayoritariamente “no gap”o el promedio de longitudes

HMM: ConstrucciónHMM: ConstrucciónHMM: ConstrucciónHMM: Construcción

A veces las secuencias ya están alineadas, y queremos un HMM que represente el alineamiento.

En ese caso, si las secuencias no son muchas, puede hacerse “a mano”: contamos las frecuencias de letras, vemos los desvíos... . Donde haya gaps, ponemos insert o delete según la cantidad de gaps (>50%insert).

La corrección que se suele hacer, para generalizar: agregar probabilidades pequeñas de emisión para letras ausentes.

ACA - - - ATG TCA ACT ATCACA C - - AGCAGA - - - ATCACC G - - ATC

(Pondero las frecuencias observadas con las frecuencias “a priori”, dando un cierto peso a cada parte).

HMM: Baum-WelchHMM: Baum-WelchHMM: Baum-WelchHMM: Baum-Welch

Si las secuencias no están alineadas, entonces es más complicado. Recibo un conjunto de secuencias, {a1,..aN}.

Si supiera cuál es el camino que genera cada una, podría estimar las probabilidades de transición y de emisión contando la frecuencia con que ocurren. Notemos Aij la cantidad de veces que usan la transición ij, y Bij la cantidad de veces que la letra j se emite en el estado i.

Entonces podría estimar

kki

jiji A

AP

,

,,

ˆ

kki

jiji B

BQ

,

,,

ˆ

HMM: Baum-WelchHMM: Baum-WelchHMM: Baum-WelchHMM: Baum-Welch

Por otro lado, si tuviera los parámetros de la HMM, entonces podría saber la probabilidad de los caminos que generan las secuencias, y por lo tanto la frecuencia con que usarán cada emisión y cada transición.

En particular, la probabilidad de que se use una transición de x a w sería

N

k

a

ykxw

k

ywBwyPwxPyxFaPN

A1

)(largo

1

)1,()1()(),()(

11ˆ

Y la probabilidad de emitir una letra e desde el estado x sería

N

k

a

eay

kxe

k

ky

yxByxFaPN

B1

)(largo

,1

),(),()(

11ˆ

HMM: Baum-WelchHMM: Baum-WelchHMM: Baum-WelchHMM: Baum-Welch

Entonces, si tuviera los parámetros, sabría las probabilidades de los caminos, y si tuviera los caminos, podría estimar los parámetros.

algoritmo EM

Parámetros Información faltante

E-step: estimar datos faltantes

M-step: estimar parámetros (maximizando verosimilitud)

“Expectation-Maximization”•Se aplica cuando desconocemos parámetros de un modelo que genera ciertos datos, y tampoco conocemos una parte de eso que se generó.

HMM: Baum-WelchHMM: Baum-WelchHMM: Baum-WelchHMM: Baum-Welch

En este caso, los parámetros desconocidos son los del HMM, y de lo que se genera, conocemos la secuencia pero no el camino.

•Partimos con alguna “adivinanza” (posiblemente uniforme) sobre los parámetros.

•Iteramos hasta converger.

Parámetros:P y Q

Información faltante:Caminos para {ak}

E-step: estimar datos faltantes:

M-step: estimar parámetros:

ijij BA ˆ,ˆ

ijij QP ˆ,ˆ

HMM: ConstrucciónHMM: ConstrucciónHMM: ConstrucciónHMM: Construcción

Entonces, para construir un HMM con secuencias no alineadas:

•Definir arquitectura (longitud); por lo general se usa la longitud promedio.

•Aplicar Baum-Welch. Ojalá con varias condiciones de inicio distintas, para evitar óptimos locales.

•Una vez obtenido el HMM, alinear las secuencias encontrando para c/u su alineación con el HMM (vía Viterbi).

HMM presentes localmenteHMM presentes localmenteHMM presentes localmenteHMM presentes localmente

En principio, una secuencia se alínea globalmente contra un HMM. Pero podemos permitir alineamientos locales!

Qemite letras no alineadas.

Viterbi sigue funcionando.

HMMHMMHMMHMM

Sirven para:

•Representar un perfil, de un alineamiento nuevo, o una familia de secuencias o subsecuencias (lugares en DNA, familias de proteínas, dominios funcionales en proteínas...)

Se puede pensar en los HMM como secuencias “generalizadas”, con probabilidades para las variaciones respecto al patrón.

•Crear alineamientos (usando Baum-Welch). Pero sólo cuando hay hartas secuencias; tienen demasiados parámetros para ser entrenados con poca información.

HMMHMMHMMHMM

Sirven para:

•Alinear una secuencia nueva c/r al HMM (usar Viterbi).

•Clasificar una secuencia nueva: usando Forward evaluamos la probabilidad de que pertenezca a distintas familias (cada una caracterizada por su HMM).

•Buscar nuevos miembros (idem, Forward, pero varío la query: es el HMM, no la secuencia).

HMM: softwareHMM: softwareHMM: softwareHMM: software

•SAM (Sequence Alignment and Modeling System): el nombre no menciona HMM, pero se trata de eso.

•Meta-MEME: “is a software toolkit for building and using motif-based hidden Markov models of biological sequences”. La parte “MEME” es “Multiple EM for Motif Elicitation”.

•HMMER: búsqueda en base de datos mediante HMM.

HMM: datosHMM: datosHMM: datosHMM: datos

Pfam: base de datos de dominios y familias de proteínas.

•Un MSA curado a mano se usa como “semilla” Pfam-A.

•Con eso se crea un HMM.

•Se usa el HMM para agregar otros miembros de manera automática (el umbral de puntaje se escoge a mano) Pfam-B.

•Contiene más de 9000 familias; el 75% de las proteínas conocidas tienen al menos un match en Pfam.

+ datos+ datos+ datos+ datos

Bases de datos relacionadas: hay varias que también agrupan dominios y familias.

•ProSite: Curada a mano, altamente confiable. Usa expresiones regulares, y ahora también perfiles.

•ProDom: Usa secuencias de consenso para la representación. Generada haciendo clustering sobre secuencias de SwissProt y TrEmbl.

•InterPro: integra a varias (Pfam, ProSite, ProDom...)

Algo más sobre Algo más sobre motivosmotivosAlgo más sobre Algo más sobre motivosmotivos

•Hay softwares que se dedican a buscar motivos conocidos en una secuencia (consultan ProSite, Pfam, etc.).

•Otro problema es encontrar un motivo nuevo en un conjunto de secuencias dado. Una opción es hacer un alineamiento múltiple, y ver las regiones mejor alineadas.

•Eso falla si las secuencias sólo comparten el motivo, y lo tienen en lugares distintos. Entonces podríamos pensar en algoritmos locales, como Dialign.

•Hay algoritmos más específicos, vía EM, y Gibbs sampling.

Idea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs sampling

•N secuencias, largos posiblemente distintos.•Una longitud L para el motivo desconocido.•Una adivinanza inicial, con una ubicación para el motivo en cada secuencia. Eso da un MSA (aunque pueda ser pésimo).

Itero los siguientes pasos:•elimino una de las ubicaciones•escojo una nueva ubicación en esa secuencia, de manera probabilista

Idea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs sampling

Para escoger la nueva ubicación, le asigno a cada posible nueva ubicación una probabilidad que refleja qué tan bien esa ubicación le vendría al MSA actual de las otras N-1 ubicaciones:

es el producto, sobre i=1..L, de la frecuencia de la letra candidata en esa posición del MSA, dividido por la frecuencia “background”.

Puede agregarse un paso que haga variar L, si conviene.

Idea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs sampling

5’- TCTCTCTCCACGGCTAATTAGGTGATCATGAAAAAATGAAAAATTCATGAGAAAAGAGTCAGACATCGAAACATACAT

5’- ATGGCAGAATCACTTTAAAACGTGGCCCCACCCGCTGCACCCTGTGCATTTTGTACGTTACTGCGAAATGACTCAACG

5’- CACATCCAACGAATCACCTCACCGTTATCGTGACTCACTTTCTTTCGCATCGCCGAAGTGCCATAAAAAATATTTTTT

5’- TGCGAACAAAAGAGTCATTACAACGAGGAAATAGAAGAAAATGAAAAATTTTCGACAAAATGTATAGTCATTTCTATC

5’- ACAAAGGTACCTTCCTGGCCAATCTCACAGATTTAATATAGTAAATTGTCATGCATATGACTCATCCCGAACATGAAA

5’- ATTGATTGACTCATTTTCCTCTGACTACTACCAGTTCAAAATGTTAGAGAAAAATAGAAAAGCAGAAAAAATAAATAA

**********

TGAAAAATTC

GACATCGAAA

GCACTTCGGC

GAGTCATTAC

GTAAATTGTC

CCACAGTCCG

TGTGAAGCAC

5’- TCTCTCTCCACGGCTAATTAGGTGATCATGAAAAAATGAAAAATTCATGAGAAAAGAGTCAGACATCGAAACATACAT

5’- ATGGCAGAATCACTTTAAAACGTGGCCCCACCCGCTGCACCCTGTGCATTTTGTACGTTACTGCGAAATGACTCAACG

5’- CACATCCAACGAATCACCTCACCGTTATCGTGACTCACTTTCTTTCGCATCGCCGAAGTGCCATAAAAAATATTTTTT

5’- TGCGAACAAAAGAGTCATTACAACGAGGAAATAGAAGAAAATGAAAAATTTTCGACAAAATGTATAGTCATTTCTATC

5’- GGCGCCACAGTCCGCGTTTGGTTATCCGGCTGACTCATTCTGACTCTTTTTTGGAAAGTGTGGCATGTGCTTCACACA

TGAAAAATTC

GACATCGAAA

GCACTTCGGC

GAGTCATTAC

GTAAATTGTC

CCACAGTCCG

TGTGAAGCAC

…HIS7

…ARO4

…ILV6

…THR4

…ARO1

…HOM2

…PRO3

(En este ejemplo se le da aún más libertad a las ubicaciones: pueden estar en cualquier hebra, y en cualquier secuencia –de modo que puede haber dos en una secuencia, y ninguna en otra.)

Idea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs sampling

5’- TCTCTCTCCACGGCTAATTAGGTGATCATGAAAAAATGAAAAATTCATGAGAAAAGAGTCAGACATCGAAACATACAT

5’- ATGGCAGAATCACTTTAAAACGTGGCCCCACCCGCTGCACCCTGTGCATTTTGTACGTTACTGCGAAATGACTCAACG

5’- CACATCCAACGAATCACCTCACCGTTATCGTGACTCACTTTCTTTCGCATCGCCGAAGTGCCATAAAAAATATTTTTT

5’- TGCGAACAAAAGAGTCATTACAACGAGGAAATAGAAGAAAATGAAAAATTTTCGACAAAATGTATAGTCATTTCTATC

5’- ACAAAGGTACCTTCCTGGCCAATCTCACAGATTTAATATAGTAAATTGTCATGCATATGACTCATCCCGAACATGAAA

5’- ATTGATTGACTCATTTTCCTCTGACTACTACCAGTTCAAAATGTTAGAGAAAAATAGAAAAGCAGAAAAAATAAATAA

5’- GGCGCCACAGTCCGCGTTTGGTTATCCGGCTGACTCATTCTGACTCTTTTTTGGAAAGTGTGGCATGTGCTTCACACA

TGAAAAATTC

GACATCGAAA

GCACTTCGGC

GAGTCATTAC

GTAAATTGTC

CCACAGTCCG

TGTGAAGCAC

Agrego?

GACATCGAAA

GCACTTCGGC

GAGTCATTAC

GTAAATTGTC

CCACAGTCCG

TGTGAAGCAC

TCTCTCTCCAMejora?

…HIS7

…ARO4

…ILV6

…THR4

…ARO1

…HOM2

…PRO3

Idea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs samplingIdea del Gibbs sampling

5’- TCTCTCTCCACGGCTAATTAGGTGATCATGAAAAAATGAAAAATTCATGAGAAAAGAGTCAGACATCGAAACATACAT

5’- ATGGCAGAATCACTTTAAAACGTGGCCCCACCCGCTGCACCCTGTGCATTTTGTACGTTACTGCGAAATGACTCAACG

5’- CACATCCAACGAATCACCTCACCGTTATCGTGACTCACTTTCTTTCGCATCGCCGAAGTGCCATAAAAAATATTTTTT

5’- TGCGAACAAAAGAGTCATTACAACGAGGAAATAGAAGAAAATGAAAAATTTTCGACAAAATGTATAGTCATTTCTATC

5’- ACAAAGGTACCTTCCTGGCCAATCTCACAGATTTAATATAGTAAATTGTCATGCATATGACTCATCCCGAACATGAAA

5’- ATTGATTGACTCATTTTCCTCTGACTACTACCAGTTCAAAATGTTAGAGAAAAATAGAAAAGCAGAAAAAATAAATAA

5’- GGCGCCACAGTCCGCGTTTGGTTATCCGGCTGACTCATTCTGACTCTTTTTTGGAAAGTGTGGCATGTGCTTCACACA

AAAAGAGTCA

AAATGACTCA

AAGTGAGTCA

AAAAGAGTCA

GGATGAGTCA

AAATGAGTCA

GAATGAGTCA

AAAAGAGTCA

…HIS7

…ARO4

…ILV6

…THR4

…ARO1

…HOM2

…PRO3

(Es el motivo de un sitio de regulación en genes de S. cerevisiae)

Gibbs sampling, EMGibbs sampling, EMGibbs sampling, EMGibbs sampling, EM

The Gibbs Motif Sampler Homepage:http://bayesweb.wadsworth.org/gibbs/gibbs.html

software bajable, y también servicio online

Otro servidor:http://www.cbs.dtu.dk/biotools/EasyGibbs/

Idea con EMIdea con EMIdea con EMIdea con EM

Los métodos EM no escogen ubicación ni hacen un MSA:

•su parámetro a iterar es un motivo

•le asignan una probabilidad a cada ubicación, según ese motivo

•recalculan el motivo como un perfil de todas las ubicaciones, ponderadas por esas probabilidades

Hay diversas variaciones sobre estas ideas (EM y Gibbs).

Dominios, motivos, familiasDominios, motivos, familiasDominios, motivos, familiasDominios, motivos, familias

•Motivos:

patrones locales. Pueden ser sitios activos de proteínas, dominios funcionales, regiones reconocibles de DNA, etc.

•Dominios:

los segmentos funcionales en las proteínas (que son relativamente modulares). Un dominio suele estar caracterizado por un motivo.

Dominios, motivos, familiasDominios, motivos, familiasDominios, motivos, familiasDominios, motivos, familias

•Familia:

una familia de proteínas comparte la mayoría de sus dominios; puede haber variaciones. Y dentro de “superfamilias” de proteínas, más variación aún.

Los motivos salen de MSA, pero también son útiles para construir MSA, si detectamos primero motivos conocidos en las secuencias, y los usamos para anclar el alineamiento.

Proteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominios

Alinear bien proteínas multi-dominio es un problema. Especialmente si lo que queremos es no sólo identificar dominios, sino relación filogenética.

Proteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominios

En este caso, las proteínas alineadas en A tienen ancestro común, pero no las alineadas en B. Sin embargo las de B resultan similares por culpa de los dominios IG compartidos (IG es un dominio “promiscuo”, que suele insertarse en proteínas).

¿Cómo distinguir?

Proteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominios

Una aproximación:

Sequence Similarity Network Reveals Common Ancestry of Multidomain ProteinsN. Song et al, PLoS Comput Biol. 2008 4(5): e1000063.10.1371/journal.pcbi.1000063

Estudian el grafo de las secuencias similares, dentro de una base de datos, a dos secuencias dadas.

Según la forma de ese grafo, se distingue la ascendencia común vs. la homología sólo de un trozo.

Proteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominiosProteínas con múltiples dominios

Los vecinos comunes son más que los vecinos únicos, en el caso de verdadera homología de las secuencias.

En el caso en que sólo hay homología de algunos dominios, resulta al revés.

Definen un coeficiente de “correlación de vecindades”, que discrimina bien entre homólogos verdaderos y los que no.

top related