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