Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
(ESEMPIO
s= ATG CCA GAC GTG CTG AGc
t= ATG AAA AAA GTC CCA GAT GAG GGA TGG CAG
posizione 1 2 3 4 5 6 7 8 9 10
in questo caso la ktup ATG si trova in entrambe le sequenze alla posizione 1 e quindi su un grafico a matrice
risulterebbe essere uguale ad una diagonale-‐trattino sulla diagonale principale.
Se invece prendiamo in considerazione la ktup CCA, nella sequenza s si torva alla posizione i= 2 mentre
nella sequenza t alla posizione j=5 e quindi nel grafico a matrice risulterebbe come una diagonale spostata
da quella principale di i-‐j=-‐3, nel punto di coordinate i=2 e J=5).
Per le proteine si usano delle ktup di lunghezza = 2 mentre per gli acidi nucleici si usano ktup di 2-‐4-‐6
nucleotidi. Questo perché? Perché a due amminoacidi di fila corrisponde già una sequenza di 6 nucleotidi
2
condivisa = è già una bella similarità. Inoltre, con 20 amminoacidi e ktup=2 si possono ottenere 20 = 400
4
combinazioni possibili (dette parole) mentre con 4 basi e ktup=6 si ottengono 4 = 4096 parole (se si
utilizzassero ktup =2 si otterrebbero solo 16 combinazioni possibili, ecco perché per gli acidi nucleici si
usano ktup di 4 o 6).
Proviamo a ragionare un attimo prendendo un esempio semplice che non è applicabile ma almento ci
permette di fare due conti.
Consideriamo di avere due sequenze di aa di cui una sarà la query (di cui voglio trovare la similarità) e
l’altra sarà la subject (che sarà una delle tante sequenze pescate dalla banca dati) – questo ragionamento
andrà poi fatto per ogni sequenza della banca dati a cui voglio confrontare la mia query – .
-‐ Query: sequenza che si vuole usare per la ricerca;
-‐ Subject: una delle sequenze della BD considerata.
Nell’immagine s = query e t = subject.
Supponiamo di fare questa ricerca con delle ktup lunghe 1 (ecco perché è un esempio non è applicabile
nella realtà ma è solo un esempio per capire bene il concetto), che cosa fa il programma? (il metodo è
molto ma molto molto molto più complicato di come ci verrà presentato).
L’algoritmo legge la sequenza query una lettera per volta (visto che la ktup abbiamo detto essere uguale a
1) e genera delle parole, tante quante sarà lunga la sequenza query, visto che viene letta una lettera alla
volta.
Dopodiché la stessa cosa viene
fatta sulla subject: con la stessa
ktup=1 l’algoritmo va a leggere
la sequenza subject e va a
generare tante parole quant’è la
lunghezza della subject, visto che
la ktup=1.
Alla fine ottengo due mazzetti di
parole. Abaimo detto ch ele due
sequenze forse sono simili se
condividono almeno qualche
parola.
Arrivati a sto punto l’algoritmo
va a scrivere quante volte e in
che posizione compare ogni parola della mia query e della subject. Ogni volta che trovo una parola della
query che è presente anche nella subject me la segno e ne segno anche la posizione, così so già di quanto
devo spostare le sequenze per arrivare ad allinearle.
Nell’immagine, sotto la “s” sono messe in ordine alfabetico tutte le parole lunghe 1 lettera trovate nella
query e di fianco ne è annotata la posizione. Incolonnate sotto la “t”, invece, ci sono solo quelle parole che
sono presenti anche in s.
Le uniche ktup di s presenti anche in t sono A, I,Q e V.
Nella sequenza s ho tre A, in posizioni 2, 6 e 7: con tre A inizio a pensare che sarebbe utile provare ad
allinearle tutte e tre con la sequenza t, o comunque cercare di allinearne il maggior numero possibile. Di
quanto ci si deve spostare per mettere la prima A di s sotto la prima A di t? ci si dovrà spostare di 4-‐2=2. Se
si vuole allineare invece la I di s con la I di t ci si dovrà spostare di 7-‐9= -‐2, e così via. Se faccio questo ultimo
spostamento, ovvero se sposto la t di 2 verso dx e allineo così le due I, mi si è allineato anche qualcos’altro?
Per scoprirlo bisognerebbe costruirsi tutti gli spostamenti e vedere quante volte uno spostamento ricorre.
Ad esempio si scoprirebbe che anche la terza A di s e la terza A di t differiscono, per posizione, di -‐2 se
sposto t di 2 verso dx ottengo un doppio allineamento, sia tra I che tra le A.
Quindi, per fare prima bisogna calcolarsi tutti gli spostamenti (=le differenze tra le posizioni delle ktup
comuni in s e in t,
non importa se si fa
i-‐j o j-­