Tesi Robotica Analisi, progettazione e implementazione... | Page 64
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 64 — #64
i
64
i
2. APPROCCI ALTERNATIVI
L’algoritmo bio-informatico per l’allineamento di sequenze geniche utilizzato
è il Needleman–Wunsch (N-W) [Needleman and Wunsch, 1970], algoritmo di
programmazione dinamica sviluppato nel 1970 da Saul B. Needleman e Christian
D. Wunsch.
Per comprendere meglio la relazione che c’è fra le sequenze geniche e le righe
delle immagini basta pensare alle due immagini come a una la mutazione (genetica) dell’altra. Pensata la questione in questi termini, i ragionamenti successivi
saranno più chiari e lineari. L’algoritmo ottimizza l’allineamento globale di tutti
i caratteri delle stringhe in accordo ad una funzione di scoring che tiene presente di tutte le possibili mutazioni. In pratica, l’allineamento viene prodotto
attraverso due fasi: Fase1 la matrice (programmazione dinamica) dei punteggi
viene riempita fino all’ultima riga e colonna, Fase2 Backtracking (tracciamento
all’indietro) dal valore più alto dell’ultima colonna/riga fino a ritornare alla cella in prima posizione. Ogni cella della matrice contiene il massimo valore che
può essere raggiunto estendendo i precedenti allineamenti, ad esempio potremmo avere due stringhe di dimensione n e m, il valore che abbiamo nella cella
di indice (i, j) è il massimo valore dell’allineamento che si otterrebbe avendo a
disposizione due sotto stringhe di dimensione i e j. Entrando più nello specifico
se i due caratteri che si trovano rispettivamente in posizione i nella prima riga
e in posizione j nella seconda sono uguali, allora si dice che i due caratteri son
in una situazione di match, se questo non dovesse succedere è necessario esaminare i dintorni della cella (sopra e sinistra o north e west) per capire quale sia
la casella che porta ad avere un allineamento con valore maggiore.
2.2.1
Creazione della matrice dei punteggi
Passiamo ora alla descrizione dell’algoritmo in pseudo-codice per il riempimento
della matrice dei punteggi, una prima versione è disponibile alla consultazione
in Alg:2.1.
In output riceveremo una matrice di dimensioni n ∗ m, dove n e m sono rispettivamente la lunghezza di sequence1 e sequence2. A questo punto le stringhe
vengono analizzate sequenzialmente comparando carattere per carattere. Come
detto prima se i due caratteri sono identici alla casella viene dato un punteggio
equivalente alla casella sulla diagonale (sopra a sinistra) più il valore di match
(stabilito precedentemente con tecniche ben determinate), in caso contrario al
valore della cella sulla diagonale viene aggiunto il valore di mismatch e viene
esaminato il valore di north e west con l’aggiunta del gap, il valore massimo
i
i
i
i