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.
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’arbre des suffixes pour une s´ equence.
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
• 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) o` u n = |S
1| + |S
2|.
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)
Recherche de r´ ep´ etitions supermaximales
R´ ep´ etition supermaximale: R´ ep´ etition maximale qui n’est facteur d’aucune autre r´ ep´ etition maximale
R´ ep´ etition presque supermaximale: R´ ep´ etition maximale qui
apparaˆıt ` a au moins une position dans S o` u elle n’est pas facteur d’une autre r´ ep´ etition maximale: position t´ emoin.
Exemple
x a b y c d q c d y a b z a b y
c d: R´ ep´ etition supermaximale; a b: R´ ep´ etition presque sm.
Position t´ emoin pour a b: 2
emeposition.
Figure suivante: v nœud left diverse, i.e. α r´ ep´ etition max. Soit w fils de v qui n’est pas une feuille.
r
v
γ w
α pos2
pos1
L(w): Ensemble des positions de α dans S identifi´ ees par le sous-arbre de racine w.
Lemme: Aucune position de L(w) n’est une position t´ emoin pour v.
Si w feuille, alors ´ etiquette de w: β = αγ . Soit i position de w dans S , et x caract` ere gauche de w
r
v γ
α
w i
Lemme: i position t´ emoin pour α ssi x n’est le caract` ere gauche d’aucune autre feuille du sous-arbre de v.
Preuve: Si ∃ une autre occurrence de α pr´ ec´ ed´ ee de x, alors xα apparaˆıt deux fois, et i ne peut pas ˆ etre une position t´ emoin.
Sinon, aucune autre auccurrence de α n’est pr´ ec´ ed´ ee de x = ⇒
l’occurrence de α ` a la pos. i n’est contenue dans aucune r´ ep´ etition
max.
Th´ eor` eme: Un nœud v left diverse repr´ esente une r´ ep´ etition presque supermaximale α ssi l’un des fils de v est une feuille i et S[i − 1]
n’est le caract` ere gauche d’aucune autre feuille du sous-arbre de v
Un nœud left diverse repr´ esente une r´ ep´ etition supermaximale ssi tous les fils de v sont des feuilles, et tous les caract` eres gauches de ces feuilles sont diff´ erents
Toutes les r´ ep´ etitions presque supermaximales et supermaximales
peuvent ˆ etre trouv´ ees en un temps lin´ eaire.
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 )
23
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 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