Introduzione al Calcolo Scientifico A.A. 2006

Transcript

Introduzione al Calcolo Scientifico A.A. 2006
Introduzione al Calcolo Scientifico A.A. 2006-2007
Progetto nr.4
Svolgere il progetto scrivendo un codice Matlab. Il codice deve essere accompagnato da una breve relazione che illustri il lavoro fatto e dimostri il corretto
funzionamento del software tramite la risoluzione degli esempi suggeriti.
Si considerino le sequenze di amminoacidi relative all’emoglobina dell’uomo e di varie
specie animali contenute nel file globin.dat da scaricare alla pagina web del corso.
1. Si costruisca una matrice di distanze Md di elementi dij fra ciascuna coppia i e j di
sequenze, applicando l’algoritmo di allineamento (dij è il punteggio dell’allineamento
ottimo tra i e j). Si utilizzi a tale scopo la matrice di punteggi Blosum BL62 contenuta
nel file BL62Matrix.m. Tale matrice è una possibile versione della matrice Matscore
usata nel codice allinea.m per l’allineamento di sequenze. Le sue colonne e righe si
riferiscono alle seguenti sigle di amminoacidi
A,R,N,D,C,Q,E,G,H,I,L,K,M,F,P,S,T,W,Y,V
La posizione i, j della matrice BL62 indica il punteggio per lo scambio amminoacido
i con amminoacido j. Si consideri il valore −2 per un gap.
2. Usando la matrice delle distanze Md si costruisca l’albero filogenetico delle sequenze
di emoglobina delle specie considerate usando il seguente algoritmo detto del vicino
più prossimo.
(a) Inizializzazione: sia M = {xi , i = 1, . . . , N } l’insieme dei nodi, uno per ciascuna
sequenza
(b) Iterazione: calcolare la quantità
N
1 X
dik
ri =
N − 2 k=1
e per ciascuna delle N sequenze porre
Dij = dij − (ri + rj ).
Scegliere una coppia 1 ≤ i, j ≤ N per la quale Dij sia mimina (tale coppia può
non essere unica!). Unire xi e xj in un unico nuovo nodo xN +1 e calcolare le
distanze tra xN +1 e xi e tra xN +1 e xj ,
1
dN +1 i = (dij + ri − rj ),
2
1
dN +1 j = (dij + rj − ri ),
2
e le distanze tra xN +1 e xm , m 6= i, j
1
dN +1 m = (dim + djm − dij ).
2
Si ottiene cosı̀ un nuovo insieme M0 = xm , xN +1 , m 6= i, j , dal quale si può
ripartire dal punto 2. Tale processo viene iterato fino a che sono rimaste almeno
tre sequenze
(c) Terminazione:
quando solo due sequenze i e j rimangono, aggiungere il ramo che le collega, di
lunghezza dij
A scopo illustrativo dell’algoritmo, si consideri il seguente esempio:
sia N = 4 e si supponga sia data la seguente matrice delle distanze Md
M d x1 x2 x3
x1 0 8 7
x2 8 0 9
x3 7 9 0
x4 12 14 11
x4
12
14
11
0
a partire dalla quale si calcola la matrice D
D x 1 x2
x3
x4
1
x 0 −21 −20 −20
x2 0
0 −20 −20
x3 0
0
0 −21
il cui elemento minimo è (fra gli altri) D12 = −21. Si uniscono quindi x1 e x2 con il
nuovo nodo x5 che li sostituisce e ha distanze
d51 = 3, d52 = 5,
d53 = 4, d54 = 9.
L’albero filogenetico corrispondente a questo primo passaggio è rappresentato in
Fig. 1, dove sono riportate anche le lunghezze dei rami, rappresentati in scala.
PSfrag replacements
x1
5
x5
3
x2
Figura 1: Costruzione dell’albero filogenetico relativo all’esempio: primo passaggio.
La matrice delle distanze è ora
M d x3 x4 x5
x3 0 4 9
x4 4 0 11
x5 9 11 0
2
dalla quale si calcola
D x 3 x4
x5
3
x 0 −24 −24
x4 0
0 −24
il cui elemento minimo è (fra gli altri) D13 = −24. Si uniscono quindi x3 e x5 con il
nuovo nodo x6 che li sostituisce e ha distanze
d63 = 1,
d64 = 8,
PSfrag replacements
d65 = 3,
L’albero filogenetico corrispondente a questo passaggio è rappresentato in Fig. 2,
dove sono riportate anche le lunghezze dei rami, rappresentati in scala.
x2
5
x5
x6
3
3
1
x3
x1
Figura 2: Costruzione dell’albero filogenetico relativo all’esempio: secondo passaggio.
La nuova matrice delle distanze è
M d x4 x6
x4 0 8
x6 8 0
PSfrag replacements
A questo punto, solo due nodi rimangono: essi vanno connessi e la loro distanza è 8.
L’albero filogenetico finale è rappresentato in Fig. 3, dove sono riportate anche le
lunghezze dei rami, rappresentati in scala.
x4
8
1
3
5
x2
3
x1
x3
Figura 3: Albero filogenetico finale relativo all’esempio.
Si osservi la corrispondenza tra la matrice originale Md e questa rappresentazione.
3. Si tracci, scrivendo un opportuno codice Matlab, una rappresentazione grafica in
scala del risultato ottenuto.
4. Si stimi il costo computazionale dell’algoritmo del vicino più prossimo.
3