160 likes | 286 Views
Alignement de séquences (suite). Nadia El-Mabrouk. Graphe d’édition pour l’alignement de séquences. T. [. e. ]. [. e. ]. [. e. ]. q. b. a. a. [. a. ]. [. a. ]. [. a. ]. [. a. ]. [. a. ]. [. a. ]. [. a. ]. a. b. a. e. e. e. e. S. [. e. ]. [. e. ].
E N D
Alignement de séquences(suite) Nadia El-Mabrouk
Graphe d’édition pour l’alignement de séquences T [ e ] [ e ] [ e ] q b a a [ a ] [ a ] [ a ] [ a ] [ a ] [ a ] [ a ] a b a e e e e S [ e ] [ e ] [ e ] b a a 1 [ b ] [ b ] [ b ] [ b ] [ b ] [ b ] [ b ] b b b e e e e [ e ] [ e ] [ e ] b a a 2 f Graphe orienté, dont les arêtes sont étiquetées.
|S| = m, |T| = n. • Correspondance bijective entre les alignements de S avec T et les chemins de q= (0,0) à f= (m,n). • D(i,j): Valeur maximale d’un chemin de q= (0,0) au sommet (i,j) . Trouver la valeur maximale D(m,n) d’un chemin de q= (0,0) à f= (m,n). ] [ Si D(0,0) = 0; Pour j = 1 à n faire D(0,j) = D(0,j) + v( ); Pour i=1 à m faire { D(i,0) = D(i-1,0) + v ( ); Pour j=1 à n faire D(i,j) = max {D(i-1,j) + v( ) , D(i,j-1) + v ( ), D(i-1,j-1)+ v ( )} } Retourner (D(m,n)); e [ [ [ e e Si ] ] ] Tj Tj Tj
Expression régulière • Aligner S = « AT » avec R = « (A|C)T(T|G) » A T q f T C G On note Ql’ensemble des états de l’automate On note l(q)l’étiquette d’un étatq.
Expression régulière • Aligner (A|C)T(T|G) avec AT [ e ] [ e ] [ e ] [ e ] A T [ e ] [ e ] e [ e ] T (0,q) A e e T e T [ e ] [ e ] [ e ] [ e ] C G e e C G A A T T C G T A T (m, f) T C G
Expression régulière • Aligner S = « AT » avec R = « (A|C)T(T|G) » [ e ] [ e ] [ e ] [ e ] A T [ e ] [ e ] e [ e ] T (0,q) A e e T e T [ e ] [ e ] [ e ] [ e ] C G e e [ A ] [ A ] C G A e A [ A ] A T C [ C ] e T C G T A T (m, f) T C G
Expression régulière • Aligner S = « AT » avec R = « (A|C)T(T|G) » [ e ] [ e ] [ e ] [ e ] A T [ e ] [ e ] e [ e ] T (0,q) A e e T e T [ e ] [ e ] [ e ] [ e ] C G e e [ A ] [ A ] C G A e A [ A ] A T C [ C ] e T C G T A T (m, f) T C G
e Si e e ] ] ] ] [ [ [ [ l(q) l(q) l(q) l(q) • Correspondance bijective entre les alignements de S avec les mots de L(R)et les chemins de q= (0,0) à f= (m,n). D(0, q) = 0; Pour q in Q-{q} en ordre topologique faire D(0,q) = max t q {D(0,t) + v( )}; Pour i=1 à m faire { D(i, q) = D(i-1, q) + v ( ); Pour q in Q-{q} en ordre topologique faire { D(i,q) = max t q {D(i,t) + v( )}; Si l(q) ≠ e alors D(i,q) = max {max {D(i,q), D(i-1,q) + v( ), maxt q {D(i-1,t) + v( )}; } Pour q in Q-{q} en ordre topologique faire D(i,q) = max {D(i,q), maxt (≠q) q {D(i,t) + v( )}; } Retourner (D(m,f)); ] [ Si e
Recherche de RdansS à kerreursprès e Si e e ] ] ] ] [ [ [ [ l(q) l(q) l(q) l(q) D(0, q) = 0; Pour q in Q-{q} en ordre topologique faire D(0,q) = max t q {D(0,t) + v( )}; Pour i=1 à m faire { D(i, q) = D(i-1, q) + v ( ); Pour q in Q-{q} en ordre topologique faire { D(i,q) = max t q {D(i,t) + v( )}; Si l(q) ≠ e alors D(i,q) = max {max {D(i,q), D(i-1,q) + v( ), maxt q {D(i-1,t) + v( )}; } Pour q in Q-{q} en ordre topologique faire D(i,q) = max {D(i,q), maxt (≠q) q {D(i,t) + v( )}; } Retourner (D(m,f)); ] [ Si e
Recherche de RdansS à kerreursprès e Si e e ] ] ] ] [ [ [ [ l(q) l(q) l(q) l(q) D(0, q) = 0; Pour q in Q-{q} en ordre topologique faire D(0,q) = max t q {D(0,t) + v( )}; Pour i=1 à m faire { D(i, q) = max {0, D(i-1, q) + v ( )}; Pour q in Q-{q} en ordre topologique faire { D(i,q) = max t q {D(i,t) + v( )}; Si l(q) ≠ e alors D(i,q) = max {max {D(i,q), D(i-1,q) + v( ), maxt q {D(i-1,t) + v( )}; } Pour q in Q-{q} en ordre topologique faire D(i,q) = max {D(i,q), maxt (≠q) q {D(i,t) + v( )}; } Retourner (D(m,f)); ] [ Si e
Recherche de RdansS à kerreursprès e Si e e ] ] ] ] [ [ [ [ l(q) l(q) l(q) l(q) D(0, q) = 0; Pour q in Q-{q} en ordre topologique faire D(0,q) = max t q {D(0,t) + v( )}; Pour i=1 à m faire { D(i, q) = max {0, D(i-1, q) + v ( )}; Pour q in Q-{q} en ordre topologique faire { D(i,q) = max t q {D(i,t) + v( )}; Si l(q) ≠ e alors D(i,q) = max {max {D(i,q), D(i-1,q) + v( ), maxt q {D(i-1,t) + v( )}; } Pour q in Q-{q} en ordre topologique faire D(i,q) = max {D(i,q), maxt (≠q) q {D(i,t) + v( )}; } Retourner toutes le positions i telles que (D(i,f)) ≤ k; ] [ Si e
Conclusion • Alignement global de deux séquences S et T(|S| ≈ |T| = n) • Distance d’édition (Levenshtein) ou valeur de similarité. • Algorithme de programmation dynamique en O(n2) en temps et en espace. • Algorithme de Hirschberg: stratégie « Diviser pour Reigner ». O(n2) en temps et O(n) en espace. • Optimisation en temps: calculer la table autour d’une bande. Temps et espace O(kn) où k est la distance d’édition.
Conclusion • Alignement local de deux séquences S et T(|S| ≈ |T| = n) • Valeur de similarité seulement. • Algorithme de programmation dynamique en O(n2) en temps et en espace.
Conclusion • Généralisation de l’alignement local/global aux « gaps » • Plutôt que de considérer chaque « indel » séparément, les regrouper en « gaps ». • Dans le cas d’une pondération quelconque des « gaps », algorithme O(n3) en temps et en espace. • Dans le cas d’une pondération affine, algorithme en O(n2).
Conclusion • Recherche d’une séquence S dans une séquence T à k erreurs près(|S|=m, |T| = n, m << n) • Distance d’édition (Levenshtein) ou valeur de similarité. • Algorithme de programmation dynamique en O(mn) en temps et en espace.
Conclusion • Alignement d’un texte S avec une expression régulière R (|S|≈|R| = n) • Algorithme de programmation dynamique en O(n2) en temps et en espace. • Recherche d’une expression régulière R dans un texte S à k erreurs près(|S|= n, |R| = m, n>>m) • Algorithme de programmation dynamique en O(mn) en temps et en espace.