• 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!
33
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 G

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

$

G G

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

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

(13)

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.

(14)

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.

(15)

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.

(16)

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

(17)

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)

(18)

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 eme position.

(19)

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.

(20)

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.

(21)

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.

(22)

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 )

(23)

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 )

23

(24)

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.

(25)

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

* *

* * *

* * *

* *

(26)

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)

(27)

III - Algorithme hybride

(a) G. M. Landau et U. Vishkin, Fast parallel and serial approximate string matching, J. Algorothms, vol.

10, pp 137 - 169, 1989

(b) Z. Galil and K. Park, An improved algorithm for approximate string matching, SIAM J. Comput., Vol 19, num. 6, pp. 989 - 999, 1990

(c) E. Ukkonen, D. Wood, Approximate String Matching with Suffix Automata, Algorithmica, vol. 10, pp 353 - 364, 1993

Recherche de P de taille m dans T de taille n ` a k erreurs pr` es.

• Utilise la table des distances D par un calcul de diagonales et un pr´ etraitement (de P ou de P ET T )

• Diff´ erence entre les algos (a), (b) et (c) est dans le pr´ etraitement utilis´ e. Tous ont la mˆ eme complexit´ e.

16

(28)

D´ efinitions:

• Un chemin-d, d ≤ k, est un chemin commen¸cant ` a la ligne 0 et d´ ecrivant un alignement contenant exactement d erreurs.

• Un chemin-d est extr´ emal ` a la diagonale i, s’il est le chemin-d atteignant la case la plus ´ eloign´ ee sur cette diagonale.

Id´ ee g´ en´ erale:

• Proc´ eder en k it´ erations.

• Pour chaque it´ eration d ≤ k, et pour chaque diagonale i,

trouver la case la plus ´ eloign´ ee sur la diagonale i contenant la valeur d.

• Le chemin-d extr´ emal ` a la diagonale i est d´ eduit ` a partir des chemin-(d-1) extr´ emaux aux diagonales (i − 1), i et (i + 1).

• Un chemin-d se terminant ` a la ligne m sp´ ecifie une occurrence de P dans T contenant d erreurs.

17

(29)

D´ etails:

• Pour d = 0, le chemin-0 extr´ emal ` a une diagonale i est

d´ etermin´ e par le plus long facteur commun entre P et T [i..n].

• Pour d > 0, le chemin-d extr´ emal ` a la diagonale i est obtenu ` a partir des trois chemins suivants:

– C 1 : Chemin-(d-1) extr´ emal ` a la diagonale (i + 1), suivi d’une suppression (arc vertical), suivi de l’extension maximale sur la diagonale i (plus long facteur commun entre P et T )

C1 i−1 i i+1

P

T

d−1

18

(30)

– C 2 : Chemin-(d-1) extr´ emal ` a la diagonale i, suivi d’une

substitution, suivi de la plus longue extension ` a la diagonale i.

i−1 i i+1

P

C2 T

d−1

19

(31)

– C 3 : Chemin-(d-1) extr´ emal ` a la diagonale (i − 1), suivi d’une insertion (arc horizontal), suivi d’une extension maximale sur la diagonale i.

i−1 i i+1

P

T C3

d−1

Th´ eor` eme: Le chemin-d extr´ emal ` a la diagonale i est celui des trois chemins C 1 , C 2 ou C 3 qui atteind la case la plus

´ eloign´ ee ` a la diagonale i.

20

(32)

Algorithme hybride:

d = 0;

Pour i = 1 ` a m + 1 faire

Trouver le plus long pr´ efixe commun entre P [1..m] et T [i..n]. Sp´ ecifie la derni` ere case du chemin-0 extr´ emal

`

a la diagonale i − 1.

Pour d = 1 ` a k faire

Pour i = −m ` a n faire

Trouver les cases terminales des chemins-d C

1

, C

2

et C

3

. Le chemin-d extr´ emal est l’un des trois chemins

pr´ ec´ edent qui atteint la case la plus ´ eloign´ ee.

Pour j = 1 ` a n

Si D(m, j) ≤ k, alors il existe une occurrence de P dans T se terminant ` a la position j. Pour retrouver

l’alignement, suivre les pointeurs jusqu’` a la ligne 0.

21

(33)

Complexit´ e:

• En espace: Pour chaque d, 0 ≤ d ≤ k et chaque diagonale i,

−m ≤ i ≤ n, conserver une case (+ un pointeur).

= ⇒ O(k(m + n)) ou O(kn)

• En temps: Pour chaque d et chaque i, retrouver la plus longue extension le long de la diagonale i. Correspond ` a retrouver un pr´ efixe commun entre un suffixe de P et un suffixe de T ,

commen¸ cant ` a des positions connues. Peut se faire en temps constant en utilisant l’arbre des suffixes.

Il suffit de construire l’arbre des suffixes pour P

= ⇒ O(m + kn) = O(kn)

22

Références

Documents relatifs

imprime toutes les lignes contenant le mot analyse suivi du mot lexical dans tous les fichiers de suffixe .tex. (L’option -i

Construire le lieu g´eom´etrique des points d’o` u l’on voit le segment [AB] sous un angle de 90 ◦ et celui d’o` u l’on voit le segment [AB ] sous un angle de 30 ◦ ...

Indiquer en montrant le calcul la moyenne de cette s´erie.. Indiquer la m´ediane de cette s´erie en indiquant

[r]

Ecrire en Java la gestion d’un tas, repr´esent´e par un tableau : cr´eer, ins´erer, minimum, supprimer (le minimum), modifier une valeur.. Vous programmerez ceci en TP, et

Soit elle n’est pas chez elle, soit elle ne r´ epond pas au t´ el´ ephone. Mais si elle n’est pas chez elle, alors, elle a ´ et´ e kidnapp´ ee. Et si elle ne r´ epond pas au

Soit Pierre aime Marie, soit Marie aime Pierre. Mais si Marie n’aime pas Pierre, alors Pierre n’est pas content. Une fois Pierre n’est pas content, il n’aime pas Marie. Donc Pierre

tail pointe vers le dernier ´el´ement de la liste Le dernier ´el´ement poss`ede un pointeur x.next vide (not´e NIL) Doublement li´ee : Le premier ´el´ement poss`ede un pointeur