alignement de séquences (suite)
DESCRIPTION
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. ]. - PowerPoint PPT PresentationTRANSCRIPT
Alignement de séquences(suite)
Nadia El-Mabrouk
Graphe d’édition pour l’alignement de séquences
b a a
0 1 2 3
a 1 1 1 2
b 2 1 2 2
q
f
1
2
be[ ] a
e[ ]ae[ ]
ae[ ] a
e[ ]be[ ]
be[ ] a
e[ ] ae[ ]
ae[ ]
ae[ ] a
e[ ]
be[ ] b
e[ ] be[ ]
ae[ ]
be[ ]
b[ ]bb[ ]b
b[ ]b
a[ ]aa[ ]a
a[ ]b
Graphe orienté, dont les arêtes sont étiquetées.
S
T
|S| = m, |T| = n.• Correspondance bijective entre les alignements de S avec T et
les chemins de = (0,0) q à = f (m,n).• D(i,j): Valeur maximale d’un chemin de = (0,0)q au sommet
(i,j) . Trouver la valeur maximale D(m,n) d’un chemin de = q(0,0) à = f (m,n).
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));
Tj
e[ ]Sie[ ]
Tj
e[ ] Tj
Si[ ]
Expression régulière• Aligner S = « AT » avec R = « (A|C)T(T|G) »
A
C
T
T
G
q f
On note Q l’ensemble des états de l’automateOn note l(q) l’étiquette d’un état q.
Expression régulière
A
C
T
T
G
A
C
T
T
G
A
C
T
T
G
A
T
ee[ ] A
e[ ]Ce[ ]
Te][ T
e][Ge][
ee[ ]
ee[ ]
ee[ ] e
e[ ]ee[ ]
• Aligner (A|C)T(T|G) avec AT
(0, )q
(m, )f
Expression régulière• Aligner S = « AT » avec R = « (A|C)T(T|G) »
A
C
T
T
G
A
C
T
T
G
A
C
T
T
G
A
T
AA[ ] e
A[ ]CA[ ]
eC[ ]
ee[ ] A
e[ ]Ce[ ]
Te][ T
e][Ge][
ee[ ]
ee[ ]
ee[ ] e
e[ ]ee[ ]
(0, )q
(m, )f
Expression régulière• Aligner S = « AT » avec R = « (A|C)T(T|G) »
A
C
T
T
G
A
C
T
T
G
A
C
T
T
G
A
T
AA[ ] e
A[ ]CA[ ]
eC[ ]
ee[ ] A
e[ ]Ce[ ]
Te][ T
e][Ge][
ee[ ]
ee[ ]
ee[ ] e
e[ ]ee[ ]
(0, )q
(m, )f
• Correspondance bijective entre les alignements de S avec les mots de L(R) et les chemins de = (0,0) q à = 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));
Sie[ ]
l(q)e[ ]
l(q)e[ ]
l(q)Si[ ]
l(q)e[ ]
Recherche de R dans S à k erreurs près
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));
Sie[ ]
l(q)e[ ]
l(q)e[ ]
l(q)Si[ ]
l(q)e[ ]
Recherche de R dans S à k erreurs près
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));
Sie[ ]
l(q)e[ ]
l(q)e[ ]
l(q)Si[ ]
l(q)e[ ]
Recherche de R dans S à k erreurs près
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;
Sie[ ]
l(q)e[ ]
l(q)e[ ]
l(q)Si[ ]
l(q)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.