• Aucun résultat trouvé

Structures de donn´ees pour les s´equences biologiques

N/A
N/A
Protected

Academic year: 2022

Partager "Structures de donn´ees pour les s´equences biologiques"

Copied!
32
0
0

Texte intégral

(1)

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”.

(2)

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 |Σ|.

(3)

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

(4)

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.

(5)

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.

(6)

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

(7)

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 ’$’

(8)

Arbre des suffixes pour S = C

1

A

2

T

3

T

4

A

5

T

6

T

7

A

8

G

9

G

10

A

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)

(9)

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

(10)

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

1

A

2

T

3

T

4

A

5

T

6

T

7

A

8

G

9

G

10

A

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.

(11)

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.

(12)

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

(13)

• 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

) !!

(14)

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:

(15)

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)).

(16)

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

(17)

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

(18)

Algorithme simplifi´ e pour la phase i + 1:

Rajouter S [i + 1] ` a la fin des ´ etiquettes des j

i

feuilles 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

n

prend 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.

(19)

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

(20)

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

}

(21)

– 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.

(22)

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.

(23)

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

(24)

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)

(25)

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

1

S = 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 )

(26)

T1 = x a b x a

1 2 3 4 5

T2 = b a b x b a

1 2 3 4 5 6

b #

x a

#

# x a

1

2

4 5

b

b a

#

b a # b a # 4

6 3

5

3

1

2

# a

2

1 2

1 3

# a 1 # a

b x b

1

profondeur en caracteres

x a b x a #

lca de (4,4 ) lca de (1,4 )

26

(27)

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.

(28)

Recherche de palindromes

Palindrome S

0

de 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.

(29)

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

r

en 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)

(30)

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

r

S = 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)

(31)

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

* *

* * *

* * *

* *

(32)

Algorithme:

(1) Pour tout j faire

(2) i ← 1; j

0

← j; count ← 0;

(3) Tant que count ≤ k et i ≤ m faire

(3) l ← taille de la plus longue extension des positions i dans P et j

0

dans S ;

(4) i ← i + l;

(5) Si i > m, occurrence de P ` a la position i;

(6) Si non count ← count + 1; j

0

← j

0

+ l + 1;

Complexit´ e en temps: Pour chaque position j dans S , O(k)

recherches de plus longues extensions = ⇒ O(kn)

Références

Documents relatifs

Pour une garantie de fraîcheur irréprochable, ces plats sont préparés en quantité limitée Notre Chef est à votre disposition en cas de restrictions alimentaires ou

Pour une garantie de fraîcheur irréprochable, ces plats sont préparés en quantité limitée Notre Chef est à votre disposition en cas de restrictions alimentaires ou

Médaille d’Or au Concours Général Agricole de Paris 2020 Gold Medal Concours Général Agricole de Paris 2020.. 91 pts - International

Le conseil de la ville peut, par règlement, permettre, malgré tout règlement adopté par un conseil d'arrondissement, la réalisation d'un projet

Pour une garantie de fraîcheur irréprochable, ces plats sont préparés en quantité limitée Notre Chef est à votre disposition en cas de restrictions alimentaires ou

Pour une garantie de fraîcheur irréprochable, ces plats sont préparés en quantité limitée Notre Chef est à votre disposition en cas de restrictions alimentaires ou

Pour une garantie de fraîcheur irréprochable, ces plats sont préparés en quantité limitée Notre Chef est à votre disposition en cas de restrictions alimentaires ou

// renvoie un arbre de racine e ayant l et r pour fils gauche et droit Element root(BTree bt); // renvoie l’´ el´ ement ` a la racine de l’arbre BTree leftChild(BTree bt); // renvoie