Curs 8. Metode euristice de aliniere Biblio: Cap 2. din Biological sequence analysis, Durbin et al cap. 9 din An introduction to Bioinformatics algorithms, N.Jones, P. Pevzner
Metode euristice de aliniere Motivatie Metode simple de identificare a sabloanelor Metode bazate pe arbori de cuvinte cheie si arbori de sufixe Metode euristice traditionale: BLAST, FASTA
Motivatie Algoritmii de aliniere globala (Needleman-Wunsch) si locala (Smith- Waterman) sunt costisitori in cazul secventelor lungi (ordinul de complexitate este O(mn) pentru secvente avand lungimile m respectiv n) Pentru cautarea unei secvente intr-o baza de secvente se prefera metode euristice (sub-optimale) care permit identificarea rapida a secventelor similare Metodele euristice se bazeaza pe ideea identificarii unor potriviri scurte dar semnificative (sabloane care se gasesc in secventa) si construirea alinierii prin extinderea acestor potriviri Identificarea potrivirilor scurte se bazeaza pe: Algoritmi de cautare in siruri de caractere Structuri de date pentru eficientizarea a cautarii
Cautarea unui sablon intr-o secventa Problema: determina toate ocurentele unui sablon p 1 p 2 p m intr-o secventa (text) t 1 t 2 t n Algoritm bazat pe metoda fortei brute: pentru fiecare i de la 1 la n-m+1 se compara p[1..m] cu t[i..i+m-1] iar daca se gaseste o nepotrivire atunci se mareste i cu 1 si se reia cautarea Exemplu: Secventa: CGCATC Sablon: GCAT
Cautarea unui sablon intr-o secventa Cautare_simpla(t[1..n],p[1..m]) k:=0 FOR i:=1,n-m+1 DO d:=false j:=i WHILE d=false AND j<=i+m-1 DO IF t[j]<>p[j-i+1] THEN d:= True ELSE j:=j+1 IF d=false THEN k:=k+1; rez[k]:=i RETURN -1 Analiza eficientei Dimensiunea pb: (n,m) Operatia dominanta: comparatia Cazul cel mai defavorabil: t: AAAAAAAAAAAAG p: AAG (n-m)*m comparatii Ordin de complexitate: O(n*m)
Cautarea unui sablon intr-o secventa Variante mai eficiente: Idee: cresterea pasului de deplasare la mai mult de o pozitie astfel incat sa nu fie pierduta nici o ocurenta Tehnica: se preproceseaza sablonul pentru a extrage informatii din el; se stocheaza aceste informatii si se folosesc in procesul de cautare. Exemple: Algorithm Boyer-Moore. Efficienta: O(n+m) Algorithm Knuth-Morris-Pratt. Efficienta: O(n+m)
Cautarea unui sablon intr-o secventa Algoritm Horspool: Varianta mai simpla dar nu la fel de eficienta a algoritmului Boyer-Moore Analizeaza daca caracterul din text Idee de baza: aliniat cu ultimul caracter al sablonului apare sau nu in EXTENSION OF EXTERNAL primele m-1 pozitii ale sablonului: EXTERN EXTERN EXTERN EXTERN Daca nu apare atunci se deplaseaza sablonul cu m pozitii la dreapta Daca prima aparitie de la dreapta la stanga este pe pozitia k a sablonului atunci se deplaseaza sablonul cu m-k pozitii catre dreapta (astfel ca elementele sa identice sa fie aliniate)
Cautarea unui sablon intr-o secventa t: p: Algoritm Horspool: calculul valorilor cu care se face deplasarea Obs: consideram ca indicii pornesc de la 0 0 i i+k i+m-1 n 0 k m-1 Text Sablon Valorile de deplasare sunt calculate o data pentru toate caracterele posibile din text (ex: toate elementele alfabetului) shift(c )= m daca c nu apare in p[0..m-2] m-k-1 daca c=p[k] (prima aparitie a lui of c in p[0..m-2] - de la dreapta la stanga)
Cautarea unui sablon intr-o secventa Algoritm Horspool: calculul valorilor deplasarilor shift(c )= m daca c nu e prezent in p[0..m-2] m-k-1 daca c=p[k] Shift_computation(p[0..m-1]) FOR all c in alphabet DO shift[c]:=m FOR k:=0,m-2 DO shift[p[k]]:=m-k-1 RETURN shift[alphabet]
Cautarea unui sablon intr-o secventa Horspool_search(t[0..n-1],p[0..m-1]) Calcul tabel deplasari shift[alphabet]:=shift_computation(p[0..m-1]) i:=0 Alinierea sablonului la inceputul textului WHILE i<=n-m-1 DO d:=false; j:=i+m-1; WHILE d=false AND j>=i DO IF t[j]<>p[j-i] THEN d:=true ELSE j:=j-1 IF d=false THEN Salveaza i i:=i+shift[t[i+m-1]] RETURN -1 Comparare sablon cu text pornind de la dreapta la stanga si oprire la prima potrivire Fara nepotrivire => s-a identificat o ocurenta Deplaseaza sablonul conform cu shift[t[i+m-1]]
Cautarea unui sablon intr-o secventa Algoritm Knuth-Morris-Pratt: rafineaza calculul deplasarii analizand structura sablonului Subsiruri identice 0 s. k (k+1). m-1 0 i i+s. i+k i+(k+1). i+m-1. n 0 k-s k-s+1. m-1 Elemente diferite Se cauta cea mai mare deplasare care nu conduce la pierderea nici unei ocurente shift(k) = min{s>0 p[s..k]=p[0..k-s]}
Cautarea unui sablon intr-o secventa KMP(t[0..n-1],p[0..m-1]) shift[-1..m-2]:=shift_computation(p[0..m-1]) i:=0 Index in text j:=0 Index in sablon WHILE i<=n-m-1 DO WHILE t[i+j]=p[j] AND j<m DO j:=j+1 IF j=m THEN Salveaza i ; i:=i+shift[j-1] Deplasare sablon j:=max{j-shift[j-1],0} RETURN -1 Calcul deplasari Comparare t[i..i+m-1] si p[0..m-1] de la stanga la dreapta Se ignora elementele sablonului care au fost deja comparate
Cautarea unui sablon intr-o secventa Alte variante: construirea unor structuri de date ajutatoare: Arbori de cuvinte cheie Propusi in 1975 de Aho si Corasick in contexul cautarii simultane a mai multor sabloane (cuvinte cheie) Arbori de sufixe = arbori de cuvinte cheie compactati Se folosesc pentru a preprocesa secventa in care se cauta astfel incat cautarea unui sablon de lungime m sa necesite un timp de ordinul O(m)
Arbori de cuvinte cheie si arbori de sufixe Arbore de cuvinte cheie: - fiecare muchie corespunde unui simbol - muchiile care pleaca din acelasi nod au etichete diferite - fiecare ramura reprezinta un cuvint cheie Arbore de sufixe: - fiecare muchie corespunde unei subsecvente de unul sau mai multe simboluri - fiecare nod intern (eventual cu exceptia radacinii) are cel putin doi fii - fiecare ramura contine un sufix al secventei de analizat Exemplu: se considera secventa 1: ATCATG si sufixele acesteia 2: TCATG, 3: CATG, 4: ATG, 5:TG, 6:G
Arbori de cuvinte cheie si arbori de sufixe Determinarea arborelui de sufixe poate fi mai eficienta decat determinarea arborelui de cuvinte cheie ATCATG TCATG CATG ATG TG G patratic Arbore de cuvinte cheie liniar (algoritmul Weiner) Arbore de sufixe
Arbori de sufixe Arborele de sufixe stocheaza toate sufixele unui text i.e., ATCGC: ATCGC, TCGC, CGC, GC, C Se poate construi in O(n) pentru un text de lungime n Pentru a gasi un sablon de lungime m in text se parcurg etapele: Se construieste arborele de sufixe pentru text Se scaneaza sablonul prin arborele de sufixe Se poate gasi sablonul in text in O(m) Complexitate totala: O(n + m)
Arbori de sufixe Exemplu
Metode euristice pentru aliniere Ideea de baza a metodelor euristice de aliniere este cea a filtrarii: Se porneste de la premiza ca alinierile contin portiuni scurte de potriviri exacte, asa ca se cauta astfel de potriviri exacte si se folosesc ca punct de start pentru le extinde. Lungimea potrivirilor exacte cautate depinde de tipul de secventa (mai scurte la secvente de aminoacizi si mai lungi la secvente de nucleotide) si de algoritmul folosit Extinderea potrivirilor exacte se bazeaza pe calcularea unor scoruri si a unui prag de acceptare care de asemenea depind de varianta de algoritm
Metode euristice: matrici de puncte Matrici de puncte: permit ilustrarea similaritatii intre doua secvente Algoritmii de tip FASTA genereaza o matrice de puncte implicita pornind de la potriviri exacte si incearca sa extinda diagonala de puncte cat timp numarul de nepotriviri nu este prea mare.
Metode euristice: matrici de puncte Se identifica diagonalele avand lungimea mai mare decat un anumit prag Diagonalele continue (fara intreruperi) indica potriviri exacte
Metode euristice: matrici de puncte Se extind diagonalele si se incearca conectarea lor acceptandu-se un numar mic de nepotriviri/insertii/stergeri Concatenarea diagonalelor exprima potriviri aproximative de-a lungul unor subsiruri mai lungi
Metode euristice: matrici de puncte Potrivire aproximativa a sabloanelor Input: Un sablon p = p 1 p m, un text t = t 1 t n, si k, numarul maxim de nepotriviri Output: Toate pozitiile 1 < i < (n m + 1) cu proprietatea ca t i t i+m-1 si p 1 p m au cel mult k nepotriviri (i.e., distanta Hamming dintre t i t i+m-1 and p < k)
Metode euristice: algoritmul FASTA FASTA = Fast Alignment (Lipman & Pearson,1985) Caracteristici: A fost primul instrument de cautare in bazele de secvente Foloseste o strategie de hashing pentru a gasi potriviri cu secvente scurte de cate k simboluri (k=2 pentru secvente de aminoacizi si k=6 pentru secvente de nucleotide); o astfel de secventa este numita k-tuplu Download: www.ebi.ac.uk/fasta33/
Metode euristice: FASTA Etape Etapa1: identifica k-tuplurile comune secventei de interogare si bazei de date Etapa 2: pentru fiecare pereche de k-tupluri calculeaza diferenta dintre pozitiile de start in fiecare dintre cele doua secvente (deplasament); perechile de k-tupluri avand acelasi deplasament corespund aceleiasi diagonale in matricea de puncte Etapa 3: identifica regiunile cu similaritate mare: Calculeaza scorurile diagonalelor Uneste segmentele de scor mare de pe aceeasi diagonala Uneste segmentele de pe diagonale invecinate Rafineaza alinierea folosind algoritmul Smith- Waterman
Metode euristice: FASTA Etapa 4. Analiza statistica a similaritatii. Se calculeaza: Statistica E (E-value) Statistica Z (Z-score) Masoara abaterea fata de scorul mediu al unei cautari Scorul mediu corespunde interogarilor care conduc la secvente necorelate cu cea de interogare Potrivirea este considerata cu atat mai semnificativa cu cat scorul este mai mare Exemple de interpretare a statisticii Z: Z>15 - potrivire foarte semnificativa 5<=Z<=15 potrivire destul de semnificativa Z<5 potrivire putin plauzibila
Metode euristice: BLAST Basic Local Alignment Search Tool [Altschul, Gish, Lipman, Miller, Myers (1990)] http://www.ncbi.nlm.nih.gov/blast/blast.cgi Varianta initiala: Identifica segmente fara gap- uri (cu scor mare de similaritate ) Se bazeaza pe o analiza statistica a similaritatii dintre segmente care permite discriminarea intre secventele cu adevarat similare si cele similare din intamplare Foloseste o matrice de scor clasica (ex: PAM250 sau BLOSUM62)
Metode euristice: BLAST Etape: Etapa 1: Creaza o lista cu cuvinte din secventa de interogare (un cuvant contine cca 3 simboluri in cazul secventelor de aminoacizi si 11 in cazul secventelor de nucleotide) Etapa 2: Se cauta aceste cuvinte in baza de date; potrivirea cuvintelor se calculeaza folosind o matrice de scor; cuvantul se considera identificat daca scorul corespunzator depaseste un prag (nu e necesara potrivire exacta) Etapa 3: Se extind potrivirile de la nivelul cuvintelor pana cand scorul devine mai mic decat un prag; perechile astfel obtinute sunt ordonate dupa scor si pentru fiecare se estimeaza semnificatia statistica a similaritatii.
Metode euristice: BLAST Cuvant cheie din interogare Query: KRHRKVLRDNIQGITKPAIRRLARRGGVKRISGLIYEETRGVLKIFLENVIRD Scor de similaritate (T = 13) extindere GVK 18 GAK 16 GIK 16 GGK 14 GLK 13 GNK 12 GRK 11 GEK 11 GDK 11 Cuvinte similare (invecinate) Query: 22 VLRDNIQGITKPAIRRLARRGGVKRISGLIYEETRGVLK 60 +++DN +G + IR L G+K I+ L+ E+ RG++K Sbjct: 226 IIKDNGRGFSGKQIRNLNYGIGLKVIADLV-EKHRGIIK 263 Perechea de scor maxim (High-scoring Pair - HSP)
BLAST A C G A A G T A A G G T C C A G T w = 4 Cuvantul cu care se potriveste exact GGTC Se extind diagonalele pana cand scorul de potrivire devine mai mic decat 50% din scorul potrivirii initiale sau cand scorul incepe sa descreasca Rezultat GTAAGGTCC GTTAGGTCC C T G A T C C T G G A T T G C G A From lectures by Serafim Batzoglou (Stanford)
BLAST Analiza statistica a potrivirii Scop: stabileste daca potrivirea este determinata de existenta unei similaritati reale intre secventa de interogare si cea din baza de date sau este doar intamplatoare Instrument: test statistic Ipoteza nula: cele doua secvente sunt independente P j k = p j p ' (, ) k Probabilitatea ca simbolul k sa apara in a doua secventa Probabilitatea ca simbolul j sa fie aliniat cu simbolul k Probabilitatea ca simbolul j sa apara in prima secventa
BLAST Statistica testului. Fie S(j,k) scorul substituirii lui j cu k Scorul corespunzator pozitiei i din cele doua secvente este suma scorurilor asociate perechilor de elemente pana la pozitia i inclusiv. Evolutia scorului in functie de i poate fi descrisa printrun proces de tip mers aleator (random walk) Exemplu: GGTGTAGA GACCTAGA Fiecare potrivire este recompensata cu 1; fiecare nepotrivire este penalizata cu 1 Y3=4 Y1=1 Y2=0
BLAST Statistica testului. Yi reprezinta inaltimea maxima dintre doua puncte de descrestere (i si i+1) un punct este considerat de descrestere daca atinge un nivel mai mic decat cele atinse pana in momentul respectiv (pct rosu pe grafic) Statistica testului este Y max = max{y1,y2, } Y1=1 Y3=4 Y2=0
BLAST Statistica testului. Daca ipoteza nula este adevarata atunci Y max are repartitia P( Y j, k max p j p y) Kmne ' k e λs ( j, k ) Observatii: S(j,k) este scorul potrivirii dintre elementele de pe pozitiile j respectiv k din cele doua secvente m si n sunt lungimile secventelor; K poate fi interpretat ca o masura a similaritatii componenteleor (aminoacizilor); lambda poate fi interpretat ca o scala asociata matricii de scor K si lambda se estimeaza numeric (valorile depind de matricea de scor utilizata S) Daca S e BLOSUM62 atunci estimarile pt K si lambda sunt: K=0.04, lambda=0.254 = 1 λy
BLAST Interpretarea valorilor statistice furnizate de catre pachetele software care implementeaza algoritmi de tip BLAST: E-value (expectation value): E=mnK exp(-lambda y) masoara numarul de potriviri cu scor mai mare decat y care s-ar obtine in cazul unor secvente necorelate (din intamplare) Interpretare: Daca E<10-50 secventele sunt probabil identice Daca 10-50 <E<0.01 atunci secventele sunt semnificativ corelate Daca 0.01<E<10 atunci potrivirea este nerelevanta insa poate sugera o inrudire indepartata Daca E>10 secventele sunt probabil necorelate Obs: E-valoarea este influentata de dimensiunea bazei de date Pt. a evita acest lucru se foloseste si un alt indicator: bit score
BLAST Interpretarea valorilor statistice furnizate de catre pachetele software care implementeaza algoritmi de tip BLAST: Bit-score: este o varianta normalizata a masurii similaritatii dintre secvente S =(lambda*s-log K)/log 2 unde S este scorul clasic de similaritate iar lambda si K sunt ca in definitia de la E-valoare Interpretare: cu cat S este mai mare cu atat este mai semnificativa potrivirea
BLAST Variante de implementare blastn: Nucleotide-nucleotide blastp: Protein-protein blastx: Translated query vs. protein database tblastn: Protein query vs. translated database tblastx: Translated query vs. translated database (6 frames each) PSI-BLAST determina membrii unei familii de proteine sau construieste o matrice specifica de scor. Megablast: - cauta dupa secvente mai lungi, cu putine diferente WU-BLAST: (Wash U BLAST) varianta optimizata