Upload
dorotea-albanese
View
220
Download
1
Embed Size (px)
Citation preview
UNIVERSITA’ DI MILANO-BICOCCAUNIVERSITA’ DI MILANO-BICOCCALAUREA MAGISTRALE IN LAUREA MAGISTRALE IN
BIOINFORMATICABIOINFORMATICA
Corso di
BIOINFORMATICA: TECNICHE DI BASE
Prof. Giancarlo Mauri
Lezione 6
Alberi di suffissi
2
Sommario
Ricerca di stringhe
Breve Storia degli Alberi dei Suffissi (ST)
Definizioni
Un esempio
Algoritmo di Ukkonen
Applicazioni degli Alberi dei Suffissi
Bibliografia
3
xyabcxabcxabcdeqfegT
P abcxabcde
Il problema: ricerca di stringhe
Ricerca delle occorrenze di una stringa P (di lunghezza m) all’interno di un testo T (di lunghezza n)
4
xyabcxabcxabcdeqfegT
P abcxabcde
xyabcxabcxabcdeqfeg
Risolvibile in tempo O(n+m) (O(m) per il preprocessing di P e O(n) per la ricerca delle occorrenze di P in T) tramite:
algoritmo di Boyer-Moore algoritmo di Knuth-Morris-Pratt
Il problema: ricerca di stringhe
Ricerca delle occorrenze di una stringa P (di lunghezza m) all’interno di un testo T (di lunghezza n)
5
La soluzione con alberi di suffissi
Si impiega: un tempo O(n) per la costruzione dell’albero dei suffissi (Suffix Tree, ST) di T
un tempo O(m) per la ricerca delle occorrenze di P in T
È possibile costruire il ST per il testo T una sola volta e poi cercare più stringhe P in tempo proporzionale alla lunghezza di ciascuna stringa
6
Breve storia degli alberi dei suffissi
1973: Weiner inventa il primo algoritmo per la costruzione di un albero dei suffissi (Position Tree) in tempo lineare
1976: McCreight inventa un algoritmo più efficiente
1995: Ukkonen introduce un nuovo algoritmo in tempo lineare più semplice dei precedenti
7
Definizione
L’ Albero dei Suffissi per una stringa T di n caratteri è un albero radicato e orientato con n foglie numerate da 1 a n tale che: Ogni nodo interno ha almeno due figli e ogni arco è etichettato con una sottostringa non nulla di T
Due archi uscenti dallo stesso nodo non possono avere etichette che iniziano con lo stesso carattere
Per ogni foglia i, la concatenazione delle etichette relative al percorso dalla radice alla foglia i è il suffisso di T che inizia alla posizione i e cioè T[i,m]
8
T: xabxac
b
x
a
c
c
a
c
ax
x
a
c
bx
ac
c
3
65
2
4
1u
w
b
R
u e w sono nodi interniu e w sono nodi interniL’arco (R,w) ha etichetta xaL’arco (R,w) ha etichetta xaLa string-depth di w è 2La string-depth di w è 2L’etichetta del percorso <R,w,1>è xabxac
L’etichetta del percorso <R,w,1>è xabxacIl percorso con etichetta xabxtermina in mezzo ad un arco
Il percorso con etichetta xabxtermina in mezzo ad un arco
Esempio di albero dei suffissi
9
Proprietà di un ST
L’etichetta di un percorso dalla radice a un nodo è la concatenazione nell’ordine delle sottostringhe che etichettano gli archi che costituiscono il percorso
L’etichetta di percorso di un nodo è l’etichetta del percorso dalla radice a quel nodo
La profondità di un nodo v è il numero di caratteri nell’etichetta di v
Un percorso che termina nel mezzo di un arco (u,v) divide l’etichetta di (u,v) in un punto prestabilito. L’etichetta di questo percorso è l’etichetta di u concatenata con i caratteri sull’arco (u,v) fino al punto di divisione.
10
Ricerca di una stringa mediante un albero dei suffissi
Per cercare le occorrenze di P in T:
Creare l’albero dei suffissi di T in tempo O(n)
Cercare in il percorso etichettato P Se si raggiunge una foglia di prima della fine di P o si incontra sul percorso un carattere non contenuto in P allora non vi sono occorrenze di P in T
Altrimenti tutte le foglie del sottoalbero del percorso avente P come etichetta sono i punti di T in cui vi è un’occorrenza di P in T
11
T: xabxac
P: xa
ax w
b
x
a
c
c
a
c
x
a
c
bx
ac
c
3
65
2
4
1u b
R
Occorrenze alle posizioni 1 e 4Occorrenze alle posizioni 1 e 4
Esempio (1)
12
d?
T: xabxac
P: ad
ax w
b
x
a
c
c
a
c
x
a
c
bx
ac
c
3
65
2
4
1u b
R
Non vi sono occorrenze di P in TNon vi sono occorrenze di P in T
Esempio (2)
13
d?
T: xabxac
P: xacd
ax w
b
x
a
c
c
a
c
x
a
c
bx
ac
c
3
65
2
4
1u b
R
Non vi sono occorrenze di P in TNon vi sono occorrenze di P in T
Esempio (3)
14
La definizione di albero dei suffissi non garantisce l’esistenza di un ST per ogni stringa T
Se un suffisso di T è uguale al prefisso di un altro suffisso di T, tale suffisso non potrà terminare
in una foglia
Basta aggiungere alla fine di T un carattere che non compare mai in T ($ ad esempio)
Soluzione
Carattere di fine stringa ($)
15
Costruisce l’albero dei suffissi implicito per la stringa T
L’albero implicito dei suffissi è ottenuto rimuovendo tutte le occorrenze del carattere di terminazione $ e di conseguenza tutti gli archi che rimangono senza etichetta e tutti i nodi con un solo figlio
Esempio per T=xabxa
ab
a
$a
$
xa
$
$
x
36 5
2
4
1
b
x b x a $
$
Rab
a
ax
ax
3
2
1b
xb x a
R
Algoritmo di Ukkonen
16
Costruisci l’albero I1
Per i che va 1 a m-1
Per j che va da 1 a i+1Trova il punto in cui termina il percorso (dalla radice) etichettato con T[j..i] nell’albero corrente Ii. Se necessario, estendi questo percorso aggiungendo il carattere T(i+1), assicurandoti così che la stringa T[j..i+1] stia nell’albero Ii+1
Algoritmo di Ukkonen naiveF
ase
i+1
Est
ensi
on
e j
NB: Ii è il ST implicito per il prefisso T[1,i]NB: Ii è il ST implicito per il prefisso T[1,i]
Algoritmo di Ukkonen
17
Esempio di estensione
xabxb
axabxb
abxb xb
bxbb
Albero per la stringa axabx
b
a
x
a x
b
x
b
x
a
x
b
x
1
32
4
R
Albero per la stringa axabxb
b
a
x
a x
b
x
b
x
a
x
b
x
1
3 2
4
b
b b
b
5
b
R
Algoritmo di Ukkonen
18
L’algoritmo naïve di Ukkonen genera in tempo O(n3) un ST per un testo T lungo n
È possibile utilizzare alcuni accorgimenti:
Utilizzo di Suffix Links Per ogni nodo interno v con etichetta di percorso x (dove
è una stringa e x un singolo carattere) esiste un nodo s(v) con etichetta di percorso . Un Suffix Link collega v a s(v)). I Suffix Link, semplificando la ricerca dei suffissi durante le fasi dell’algoritmo, consentono di raggiungere un tempo O(n2)
Le etichette di ciascun arco vengono rappresentate come una coppia di indici (u,s) che indicano una sottostringa P[u,s] di P. Questo consente di rappresentare l’albero dei suffissi con un’occupazione di memoria pari a O(n)
Algoritmo di Ukkonen
19
Altri accorgimenti consentono di evitare di considerare più volte gli stessi caratteri della stringa T e di raggiungere quindi il limite O(n).
L’aggiunta del carattere $ di fine stringa e la trasformazione dell’albero dei suffissi implicito
in un albero dei suffissi reale può essere effettuata in tempo O(n)
L’algoritmo di Ukkonen costruisce un albero dei suffissi in tempo O(n)
Algoritmo di Ukkonen
Applicazioni degli alberi Applicazioni degli alberi dei suffissidei suffissi
21
Una volta costruito l’albero dei suffissi di T, la ricerca di unaqualsiasi stringa P di lunghezza n richiede un tempo O(n)
Una volta costruito l’albero dei suffissi di T, la ricerca di unaqualsiasi stringa P di lunghezza n richiede un tempo O(n)
Ricerca esatta di stringhe
Ricerca di stringhe Dato un testo T e un pattern P si vogliono ricercare tutte le occorrenze di P nel testo T
Ricerca di un set di pattern Dato un testo T e un insieme di pattern P={P1,…,Ps} si vogliono ricercare tutte le occorrenze di uno qualsiasi dei pattern Pi nel testo T
22
Ricerca di un set di pattern
Ricerca da librerie di pattern di sequenze di DNA
Sequence-Tagged Sites (STSs) e Expressed Sequence Tags (ESTs) STS: è intuitivamente una sequenza di 200-300 nucleotidi le cui code a dx e sx compaiono una sola volta nell’intero genoma. Pertanto un STS compare una sola volta. Obiettivo originale del HGP (Human Genome Project) era quello di identificare un insieme di STS tale che ogni sottostringa del genoma di lunghezza maggiore o uguale a 100.000 contenesse almeno uno di questi STS
EST: STS che compaiono in geni
Una sequenza di DNA anonima può essere mappata sul genoma ricercando gli STS contenuti in essa
23
[…]
Alberi di Suffissi generalizzati (1)
Ricerca di una stringa in un database di stringhe (ad es. ricerca di una sequenza di DNA in un database di sequenze genomiche)
Ricerca della sottostringa di lunghezza massima comune a due stringhe
Ricerca di DNA contaminato Si costruisce una stringa concatenando le sequenze di DNA che possono aver contaminato la sequenza di DNA sotto analisi
24
Alberi di Suffissi generalizzati (2)
Ricerca di DNA contaminato (continua) Si estende l’approccio basato su ST generalizzati per la ricerca di sottostringhe comuni alle due stringhe di partenza
Si registrano le occorrenze di sottostringhe comuni di lunghezza superiore ad una soglia L. La presenza di queste stringhe nella sequenza in esame può derivare da una contaminazione avvenuta durante la procedura di estrazione e sequenziazione del DNA.
25
Estremamente comuni nell’analisi di DNA, RNA e proteine
“Families of reiterated sequences account for about one third of the human genome” [E. McConkey, 1993]
Complemented palindromesNested complemented palindromesGeni che codificano molecole di RNA che
devono essere prodotte in grandi quantitàRestriction enzyme cutting sitesTandem arrays
Ricerca di sequenze ripetitive
26
Sia l’albero dei suffissi per la stringa S. Se una stringa è un Maximal Repeat in S allora è
l’etichetta del percorso di uno dei nodi di .
Ricerca di Maximal Pair
Un Maximal Repeat in una stringa T è una coppia di sottostringhe identiche e tali che estendendo e in qualsiasi direzione si distruggerebbe la loro
uguaglianza
27
Alberi di Suffissi nella ricerca
Arabidopsis Thaliana (Michigan State Univ., Univ. of Minnesota) Creazione della mappa degli EST del genoma dell’Arabidopsis. ST utilizzati per la ricerca di contaminazioni e per la ricerca di pattern biologicamente significativi
Saccharomyces Cerevisiae (Max-Plank Institute)ST utilizzati per la ricerca di sottostringhe nei database di sequenze
Borrelia Burgdorferi (Brookhaven National Laboratory) Sviluppo di metodi, basati su ST, per il riassemblamento dei frammenti di DNA sequenziati
28
Bibliografia
D. Gusfield. Algorithms on strings, trees, and sequences. Cambridge University Press, 1997
P. Weiner. Linear pattern matching algorithms. Proc. Of the 14th IEEE Symp. On Switching and Automata Theory, 1-11, 1973
E. M. McCreight. A space-economical suffix tree contruction algorithm. J. ACM, 23:262-72, 1976
E. Ukkonen. On-line construction of suffix-trees. Algorithmica, 14:249-60, 1995