Structures de donn´ ees pour les s´ equences biologiques
Des structures de donn´ ees appropri´ ees doivent ˆ etre utilis´ ees pour traiter les s´ equences biologiques (ADN, prot´ eines, ARN): acc` es rapide, et espace m´ emoire raisonnable.
Arbre de recherche: Structure de donn´ ee appropri´ ee pour le
traitement de donn´ ees num´ eriques ordonn´ ees. De la mˆ eme fa¸ con, on a besoin de structures appropri´ ees pour le traitement des s´ equences.
Les structures de donn´ ees d´ evelopp´ ees pour traiter les s´ equences (string data structures) id´ eales pour la recherche exacte de motifs:
Etape tr` ´ es importante ` a plusieurs tˆ aches. Par exemple, la 1` ere
´ etape de BLAST consiste en une recherche exacte de “seeds”.
Lookup Tables
Lookup Table: Structure de donn´ ees simple permettant de
conserver les positions des occurrences de tous les facteurs d’une certaine taille w d’une ou de plusieurs s´ equences: chaque entr´ ee d’une table lookup pointe sur une liste chain´ ee contenant les positions des occurrences du facteur correspondant.
Utilis´ ees dans de nombreuses applications, en particulier dans BLAST pour conserver les occurrences des “seeds” (graines).
Soit w une constante (dans BLAST, taille d’une graine), et Σ l’alphabet. Une table lookup est un tableau de taille |Σ|
w, correspondant ` a tous les mots de taille w sur Σ. Soit
f : Σ −→ {0, 1, · · · Σ − 1} une fonction qui associe un num´ ero
diff´ erent ` a chaque caract` ere de l’alphabet. Alors, chaque mot de
taille w peut ˆ etre trait´ e comme un nombre en base |Σ|.
Lookup Tables
Table lookup pour S = CAT T AT T AGGA, et w = 2. Construite en utilisant le mapping:
A −→ 0; C −→ 1; G −→ 2; T −→ 3
Par exemple, T A correspond ` a 30 en base 4, ce qui fait 12.
1
0 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT
8
5
2 1 10 9 4 3
6
7
Lookup Tables
Une table Lookup pour une s´ equence S de taille n peut ˆ etre cr´ e´ ee en temps O(|Σ|
w+ n):
• Cr´ eer un tableau vide en temps O(|Σ|
w);
• Ins´ erer chacun des n − w + 1 facteurs de taille w de S : Trouver l’indice dans le tableau, puis ins´ erer la pos. dans la liste
chaˆın´ ee. Peut se faire en temps constant.
Espace ´ egalement en O(|Σ|
w+ n). Pour avoir un espace lin´ eaire en
la taille de la s´ equence on doit avoir w ≤ log
|Σ|n.
Une fois la table lookup construite pour S , toutes les occurrence d’une s´ equence requˆ ete de taille w dans S peuvent ˆ etre retrouv´ ees en temps O(w + k), o` u k est le nombre d’occurrences.
Peut-ˆ etre utilis´ e ´ egalement pour la repr´ esentation d’un ensemble de s´ equences.
Le probl` eme principal des tables lookup est leur d´ ependance
vis-` a-vis de la constante w: Pas efficace pour la recherche d’un
motif de taille l > w.
Arbre des suffixes
Arbre des suffixes: Structure de donn´ ees refl´ etant les caract´ eristiques internes des s´ equences.
Application naturelle: Recherche exacte dans un texte
• Phase de pr´ etraitement: Construction de l’arbre des suffixes;
O(n) en temps et en espace pour un texte de taille n
• Phase de recherche: temps O(m) pour un mot de taille m
Autre application: Recherche de r´ ep´ etitions, recherche de
palindromes
D´ efinition
Arbre S des suffixes de S de taille n: arbre orient´ e tq
• n feuilles num´ erot´ ees de 1 ` a n, chacune correspondant ` a un suffixe de S ;
• Chaque nœud interne a au moins deux fils;
• Chaque arˆ ete est ´ etiquett´ ee par un facteur de S ;
• Deux arˆ etes sortant d’un mˆ eme nœud ont des ´ etiquettes d´ ebutant par des caract` eres diff´ erents;
• Chemin de la racine ` a une feuille i ´ etiquett´ e par le suffixe S [i..n]
Probl` eme: Si un suffixe co¨ıncide avec un facteur de S , aucune feuille ne correspondra au suffixe.
−→ Rajouter un caract` ere “artificiel” ` a la fin de S . Par exemple,
’#’ ou ’$’
Arbre des suffixes pour S = C
1A
2T
3T
4A
5T
6T
7A
8G
9G
10A
11$
12:
u
2
z G G A
$ 6 w
T
T A A
T T
A G
G A
$ 4
T T
A G
G A
$ 3 G
G A
$ 7
y C
A T T A T T A G G A
$ r
1 A
T T A x
T T A G
G A
$ 5
G G A
$
G AG
$ 8
v
10 9 G
G A
$ A
$
$ 11
12
$
Pour r´ eduire l’espace, repr´ esenter chaque ´ etiquette par deux positions plutˆ ot que par un facteur
Chaque nœud interne de S a au moins 2 files ⇒ au plus n − 1
nœudes internes ⇒ Taille de S en O(n)
Recherche exacte de P dans S
Matcher les caract` eres de P en suivant un chemin unique dans S
• Si les caract` eres de P ne sont pas ´ epuis´ es, il n’y a aucune occurrence de P dans S −→ O(m).
• Si non, les feuilles du sous-arbre d´ etermin´ e par P donnent toutes les positions de P dans S −→ Temps O(m + k) o` u k nombre
d’occurrences de P dans S.
u
2
z G G A
$ 6
P : T A T T A P : A T T C G C
A T T A T T A G G A
$ r
1 A
T T A x
T T A G
G A
$ 5
G G A
$ GG
$A 8
v
10 9 G
G A
$ A
$
$ 11
12
$
w TA A
T T
A G
G A
$ 4
T T
A G
G A
$ 3 G
G A
$ 7
y T
Table des suffixes
Table des suffixes (Suffix Array) pour S est une table contenant les suffixes de S en order lexicographique.
Table des suffixes pour S = C
1A
2T
3T
4A
5T
6T
7A
8G
9G
10A
11$
12:
12 11 8 5 2 1 10 9 7 4 6 3
Les arbres et tables des suffixe peuvent-ˆ etre construits en temps lin´ eaire. Ils sont utiles pour une multitude de tˆ aches li´ ees ` a
l’analyse des s´ equences.
L’avantage des tables des suffixes par rapport aux arbres des
suffixes est une plus grande efficacit´ e en espace.
Construction de l’arbre des suffixes
Construction na¨ ıve:
Insertion successive des suffixes, du plus long au plus court Exemple: Pour P = aabbabb, ins´ erer successivement aabbabb$, abbabb$, bbabb$, · · ·
Complexit´ e O(n
2)
Constructions en temps lin´ eaire:
• Weiner – 1973: Premier algorithme lin´ eaire.
• McCreight – 1976: Algorithme lin´ eaire utilisant moins d’espace.
• Ukkonen – 1995: Algorithme lin´ eaire, plus simple.
Algorithme d’Ukkonen
Arbre des suffixes implicite: Arbre pour S et non pas pour S$. Contient moins d’information que l’arbre des suffixes.
I
i: Arbre implicite pour S[1..i]
M´ ethode g´ en´ erale:
• m phases.
Phase i + 1: Construction de I
i+1` a partir de I
i, en rajoutant S[i + 1]
• Pour chaque phase i + 1, i + 1 extensions, une pour chaque suffixe de S[1..i + 1]: S[1..i + 1], S [2..i + 1], S[3..i + 1] · · ·
Extension S[j..i+1]:
• R` egle 1: Le chemin ´ etiquett´ e par S[j..i] se termine ` a une feuille.
Alors, rajouter S [i + 1] ` a la fin de cette ´ etiquette
• R` egle 2: Pas une feuille et aucun chemin n’a pour ´ etiquette
S[j..i]S[i + 1]. Alors, cr´ eer une bifurcation suppl´ ementaire ` a la fin de S[j..i]
• R` egle 3: Il existe un chemin d’´ etiquette S[j..i + 1]. Alors, rien ` a faire.
T = a a b b a b b
1
a
b
4
bb a bb
3 2 5
8
abbabb
$
$ 5
b a bb 6
$ 6 bb
a 7
a
a
a$
a$
$
$ a
9 8 7 6 5 4 3 2 1
Une fois le chemin ´ etiquett´ e S[i..j ] trouv´ e, extension en temps constant.
Approche na¨ıve: Extension j de la phase i + 1 −→ O(i + 1 − j);
Construction de I
i+1−→ O(i
2); I
n−→ O(n
3) !!
Liens suffixes
v nœud interne d’´ etiquette xα (x: caract` ere; α: mot). Si ∃ nœud s(v) d’´ etiquette α, alors lien suffixe de v ` a s(v).
Un nœud interne d’´ etiquette x a un lien suffixe vers la racine. La racine n’a pas de lien suffixe
x
noeud v noeud s(v)
ed f g α
α
ba dc fe g
Fin de S[j−1..i]
a bc
yz h
Phase i + 1:
Pour j = 1
f feuille d’´ etiquette S[1..i];
Prolonger l’´ etiquette de f par S[i + 1];
Pour j > 1
v ← nœud d’´ etiquette S[j − 1..i] ou juste avant la fin de S[j − 1..i]
qui soit la racine ou qui poss` ede un lien suffixe;
γ ← mot entre v et la fin de S[j − 1..i];
Si v pas la racine, suivre le lien suffixe de v ` a s(v), et continuer dans l’arbre en suivant les caract` eres de γ ;
Si v est la racine, parcourir l’arbre en suivant les caract` eres de S[j..i];
Utiliser les r` egles d’extensions pour s’assurer que S[j..i]S[i + 1] est dans l’arbre;
w ← nœud cr´ e´ e (s’il y a lieu) ` a l’extension j − 1;
Cr´ eer le lien suffixe (w, s(w)).
Construction des liens suffixes
Lemme 1: Si un nouveau nœud v ´ etiquett´ e xα est ajout´ e ` a l’arbre ` a
l’extension j − 1 d’un phase i + 1, alors soit un nœud interne ´ etiquett´ e α existe d´ eja, soit il est cr´ e´ e ` a l’extension j.
Lemme 2: Un nœud nouvellement cr´ ee ` a l’extension j − 1 poss` edera un lien suffixe d` es la fin de l’extension j .
a b c d e
b c
d
noeud cree a l’etape j−1
f
g e
f
Complexit´ e
Remarque: Pour matcher γ , sauter de nœud en nœud en consid´ erant la taille des ´ etiquettes.
Th´ eor` eme: Chaque phase de l’algorithme prend un temps O(n).
−→ Algorithme complet en O(n
2)
Optimisation
A chaque phase de l’algorithme, effectuer un nombre r´ ` eduit d’extensions
Observation 1: Lorsque la r` egle 3 est appliqu´ ee ` a une extension j, alors elle est appliqu´ ee ` a toutes les extensions suivantes
j + 1, · · · , i + 1
Observation 2: Une feuille cr´ e´ e ` a une ´ etape reste une feuille jusqu’` a
la fin de l’algorithme
Algorithme simplifi´ e pour la phase i + 1:
Rajouter S [i + 1] ` a la fin des ´ etiquettes des j
ifeuilles de S
i;
Calculer explicitement les extensions pour j
0= j
i+ 1 ` a j
∗, o` u j
∗est la premi` ere extension pour laquelle la r` egle 3 est appliqu´ ee, ou i + 1;
j
i+1= j
∗− 1;
Th´ eor` eme: La construction des arbres S
1` a S
nprend un temps O(n)
Finalement, l’arbre des suffixes implicite est transform´ e en l’arbre des suffixe en rajoutant le caract` ere $ ` a la fin de S , et en
appliquant une derni` ere fois l’algorithme d’Ukkonen.
Arbre des suffixes g´ en´ eralis´ e
Arbre des suffixes pour un ensemble de s´ equences {S
1, S
2, · · · , S
l}.
Simple extension de l’algorithme d’Ukkonen.
Deux subtilit´ es:
• Etiquette d’une arˆ ´ ete repr´ esent´ ee par trois entiers plutˆ ot que 2.
• Chaque feuille doit contenir les positions des suffixes dans les s´ equences concern´ ees.
T1 = x a b x a T2 = b a b x b a
# b
x a
#
# a x
# a
1,1
1,3 1,2
1,4
1,5 b
a b x b a
b a
2,2 2,1 #
#
b a #
2,3
x a b x a # b a # 2,4
# 2,5
2,6
Diff´ erentes utilisations de l’arbre des suffixes
• Recherche exacte d’un mot dans un texte:
Construction de l’arbre −→ O(n) Recherche de P −→ O(m + k ).
• Recherche multiple: O(n + m + k)
Comparable ` a Aho-Corasick. Si les mots rentr´ es une fois pour toute et recherche dans des textes 6=, utiliser Aho-Corasick. Si texte constant et mots variables, utiliser l’arbre des suffixes.
• Plus long facteur commun ` a deux s´ equences:
Exemple: ababbac et bbabbcab −→ babb n = |S
1| + |S
2|.
– Construire l’arbre des suffixe g´ en´ eralis´ e S pour {S
1, S
2}
– Marquer chaque nœud interne v: 1 (respec. 2) si il existe une feuille dans le sous-arbre de racine v qui corresponde ` a un suffixe de S
1(respec. S
2), et marquer (1, 2) un nœud v´ erifiant les deux conditions ` a la fois
– Trouver le nœud marqu´ e (1, 2) de profondeur en caract` eres maximale
Le marquage et le calcul de la profondeur en caract` eres
peuvent ˆ etre effectu´ es par un algorithme standard de parcours d’arbre = ⇒ Temps total en O(n)
En 1970 Knuth avait conjectur´ e: impossible de r´ esoudre ce
probl` eme en temps lin´ eaire.
Recherche de r´ ep´ etitions maximales
R´ ep´ etition maximale α: ∃ deux positions de α dans S, et ` a ces deux positions, si on prolonge ` a droite ou ` a gauche, plus une r´ ep´ etition.
Si α r´ ep´ etition maximale de S , alors α ´ etiquette d’un nœud de l’arbre des suffixe de S . Mais tout nœud interne ne repr´ esente pas une r´ ep´ etition maximale
Au plus n r´ ep´ etitions maximales car au plus n nœuds internes.
f : Feuille repr´ esentant S [i..n]
S [i − 1]: Caract` ere gauche de f
Nœud interne v “left diverse” si au moins deux feuilles du
sous-arbre de racine v ont des caract` eres gauches diff´ erents. Si v left diverse alors tous les ancˆ etres de v sont left diverse.
Th´ eor` eme: Un mot α ´ etiquette de v est une r´ ep´ etition maximale ssi
v est left diverse.
q a b c y
a b c z a b c
z
y a b c
z q a b c a y b c z
q a b c y a b c z
b c z
y a b c z q a
b c y
a b c z
14 10
2
6 15
11
3 7
y q
x
y a
a
a a
T = x a b c y a b c q a b c y a b c z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
repetitions maximales LD
LD
a a
LD
Recherche des nœuds left diverse:
• Pour chaque feuille, conserver son caract` ere gauche
• Examiner les nœuds internes de bas en haut (des feuilles ` a la racine)
– Si au moins un fils de v left diverse alors v left-diverse – Sinon, consid´ erer les caract` eres gauches des fils de v
∗ Si un mˆ eme caract` ere x, alors x caract` ere gauche de v
∗ Si au moins deux caract` eres diff´ erents, alors v est left diverse
Th´ eor` eme: Les r´ ep´ etitions maximales d’une s´ equence S peuvent
ˆ etre trouv´ ees en temps O(n)
Plus longue extension commune
S
1, S
2: Deux s´ equences
Lowest common extension (lce) pour (i, j ): Plus long pr´ efixe commun de S [i..n
1] et S
2[j..n
2]
1 2 3 4 5 6 7 8 9 10 11
S = a a b b b a b b a b c
1S = a a b b a b b c
2 1 2 3 4 5 6 7 8• Construire l’arbre des suffixes g´ en´ eralis´ e pour S
1, S
2. Conserver la profondeur en caract` ere de chaque nœud.
• Pour tout (i, j ), trouver le dernier ancˆ etre commun (lowest
common ancestor: lca) v des feuilles i, j . Profondeur en
caract` ere de v = lce pour (i, j )
T1 = x a b x a
1 2 3 4 5T2 = b a b x b a
1 2 3 4 5 6b #
x a
#
# x a
1
2
4 5
b
b a
#
b a # b a # 4
6 3
5
3
1
2
# a
21 2
1 3
# a 1 # a
b x b
1profondeur en caracteres
x a b x a #
lca de (4,4 ) lca de (1,4 )
26
Dernier ancˆ etre commun: Apr` es un pr´ etraitement de l’arbre des suffixes, le lca de deux nœuds quelconques peut ˆ etre trouv´ e en temps constant.
R´ esultat obtenu par Harel & Tarjan, 1984 et simplifi´ e par Schierber & Vishkin, 1988.
Id´ ee: Num´ eroter les nœuds par des nombres repr´ esent´ es sur log(n) bits −→ nb constant de comparaisons, additions et op´ erations
logiques AND, OR, XOR.
Recherche de palindromes
Palindrome S
0de rayon k de S : Sous s´ equence de S tq, en d´ ebutant la lecture au milieu (en excluant le carac. du milieu si |S
0| impair), la lecture des k caract` eres vers la droite ou vers la gauche donne le mˆ eme mot. Palindrome maximal s’il ne peut pas ˆ etre ´ etendu.
S = a a b a c t g a a c c a a t a a c c a a a b a
palindrome max de rayon 3 palindrome max de rayon 1
Palindrome s´ epar´ e par l caract` eres: Les deux parties du palindrome sont s´ epar´ ees de l caract` eres
a a c a g c t a c a a a: palindrome de rayon 4, s´ epar´ e par 3 caract` eres
Probl` eme: Trouver tous les palindromes maximaux de S s´ epar´ es
par l caract` eres.
S de taille m
S
r: S´ equence inverse de S .
q−l l
= g t a a a c a g c t a c a a a c t c S
q+1 q+k
q q−l−k+1
Algorithme:
• Arbre des suffixe g´ en´ eralis´ e pour S et S
r, et pr´ etraitement de fa¸ con ` a trouver la lce de deux suffixes de S et S
ren temps constant
• Pour tout q de 1 ` a m − 1, trouver la lce de la paire
(q + 1, m − q + l − 1) (q + 1 dans S et m − q + l − 1 dans S
r) Si extension de taille non nulle k, alors un palindrome est
trouv´ e, dont la deuxi` eme moiti´ e d´ ebute ` a la pos. q + 1
Complexit´ e O(m)
Palindromes au sens biologique:
a a a c a g c t t g t t t plutˆ ot que a a a c a g c t a c a a a
Mˆ eme algorithme mais en consid´ erant c(S
r) plutˆ ot que S
rS = a g a t a g c c t g a
S
r= a g t c c g a t a g a c(S
r) = t c a g g c t a t c t
Recherche de tous les palindromes s´ epar´ es (pour l quelconque): Se ram` ene ` a la recherche de toutes les r´ ep´ etitions maximales inverses
−→ Temps O(m + occ) o` u occ = nb d’occurrences.
Si borne fixe pour l, alors extension de l’algorithme pr´ ec´ edent,
toujours O(n)
Arbre des suffixes pour la recherche avec mismatches
Recherche de P de taille m dans S de taille n ` a k mismatches pr` es
Id´ ee: A chaque position ` j dans S, ex´ ecuter au plus k recherches de lce
k=3
A C C A T T A A C C A T T A
A C C A T T A A C C A T T A
A C G A G T A T T A G C T A A C