Edit distance. v intner RIMDMDMMI wri t ers

Documenti analoghi
Distanza di Edit. Speaker: Antinisca Di Marco Data:

Programmazione dinamica

Algoritmi e strutture di dati 2

Problemi, istanze, soluzioni

A W T V A S A V R T S I A Y T V A A A V R T S I A Y T V A A A V L T S I

Cammini minimi fra tutte le coppie

11.4 Chiusura transitiva

La codifica digitale

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica

ASD Laboratorio 08. Cristian Consonni/Alessio Guerrieri 02/12/2016. Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/ / 14

COME CALCOLARE IL PUNTEGGIO DI UN ALLINEAMENTO? Il problema del calcolo del punteggio di un allineamento può essere considerato in due modi diversi

Tempo e spazio di calcolo (continua)

Alberi binari di ricerca

Programmazione dinamica

4.5 Metodo del simplesso

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Sommario della lezione

Esempio : i numeri di Fibonacci

Possibile applicazione

Algoritmo basato su cancellazione di cicli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Corso di Fondamenti di Informatica. La ricorsione

Motivazione: Come si fa? Matrici simmetriche. Fattorizzazioni di matrici speciali

Programmazione dinamica

Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati

Problema del cammino minimo

Anno 4 Matrice inversa

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

( ) TEORIA DELLE MATRICI. A. Scimone a.s pag 1

1.5 DIVISIONE TRA DUE POLINOMI

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili

2.2 Alberi di supporto di costo ottimo

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Note per la Lezione 7 Ugo Vaccaro

Alberi e alberi binari I Un albero è un caso particolare di grafo

Il problema dello zaino

SISTEMI LINEARI. x y + 2t = 0 2x + y + z t = 0 x z t = 0 ; S 3 : ; S 5x 2y z = 1 4x 7y = 3

a + 2b + c 3d = 0, a + c d = 0 c d

Prodotti scalari e matrici

2.6 Calcolo degli equilibri di Nash

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

FASTA: Lipman & Pearson (1985) BLAST: Altshul (1990) Algoritmi EURISTICI di allineamento

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

La principale modalità di calcolo è l applicazione di funzioni

Esercizi di Algoritmi e Strutture Dati

Introduzione alla programmazione Esercizi risolti

= elemento che compare nella seconda riga e quinta colonna = -4 In generale una matrice A di m righe e n colonne si denota con

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Come si sceglie l algoritmo di allineamento? hanno pezzi di struttura simili? appartengono alla stessa famiglia? svolgono la stessa funzione?

Corso di Matematica per la Chimica

Appunti su Indipendenza Lineare di Vettori

Introduzione al Calcolo Scientifico A.A Lab. 11

Sviluppi e derivate delle funzioni elementari

Pumping lemma per i linguaggi Context-free

Corso di Matematica per la Chimica

Corso di Geometria BIAR, BSIR Esercizi 2: soluzioni

Sistemi di numerazioni e metodi di trasformazione

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP

Tipi di linea. Tipi di Linea - R.Virili 1

I quadrati magici. Ivana Sacchi -

Esercizi C su array e matrici

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Metodo di Gauss-Jordan 1

Esercizi Capitolo 7 - Hash

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I)

Esercitazione n o 3 per il corso di Ricerca Operativa

5. L elasticità dei costi totali rispetto alla quantità, in termini semplificati si scrive come = AC

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up

1 Definizione di sistema lineare omogeneo.

Geometria BIAR Esercizi 2

L INTERFACCIA GRAFICA DI EXCEL

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

1 Alcuni risultati sulle variabili Gaussiane multivariate

COME CALCOLARE LA COMBINAZIONE DI MINIMO COSTO DEI FATTORI

Metodo di Quine- McCluskey

La riduzione a gradini e i sistemi lineari (senza il concetto di rango)

Esercitazioni di Algebra e Geometria

1 Introduzione alle matrici quadrate 2 2 a coefficienti in R.

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Geometria analitica del piano pag 32 Adolfo Scimone

Vettori e geometria analitica in R 3 1 / 25

Tabelle. Verdi A. Bianchi B. Rossi C. 12/02 Trasferta a Milano. Corso in sede. Riunione Ispettori a Milano Riunione in sede.

4.3 Esempio metodo del simplesso

Rappresentazione in complemento a 2: caratteristiche generali

LEZIONE 4. { x + y + z = 1 x y + 2z = 3

PARTE III MACCHINE A REGISTRI

Codice Gray. (versione Marzo 2007)

Metodi per la risoluzione di sistemi lineari

Informatica Generale Homework di Recupero 2016

Forme bilineari simmetriche

Minimo albero di copertura

INTRODUZIONE ALLA TEORIA DEI GIOCHI

età (anni) manutenzione (keuro) ricavato (keuro)

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Concetti fondamentali

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Transcript:

L'allineamento

Edit distance Le operazioni permesse sono: I: insert (inserimento, inserzione) D: delete (cancellazione, delezione, rimozione) R: replacement (substition, sostituzione) M: match (corrispondenza, accoppiamento, uguaglianza) v intner RIMDMDMMI wri t ers

Edit transcript Definizione Una stringa su un alfabeto {I,D,R,M} che descrive una trasformazione da una stringa ad un'altra e' detta edit transcript (trascrizione) delle due stringhe. Date due stringhe A e B, sia T la trascrizione da A a B. Se in T sostituiamo le I con D e contemporaneamente le D con le I otteniamo una trascrizione T' da B ad A.

Esempio di commutatività v intner RIMDMDMMI wri t ers RDMIMIMMD v intner

Edit distance Definizione La edit distance fra due stringhe e' definita come il minimo numero di operazione di edit (inserzioni, delezioni e sostituzioni) necessarie a trasformare una stringa nell'altra. NOTA BENE: i match non sono contati! La edit distance e' conosciuta anche come Levenshtein distance

Edit distance problem L'edit distance problem e' computare la edit distance fra due stringhe date, in modo che l'edit transcript sia ottimale Traduzione: trovare il trascritto che minimizza la distanza. Molto spesso si usa come sinonimo problema dell'allineamento

Il problema dell'allineamento Definizione Un allineamento (globale) di due stringhe S1 e S2 è ottenuto inserendo spazi (o linee) all'interno o agli estremi di S1 e S2, così da poter posizione le due stringhe una di sopra all'altra in modo che ogni carattere o spazio delle due stringhe è allineato con un'unico carattere o un'unico spazio nell'altra stringa qac-dbd qawx-b-

Edit trascript vs Allineamento Descrivano una relazione fra due stringhe Matematicamente sono equivalenti (possono essere convertiti da uno all'altro) Un edit trascript descrive come trasformare una stringa in un'altra mentre l'allineamento mostra solo le relazioni

Edit trascript vs Allineamento Si può passa da un edit trascript ad un allineamento e viceversa Due caratteri contrapposti che non coincidono in un'allineamento corrispondono ad una sostituzione Uno spazio contenuto nella prima stringa da allineare coincide con un inserimento per la prima stringa Uno spazio contenuto nella seconda stringa da allineare coincide con una delezione per la prima stringa

Calcolo della Edit Distance Definizione Date due stringhe S1 e S2, definiamo D(i,j) come l'edit distance delle stringe S1[1..i] e S2[1..j] Se S1 =n e S2 =m, D(n,m) è il minimo numero di operazioni di edit per trasformare S1 in S2.

Funzione D D è definita come segue: D(i,0) = i 0 i n D(0,j) = j 0 j m per i e j maggiori contemporanemanete di 0: D(i,j) = min { D(i-1,j) + 1, D(i,j-1) + 1, D(i-1,j-1) + t(i,j) } t(i,j) = 0 se S1[i] = S2[j] t(i,j) = 1 se S1[i] S2[j]

Soluzione ricorsiva 1 function D(i, j) 2 if (i = 0) return j; 3 if (j = 0) return i; 4 if (S1[i] = S2[j]) then t := 0; else t := 1; 5 return min( D(i-1, j) + 1, 6 D(i, j-1) + 1, 7 D(i-1, j-1) + t ); 8 EditDistance = D(n, m);

Correttezza della funzione D Lemma Il valore di D(i,j) può essere D(i,j-1)+1, D(i- 1,j)+1 oppure D(i-1,j-1)+t(i,j). Non ci sono altre possibilità Lemma D(i,j) min{d(i-1,j)+1, D(i,j-1)+1, D(i-1,j-1)+t(i,j)} Teorema Quando i e j sono strettamente positivi D(i,j) = min{d(i-1,j)+1, D(i,j-1)+1, D(i-1,j-1)+t(i,j)}

Complessità Un simile programma è altamente inefficiente e richiede un numero esponenziale sulle lunghezze di S1 e S2 di chiamate alla funzione D gli stessi valori di D(i,j) vengono calcolati più volte E' una strategia top-down

Osservazioni Esistono solo (n+1)(m+1) possibili combinazioni per i e j, quindi esistono al massimo (n+1)(m+1) possibili chiamate ricorsive Possiamo salvare questi valori in un matrice Invece di partire dall'allineamento totale possiamo cominciare con i casi basi ed estendere le lunghezze delle stringhe SOLUZIONE: programmazione dinamica

Programmazione dinamica Consiste nel risolvere un'istanza di un problema usando le informazioni precalcolate su istanze più piccole. Prese due sequenze S1 e S2, invece di determinare la soluzione per le due stringhe nella loro interezza, costruiremo la soluzione determinando le similarità fra i possibili prefissi delle due sequenze E' una strategia bottom-up

Programmazione dinamica Dobbiamo definire: relazione di ricorrenza computazione tabulare traceback La relazione di ricorrenza è D

Computazione tabulare Memorizziamo tutti i valori calcolati da D(i,j) in una tabella (matrice di (n+1) righe per (m+1) colonne) Calcoliamo D(i,j) per valori piccoli di i e j la prima righa (i=0) e la prima colonna (j=0) saranno riempiti con i casi base della ricorsione Procediamo incrementando i e j incrementiamo i e poi calcoliamo D per tutti i possibili j, partendo da zero

Esempio w r i t e r s 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 v 1 1 1 2 3 4 5 6 7 i 2 2 2 2 2 3 4 5 6 n 3 3 3 3 3 3 4 5 6 t 4 4 4 4 4 3 4 5 6 n 5 5 5 5 5 4 4 5 6 e 6 6 6 6 6 5 4 5 6 r 7 7 7 6 7 6 5 4 5

Algoritmo 1 function EditDistance(S1,S2) 2 n := S1 ; 3 m := S2 ; 4 for i := 0 to n do a[i,0] := i; 5 for j := 1 to m do a[0,j] := j; 6 for i := 1 to n do 7 for j := 1 to m do 8 if (S1[i] = S2[j]) then t := 0; else t := 1; 9 a[i,j] := min ( a[i-1,j]+1, a[i,j-1]+1, 10 a[i-1,j-1]+t ); 11 return a[n,m];

Tempo Teorema Utilizzando il metodo della programmazione dinamica possiamo completare una tabella per il calcolo dell'edit distance fra due stringhe di lunghezze n e m in tempo O(nm). Cioé l'edit distance D(n,m) fra due stringhe può essere calcolata in tempo O(nm). Osservazione: non è importante l'ordine con cui vengono calcolate le celle

Traceback Una volta calcolata la edit distance bisogna ricostruire gli edit trascript Bisogna cercare un cammino (minimo) che da (n,m) porti a (0,0) SOLUZIONE: utilizzare dei puntatori durante la costruzione della tabella

Puntatori Ogni volta che calcoliamo la cella (i,j) se D(i,j) = D(i,j-1)+1 allora inseriamo un puntatore da (i,j) a (i,j-1) se D(i,j) = D(i-1,j)+1 allora inseriamo un puntatore da (i,j) a (i-1,j) se D(i,j) = D(i-1,j-1)+t(i,j) allora inseriamo un puntatore da (i,j) a (i-1,j-1) le cella della prima riga e della prima colonna hanno un solo puntatore, le altre celle possono avere da uno a tre puntatori

Esempio w r i t e r s 0 1 2 3 4 5 6 7 0 v 1 i 2 n 3 t 4 n 5 e 6 r 7 0 1 2 3 4 5 6 7 1 1 2 3 4 5 6 7 2 2 2 2 3 4 5 6 3 3 3 3 3 4 5 6 4 4 4 4 3 4 5 6 5 5 5 5 4 4 5 6 6 6 6 6 5 4 5 6 7 7 6 7 6 5 4 5

Interpretazione L'edit transcript si ricostruisce (al contrario) seguendo uno (o tutti) i cammini che da (n,m) portano a (0,0) un puntatore orizzontale (da (i,j) a (i,j-1)) è un inserimento (I) del carattere S2[j] in S1 un puntatore verticale (da (i,j) a (i-1,j)) è la cancellazione (D) del carattere S1[i] da S1 un puntatore diagolale (da (i,j) a (i-1,j-1)) può corrispondere a un match (M) se S1[i]=S2[j] oppure a una sostituzione (R) se S1[i] S2[j]

Algoritmo 1 function EditTranscript(i,j) 2 if (i = 0) and (j=0) then return ''; 3 if ( in a[i,j]) then 4 if S1[i] = S2[j] then T:='M' else T='R'; 5 return EditTranscript(i-1,j-1). 'T'; 6 if ( in a[i,j]) then 7 return EditTranscript(i,j-1). 'I'; 8 if ( in a[i,j]) then 9 return EditTranscript(i-1,j). 'D'; 10 transcript = EditTranscript(n,m);

Interpretazione alternativa Dal punto di vista dell'allineamento di S1 con S2: un puntatore orizzontale è uno spazio inserito in S1 un puntatore verticale è uno spazio inserito in S2 un puntatore diagonale può essere un match o un mismatch

Allineamenti ottimi Esistono 3 allineamenti ottimi (3 percorsi minimi) che portano da (7,7) a (0,0): vintner- v-intner- -vintner- RRRMDMMI RIMDMDMMI IRMDMDMMI writ-ers wri-t-ers wri-t-ers

Tempo e correttezza del traceback Teorema Dopo che la matrice della programmazione dinamica è stata completata con i puntatori, un edit trascript ottimale può essere calcolato in tempo O(n+m) Teorema Tutti i cammini da (n,m) a (0,0) che seguono i puntatori durante la computazione di D(i,j) forniscono un edit transcript minimo rispetto al numero di operazioni di edit. Viceversa, ogni edit transcript ottimale è specificato da un cammino da (n,m) a (0,0)

Operation weights Generalizziamo i costi di una operazione di edit una inserzione o una delezione avrà costo d una sostituzione avrà costo r un match avrà costo e Definizione Si chiama problema della edit distance con operazioni pesate il problema di determinare un edit trascript che trasforma una stringa S1 in una stringa S2 con peso minimo delle operazioni

Operation weights D è ri-definita come segue: D(i,0) = i*d 0 i n D(0,j) = j*d 0 j m per i e j maggiori contemporanemanete di 0: D(i,j) = min { D(i-1,j) + d, D(i,j-1) + d, D(i-1,j-1) + t(i,j) } t(i,j) = e se S1[i] = S2[j] t(i,j) = r se S1[i] S2[j] con d=1, r=0, r=1 otteniamo la funzione standard per l'edit distance

Esempio d=4 r=2 e=1 writ-ers vintner- Un'altro schema molto usato è: d=-2 r=-1 e=+1 ma in questo casi si cerca di massimizzare (score massimo)

Nota Bene Poiché lo scopo della funzione è quello di minimizzare il peso totale e poiché una sostituzione può essere vista come una delezione seguita da un inserimento, per permettere le sostituzioni il loro peso deve essere minore della somma di una cancellazione più un inserimento r < 2 * d

Esempio d=1 e=0 r=3 dna d-na RMM 3 DIMM 2 rna -rna

Algoritmo 1 function OperationWeightEditDistance(S1,S2) 2 n := S1 ; 3 m := S2 ; 4 for i := 0 to n do a[i,0] := i*d; 5 for j := 1 to m do a[0,j] := j*d; 6 for i := 1 to n do 7 for j := 1 to m do 8 if (S1[i] = S2[j]) then t := e; else t := r; 9 a[i,j] := min ( a[i-1,j]+d, a[i,j-1]+d, 10 a[i-1,j-1]+t ); 11 return a[n,m];

Alphabet-weight Edit Distance Un'altra generalizzazione è permettere di avere pesi diversi per una sostituzione a seconda di quale carattere viene rimosso e quale carattere viene aggiunto Ad esempio vorremmo che la sostituzione di una A con una T pesi di più rispetto alla G Similmente, per inserimenti e cancellazioni, vogliamo che a seconda del carattere inserito o cancellato il costo cambi NB: il peso è locale, non influenzato dalla posizione sulle stringhe

Quali sono i pesi migliori? In letteratura esistono diverse versioni per il DNA viene usata la matrice +5/-4 per gli aminoacidi viene usata la BLOSUM62 (sono le matrici usate da Dotter e BLAST) Sono proposti e verificati in modo sperimentale (utilizzandoli)

Come diventa D? (+5/-4) D è ri-definita come segue: D(i,0) = -4*i 0 i n D(0,j) = -4*j 0 j m per i e j maggiori contemporanemanete di 0: D(i,j) = max { D(i-1,j) - 4, D(i,j-1) - 4, D(i-1,j-1) + t(i,j) } t(i,j) = 5 se S1[i] = S2[j] t(i,j) = -4 se S1[i] S2[j] NB: in questo caso si vuole massimizzare

BLOSUM62 A R N D C Q E G H I L K M F P S T W Y V B Z X * A 4-1 -2-2 0-1 -1 0-2 -1-1 -1-1 -2-1 1 0-3 -2 0-2 -1-1 -4 R -1 5 0-2 -3 1 0-2 0-3 -2 2-1 -3-2 -1-1 -3-2 -3-1 0-1 -4 N -2 0 6 1-3 0 0 0 1-3 -3 0-2 -3-2 1 0-4 -2-3 3 0-1 -4 D -2-2 1 6-3 0 2-1 -1-3 -4-1 -3-3 -1 0-1 -4-3 -3 4 1-1 -4 C 0-3 -3-3 9-3 -4-3 -3-1 -1-3 -1-2 -3-1 -1-2 -2-1 -3-3 -1-4 Q -1 1 0 0-3 5 2-2 0-3 -2 1 0-3 -1 0-1 -2-1 -2 0 3-1 -4 E -1 0 0 2-4 2 5-2 0-3 -3 1-2 -3-1 0-1 -3-2 -2 1 4-1 -4 G 0-2 0-1 -3-2 -2 6-2 -4-4 -2-3 -3-2 0-2 -2-3 -3-1 -2-1 -4 H -2 0 1-1 -3 0 0-2 8-3 -3-1 -2-1 -2-1 -2-2 2-3 0 0-1 -4 I -1-3 -3-3 -1-3 -3-4 -3 4 2-3 1 0-3 -2-1 -3-1 3-3 -3-1 -4 L -1-2 -3-4 -1-2 -3-4 -3 2 4-2 2 0-3 -2-1 -2-1 1-4 -3-1 -4 K -1 2 0-1 -3 1 1-2 -1-3 -2 5-1 -3-1 0-1 -3-2 -2 0 1-1 -4 M -1-1 -2-3 -1 0-2 -3-2 1 2-1 5 0-2 -1-1 -1-1 1-3 -1-1 -4 F -2-3 -3-3 -2-3 -3-3 -1 0 0-3 0 6-4 -2-2 1 3-1 -3-3 -1-4 P -1-2 -2-1 -3-1 -1-2 -2-3 -3-1 -2-4 7-1 -1-4 -3-2 -2-1 -1-4 S 1-1 1 0-1 0 0 0-1 -2-2 0-1 -2-1 4 1-3 -2-2 0 0-1 -4 T 0-1 0-1 -1-1 -1-2 -2-1 -1-1 -1-2 -1 1 5-2 -2 0-1 -1-1 -4 W -3-3 -4-4 -2-2 -3-2 -2-3 -2-3 -1 1-4 -3-2 11 2-3 -4-3 -1-4 Y -2-2 -2-3 -2-1 -2-3 2-1 -1-2 -1 3-3 -2-2 2 7-1 -3-2 -1-4 V 0-3 -3-3 -1-2 -2-3 -3 3 1-2 1-1 -2-2 0-3 -1 4-3 -2-1 -4 B -2-1 3 4-3 0 1-1 0-3 -4 0-3 -3-2 0-1 -4-3 -3 4 1-1 -4 Z -1 0 0 1-3 3 4-2 0-3 -3 1-1 -3-1 0-1 -3-2 -2 1 4-1 -4 X -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-4 * -4-4 -4-4 -4-4 -4-4 -4-4 -4-4 -4-4 -4-4 -4-4 -4-4 -4-4 -4 1 function t(i,j) C1 := S1[i]; C2 := S2[j]; COOR := [ 0, 20, 4, 3, 6,... ]; P1 := COOR[ord(C1)]; P2 := COOR[ord(C2)]; return BLOSUM32[P1, P2];

End-space free Un'altra variante assegna peso 0 agli spazi all'inizio e alla fine di un allineamento --cac-dbd ltcabbdb- solo spazi iniziali => la stringa e' suffisso dell'altra solo spazi finali => la stringa e' prefisso di un'altra spazi iniziali e finali => una stringa e' contenuta nell'altra

Gaps Definizione Un gap e' una sequenza massimale di spazi consecutivi di una singola stringa di un allineamento ccattcctaac--a-actccaactta cca-----cacccat-c------tta <gap> <gap>>