Algoritmos para strings (3) Bioinformática, Elvira Mayordomo

Documentos relacionados
Árboles de sufijos. Algoritmia para problemas difíciles Elvira Mayordomo

Árboles Filogenéticos. BT7412, CC5702 Bioinformática Diego Arroyuelo. 2 de noviembre de 2010

Bioinformática y Biología molecular. Algoritmia para problemas difíciles 24 / 11 / 2014 Elvira Mayordomo (con comentarios de Jorge Álvarez)

(e) Con la poda alfa-beta se eliminan nodos que nunca serán alcanzados

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

El TAD Grafo. El TAD Grafo

Introducción a los códigos compresores

Problemas de Recursividad

Dos matrices son iguales cuando tienen la misma dimensión y los elementos que ocupan el mismo lugar en ambas son iguales

El Juego como Problema de Búsqueda

Algoritmos sobre Grafos

Algoritmos de Strings. Héctor Navarro

TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS

Tablas Hash y árboles binarios

Medidas de centralización

OPTIMIZACIÓN VECTORIAL

Expresiones regulares y distancia de edición.

Minería de Datos. Árboles de Decisión. Fac. Ciencias Ing. Informática Otoño de Dept. Matesco, Universidad de Cantabria

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

UNIVERSIDAD INTERAMERICANA DE PUERTO RICO RECINTO DE ARECIBO CENTRO DE SERVICIOS DE APOYO AL ESTUDIANTE

Función logarítmica (parte 1)

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Aprendizaje Automatizado

PREPARACION OLIMPIADA MATEMATICA CURSO

Bioinformática y Biología molecular. Bioinformática Elvira Mayordomo

GRAMATICAS LIBRES DEL CONTEXTO

JUEGOS. Área de aplicación de los algoritmos heurísticos Juegos bi-personales: oponente hostil

Twitter Qué es Twitter?

Tema 1: Matrices y Determinantes

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

POLÍGONOS POLÍGONOS. APM Página 1

Operaciones con monomios y polinomios

MÉTODO DE ANÁLISIS MIGUEL MARTÍNEZ VIGIL CARMEN HERNÁNDEZ CORRAL FORUM CALIDAD 86/97 67

NOCIONES PRELIMINARES (*) 1

Similitud de Secuencias: de un Par a Todas contra Todas

Algebra lineal y conjuntos convexos

FORMATO CONDICIONAL EN EXCEL

Sistemas de Ecuaciones. Lineales I

NÚMEROS COMPLEJOS: C

Capítulo 3: Técnicas de Conteo Clase 2: Permutaciones y Combinaciones, Coeficientes Binomiales y Aplicaciones a Probabilidad Discreta

Tablas en vista hoja de datos

Matriz de Insumo - Producto

Esta expresión polinómica puede expresarse como una expresión matricial de la forma; a 11 a 12 a 1n x 1 x 2 q(x 1, x 2,, x n ) = (x 1, x 2,, x n )

3. Métodos clásicos de optimización lineal

TUTORIAL SOBRE HOJAS DE CALCULO

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

7.4. UTILIDADES DE LAS PILAS

Identificación de inecuaciones lineales en los números reales

Conjuntos disjuntos (Relaciones de equivalencia)

Algoritmo para Calcular Logaritmos

Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre

ACCEDER A BITÁCORA DE TRABAJO SQL SERVER

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

7. Agrupamiento (clustering)

Bing (proveedor de busqueda) Bing es una herramienta de búsqueda que nos ayudará a encontrar lo que buscamos de forma rápida y sencilla.

XQuery. Un lenguaje de consulta para XML.

Minicurso de Teoría de Gráficas Escuela de Verano 2014 por María Luisa Pérez Seguí Facultad de Ciencias Físico-Matemáticas, Universidad Michoacana

Sistemas polinomiales

«La derivada de una función en un punto representa geométricamente la pendiente de la recta tangente a la función en dicho punto»

Tema 3: Sistemas de ecuaciones lineales

FACTORIZACIÓN. De acuerdo con lo anterior, el resultado de una factorización siempre será un producto.

Semana03[1/17] Funciones. 16 de marzo de Funciones

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

Las operaciones con números irracionales

El conjunto de datos obtenidos en un estudio se pueden describir en base a tres elementos esenciales:

Conjunto R 3 y operaciones lineales en R 3

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Sistemas Operativos. Curso 2016 Sistema de Archivos

TUTORIAL RESOLUCIÓN GENERAL Nº3579

ESTADÍSTICA CON EXCEL

7.FUNCIÓN REAL DE VARIABLE REAL

Creación de materiales didácticos Aplicaciones para dispositivos móviles Lección 3

Programación: División de un polinomio entre un binomio

Destrezas algebraicas: de lo concreto a lo abstracto MARIA DE L. PLAZA BOSCANA

Lenguajes (gramáticas y autómatas)

TEMA 1 NÚMEROS NATURALES

Cada uno de los botones que estás viendo (en la llamada Barra de Herramientas) permite desplegar un menú diferente.

Tabla de Símbolos. Programación II Margarita Álvarez

4ta. Práctica. Búsqueda en árbol con contrincante: MiniMax con poda Alfa-Beta. Inteligencia Artificial Prácticas 2004/2005

EBRARY. Descripción general de la base Permite el acceso a más de 31,800 libros electrónicos en texto completo de múltiples disciplinas.

Máquinas Secuenciales, Autómatas y Lenguajes Formales. Tema 4: Autómatas finitos deterministas. Holger Billhardt holger.billhardt@urjc.

Materia: Matemática de Octavo Tema: Raíces de un polinomio. Marco teórico

Manual de Usuario. Suscripciones electrónicas

La eficiencia de los programas

Aplicaciones de Ec. en Diferencias a la Economía

Fundamentos Matemáticos de la Ingeniería. Tema 4: Diagonalización de matrices. Curso

Límites de funciones de varias variables.

TALLER CAPACITACIÓN : USO DE LA GUÍA PARA EL ANÁLISIS DE CAUSAS EN LA TOMA DE ACCIONES CORRECTIVAS Y PREVENTIVAS. Ing. Emperatriz Zapata Zapata

Diagramas de secuencia

Espacios Vectoriales

Acuerdo 286 Matemáticas

Notación Asintótica 2

Lección 5.1: Matrices y determinantes. Primeros conceptos. Objetivos de esta lección

PROCEDIMIENTO GENERAL. Gestión de Incidencias y Acciones Correctivas RAZÓN SOCIAL DE LA EMPRESA. Código PG-12 Edición 0. Índice:

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Sistemas de Ecuaciones Lineales

Introducción a los Algoritmos Genéticos. Tomás Arredondo Vidal 17/4/09

Transcripción:

Algoritmos para strings (3) Bioinformática, 17-2-16 Elvira Mayordomo

Hoy Otras aplicaciones de árboles sufijos El problema del substring Substring común más largo Solapes (Overlaps) Repeticiones (exactas y maximales) Vectores de sufijos

Ejemplo

Árbol de sufijos de abab$

Árbol de sujijos compacto (b) de aaabbbc

Otras aplicaciones de árboles sufijos El problema del substring Substring común más largo Solapes (Overlaps) Repeticiones (exactas y maximales)

El problema del substring Entrada: Un patrón p= p 1 p m y N textos t 1,, t N Salida: El conjunto de textos en los que aparece el patrón (es decir, I {1,, N} tal que i I sii p es un substring de t i ) Utilidad: para búsqueda en una base de datos de DNA

Una solución con árboles sufijos Construimos un árbol sufijo compacto para t 1 $ 1 t N $ N, donde $ 1,, $ N son N símbolos distintos que no aparecen en los textos

Ejemplo t 1 =aba t 2 =ab

Pero $ 1,, $ N sólo aparecen en las etiquetas que llevan a una hoja (porque cada $ i sólo aparece una vez en los textos) Podemos quitar todo lo que sigue al primer $ de cada etiqueta (es decir, cambiar cada u$ i v por u$ i )

Ejemplo También reetiquetamos la posición en t 1 $ 1 t N $ N con (i,j) para indicar la posición j dentro de t i

Cuánto cuesta construir el árbol generalizado Sea n la longitud total de los textos (es decir, la longitud de t 1 $ 1 t N $ N ) Construir el árbol inicial cuesta O(n log n) La modificación de las etiquetas que van a las hojas y los índices de las hojas cuesta O(n)

Coste del problema del substring Hay que construir el árbol anterior Encontrar el nodo x del árbol que corresponde al patrón En el subárbol de x, encontrar todos los i para los que hay una hoja (i,j) O(n logn + m. +k) k es el número total de ocurrencias

Substring común más largo Si tenemos una base de datos de DNA de organismos parecidos, encontrar strings comunes a todos ellos puede ser importante Si un string aparece en todas quiere decir que ha mutado muy poco y por tanto es importante para la supervivencia del organismo

Substring común más largo Problema de optimización Entrada: Un conjunto de textos T ={t 1,, t N } Soluciones aceptables: Todos los strings x que son substrings de t i para todo i Coste de una solución x: x Objetivo de optimización: Maximizar

Solución con árboles sufijos Construimos un árbol general para para t 1,, t N (es decir, el de t 1 $ 1 t N $ N ) Cada vértice interior x lo etiquetamos con la lista de los i tal que hay una hoja (i,j) en el subárbol de x Buscamos las etiquetas {1,, N} que corresponden a sufijos más largos Etiquetamos cada nodo interno con su profundidad (número de letras desde la raíz)

Recordatorio: árbol sufijo generalizado t 1 =aba t 2 =ab

Solución con árboles sufijos Construimos un árbol general para para t 1,, t N (es decir, el de t 1 $ 1 t N $ N ) Cada vértice interior x lo etiquetamos con la lista de los i tal que hay una hoja (i,j) en el subárbol de x Buscamos las etiquetas {1,, N} que corresponden a sufijos más largos

Ejemplo bcabcac, aabca, bcaa

Por qué funciona? Cada nodo etiquetado {1,, N} corresponde al prefijo de un sufijo (es decir, un substring) para todos los t 1,, t N Cuanto mayor sea la profundidad más largo es el substring

Cuánto tarda? Construir el árbol general O(n log n) Etiquetar cada x con los i tal que hay una hoja (i,j) en el subárbol de x O(n(N+ )N + n N) Etiquetar cada nodo con la profundidad O(n log n) TOTAL O(n(log n + N (N+ )))

El problema del substring común más largo: caso práctico Identificación de restos de personal militar de EEUU Se recolecta el DNA mitocondrial (mtdna) y se secuencia un pequeño intervalo de mtdna de cada individuo del ejército (vivo) Se elige un intervalo de mtdna muy variable, se considera un identificador casi único del individuo

El problema del substring común más largo: caso práctico Cuando es necesario, se recupera el mtdna de los restos de soldados muertos Aislando y secuenciando el mismo intervalo de mtdna puede contrastarse con la base de datos de personal (o más bien con el subgrupo de personal desaparecido) En realidad la calidad de los restos puede impedir la extracción o secuenciación completa del intervalo deseado

El problema del substring común más largo: caso práctico Podemos buscar si la secuencia extraída y secuenciada de los restos es un substring de una de las de la base de datos Más realistamente, debido a los errores, querremos calcular la longitud del substring común más largo entre la secuencia extraída y alguna de las secuencias de la base de datos Cuanto más largo sea el substring encontrado más posibilidades hay de haber identificado a la persona.

Generalizaciones del substring común más largo Calcular el substring común más largo de al menos k de los N textos Calcular la posición del substring común más largo Todos los substrings comunes de una longitud dada L Muy útil para testear la contaminación de DNA (N=2)

Aparte sobre contaminación de DNA El problema de contaminación de DNA (por ejemplo durante la secuenciación) es muy serio y ha dado ejemplos muy embarazosos (dinosaurios) A menudo se tiene una idea clara de posibles fuentes de contaminación Detectar contaminación: Dado un string t 1 y otro t 2 (que une todas las posibles fuentes de contaminación) se trata de detectar si t 1 y t 2 tienen un substring común de longitud mayor que L

Cálculo de Overlaps El solape de s y t es el string y más largo que cumple s=xy, t=yz Se trata de calcular los solapes de cada par de textos de entre t 1,, t N Se usa mucho para secuenciación de DNA

Fuerza bruta Si la suma de las longitudes de t 1,, t N es n Tiempo i,j min( t i, t j ) 2 Por ejemplo si todos los textos son casi iguales (de longitud alrededor de n/n) esto es O(n 2 )

Usando árboles de sufijos Lo podemos hacer en tiempo O(n(log n + +N)) Para secuenciación, estamos hablando de n s enormes

Idea del algoritmo Para buscar el overlap de t i y t j buscamos un sufijo de t i que sea prefijo de t j, es decir, seguimos el camino t j en los sufijos de t i Busco a la vez el overlap de todos los t 1,, t N con un t j

Tiempo Construir el árbol O(n log n) Calcular los L(x) O(n(N+ )) Paso 3: en total todos los L(x) tienen N valores como mucho, y todos los caminos a seguir tienen longitud total n, luego O(n(N+ )) TOTAL: O(n(log n+ N+ ))

Hoy Otras aplicaciones de árboles sufijos El problema del substring Substring común más largo Solapes (Overlaps) Repeticiones (exactas y maximales) Vectores de sufijos

Ejemplo

Árbol de sufijos de abab$

Árbol de sujijos compacto (b) de aaabbbc

Repeticiones Muy usadas para modelizar y tratar una secuencia de DNA Se usan repeticiones exactas y aproximadas, con solape o sin él Vamos a usar los árboles de sufijos para encontrar repeticiones exactas maximales (permitiendo solape)

Definición Sean t y p dos strings, t=t 1 t n, p=p 1 p m Añadimos principio y final a t, t 0 =$, t n+1 =$ p es una repetición exacta en t si existen i,j distintos que cumplen p=t i+1 t i+m =t j+1 t j+m p es una repetición exacta maximal en t si además t i t j y t i+m+1 t j+m+1 Hoy sobreentendemos exacta

Problema Entrada: Un string t=t 1 t n Salida: El conjunto de todas las repeticiones exactas maximales en t

Observaciones Hay como máximo n-1 repeticiones maximales en t=t 1 t n Si p es una repetición maximal en t, seguir el camino p en el árbol compacto de sufijos de t lleva a un nodo interior (es decir, un nodo con dos hijos) Puede haber varias repeticiones maximales empezando en el mismo sitio t= aabcbabacabcc

Observaciones Cómo distingo las repeticiones maximales de las no maximales en cabcab? b, ab, cab llevan a nodos internos del árbol compacto de sufijos

Caracterización El símbolo izdo de una hoja h es t i-1 tal que el camino de la raiz a la hoja es t i t n Un nodo x es left-diverse si dos hojas de x tienen símbolos izdos diferentes p es una repetición maximal sii el camino p lleva a un nodo left-diverse

Algoritmo Construir el árbol de sufijos compacto para t Encontrar el símbolo izdo de cada hoja Etiquetar de las hojas hacia la raiz los left-diverse Coste O(n log n), falta recorrer los caminos a left-diverse Una representación compacta de las repeticiones maximales: borrar los nodos que no son left-diverse (tamaño O(n log n), cuando puede haber O(n 2 ) repeticiones maximales)

Ejemplo Hacer la traza para aabcbabacabcc

Ejercicio En aplicaciones de Biología, no sólo estamos interesados en substrings repetidos sino en ocurrencias en las que un string es una copia de otro invertido. Adaptar las técnicas para encontrar substrings repetidos o substrings comunes al caso en que esté permitido que alguno de los substring esté invertido.

Alfabetos grandes Algunos problemas de biología molecular requieren alfabetos muy grandes No sólo los 20 aminoácidos posibles para proteínas, también los mapas (por ejemplo en encimas de restricción)

Alfabetos grandes: mapas Se codifican sólo algunos substrings que interesan, junto con las distancias (precisas) entre ellos Ecori 5500 BamHI 4000 Ecori 252 (Ecori y BamHI son secuencias conocidas) Se trata de hacer string matching con secuencias codificadas así Los árboles de sufijos con alfabetos enormes son menos eficientes

Vectores de sufijos Hemos visto la utilidad de los árboles de sufijos Ahora nos planteamos guardar los sufijos en un vector, ordenados alfabéticamente (lexicográficamente) Ejemplo: s=ababbabbb

Definición El vector de sufijos de un string s es A(s)=(j 1,, j n ) tal que el orden alfabético de los sufijos es s[j 1,n]< s[j 2,n]< <s[j n,n]

String matching con vectores de sufijos Para encontrar todas las ocurrencias de un patrón p en un texto t contando con el vector de sufijos de t Usar búsqueda dicotómica para encontrar el primer y último sufijo de t que empiezan por p

Coste: O(m log n +k) donde k es el número de ocurrencias El coste no depende del tamaño del alfabeto, sino del número de sufijos!!

Cuánto cuesta construir el vector? Se usa el algoritmo skew o sesgo basado en ordenación Cuesta tiempo O(n) Veamos las ideas prales

Radix sort para strings Podemos ordenar alfabéticamente n strings de longitud d sobre un alfabeto de k símbolos en tiempo O((n+k)d) Para ello ordenamos de forma estable según cada una de las posiciones de la 1 a la d

Ordenar n valores de 0 a k O(n+k)

Para ordenar n strings El algoritmo anterior ordena de forma estable n datos de 0 a k Lo utilizamos para ordenar, según una posición, n strings sobre un alfabeto de k símbolos

strings letter alphabet letter O((n+k)d)

El algoritmo para construir el vector Separa los sufijos que tienen longitud múltiplo de 3 (S 0 ) del resto (S 1,2 ) Construye primero A 1,2, el vector de S 1,2 ordenando sólo las 3 primeras letras de cada sufijo por radix-sort, y si no es suficiente se cambia el alfabeto (cada tres letras viejas es una nueva) y se hace llamada recursiva Construye A 0 usando A 1,2 Mezcla A 0 y A 1,2 Coste O(n)

Detalle del coste del algoritmo El coste del paso recursivo en 2. nos da la ecuación en recurrencias: T(n)= T(2n/3) + O(n) con solución T(n)= O(n)

Próximo tema Métodos de alineamiento