Introduzione al Calcolo Scientifico A.A. 2009-2010 - Lab. 11 Si consideri il problema dell allineamento di sequenze di proteine in biologia, legato per esempio all annotamento di genomi Si realizzi con Matlab un dotplot che mostri le identità tra le lettere del nome abbreviato DOROTHYHODGKIN e il nome esteso DOROTHYCROWFOOTHODGKIN di una nota biologa. Si osservi dove compaiono le corrispondenze tra lettere, usando nella rappresentazione delle opportune etichette che permettano di identificare righe e colonne. Si stabilisca la convenzione, valida anche in tutto il seguito, che la stringa più corta determini il numero di righe, mentre la stringa più lunga il numero di colonne della matrice. Si realizzi il dotplot che mostra l identità tra la stringa ABRACADABRACADABRA e se stessa. Si realizzi il dotplot che mostra l identità tra la stringa palindromica MAXISTAYAWAYATSIXAM e se stessa (spesso regioni del DNA hanno sequenze palindromiche che si incrociano tra un filamento e un altro) Si scarichi dalla pagina web della banca dati biologici EXPASY dell Istituto Svizzero di Bioinformatica http://www.expasy.ch/cgi-bin/sprot-search-ful
la sequenza relativa alla ribonucleasi pancreatica di balenottera, cavallo e canguro. A questo scopo, si inserisca il termine di ricerca: pancreatic ribonuclease e si aggiungano alla ricerca di volta in volta i termini (o parte dei termini) specifici del nome dell animale Balaenoptera acutorostrata (Minke whale) Equus caballus (Horse) Macropus rufus (Red kangaroo) Per ciascun link, si scarichi la sequenza in FASTA format (ultimo link della tabella gialla in alto a destra della pagina) e si costruisca la stringa di caratteri corrospondenti eliminando la prima riga di identificazione. Si visualizzi il dotplot della correlazione tra cavallo e balena e tra cavallo e canguro. Che cosa si osserva? Si vuole ora dare un interpretazione di carattere più quantitativo ai dati precedenti, utilizzando per l allineamento di sequenze un algoritmo di programmazione dinamica. Si considerino per iniziare le brevi stringhe seqx= TTCATA e seqy= TGCTCGTA. Si costruisca la matrice S dei punteggi 2
relativi all allineamento di tali sequenze, di dimensione (m,n), con m=length(seqx)+1,n=length(seqy)+1. Si consideri un sistema che assegni un punteggio σ = +5 se i due residui sono uguali, un punteggio σ = 2 se sono diversi e un punteggio γ = 6 se deve essere inserito un gap. Dopo aver posto S(1, 1) = 0, S(i, 1) = iγ, i = 2,..., m S(1, j) = jγ, j = 2,..., n, si usi la seguente legge ricorsiva per generare i restanti punteggi in S: S(i 1, j 1) + σ, S(i, j) = max S(i 1, j) + γ, S(i, j 1) + γ. Si osservi che la matrice viene riempita da sinistra a destra e dall alto al basso. Usando il codice percorso.m (da scaricare alla pagina web del corso), si costruisca l allineamento ottimale. Quanto vale il punteggio dell allineamento ottimale? Si osservi l allineamento delle stringhe generato. 3
Si applichi ora l algoritmo alle coppie delle sequenze cavallobalena e cavallo-canguro. 4
Introduzione al Calcolo Scientifico A.A. 2009-2010 - Lab. 11 - Soluzione Per realizzare il dotplot richiesto, possiamo ad esempio usare il comando pcolor che rappresenta gli elementi di una matrice come colori. Una possibile implementazione è la seguente function dotplot(stringa1,stringa2) m=length(stringa1); n=length(stringa2); A=zeros(m+1,n+1); for i=1:n carattere=stringa2(i); ind=find(stringa1==carattere); A(ind,i)=1; end for i=1:length(stringa1) s1(i)=cellstr(stringa1(i)); end for i=1:length(stringa2) s2(i)=cellstr(stringa2(i)); end 5
pcolor(a); set(gca, XAxisLocation, top, XTickLabel,... s2, XTick,[1:length(stringa2)]+.5); set(gca, YDir, reverse, YTickLabel,... s1, YTick,[1:length(stringa1)]+.5); set(gca, FontSize,7) return Si osservi che il comando pcolor nel suo uso di default rappresenta una matrice esclusa l ultima riga e colonna, quindi la matrice A è stata orlata artificialmente di una riga e una colonna finali. Si osservi inoltre che per specificare sugli assi i caratteri dei due nomi, si è dovuto trasformare ciascuna stringa in un array di cell Matlab con il comando cellstr. Le regioni di corrispondenza tra caratteri delle due stringhe sono mostrate in colore rosso. In particolare, esse sono il nome DOROTHY, e il secondo cognome HODGKIN. Le regioni con una corrispondenza più limitata, come i caratteri OTH di DOR{OTH}Y e di CROWFO{OTH}ODGKIN sono considerabili come rumore di fondo. Nel caso della stringa ABRACADABRACADABRA correlata con se stessa, le ripetizioni compaiono, oltre che nella diagonale 6
principale, anche in diverse diagonali secondarie parallele alla diagonale principale. Nel caso della stringa palindromica, la palindrome viene rivelata come un tratto di corrispondenze perpendicolare alla diagonale principale. Dopo aver scaricato le stringhe dalla pagina web indicata, possiamo procedere con la loro analisi. Osserviamo che la sequenza del cavallo è la più lunga delle tre, seguita da quella della balena e infine dal canguro. La correlazione visiva illustrata dal dotplot mostra che balena e cavallo hanno sequenze più simili che canguro e cavallo. Questo dato può suggerire che balena e cavallo sono più strettamente imparentati che cavallo e canguro, infatti essi sono entrambi mammiferi placentati, mentre il canguro è un marsupiale (ma attenzione a non dedurre conclusioni scorrette da queste semplici considerazioni!). Il dato qualitativo del dotplot verrà ripreso in modo quantitativo nella costruzione della matrice dell allineamento ottimo. Programmazione dinamica per l allineamento di sequenze Un possibile codice che implementa la costruzione della matrice dei punteggi è il codice allinea.m incluso con il materiale di questo laboratorio. Si osservi che la matrice Matscore che assegna la struttura dei punteggi viene costruita in modo generale (per far sì che il codice possa essere utilizzato an- 7
che nell allineamento di proteine). eventualmente caricata da file. Tale matrice può essere Per quanto riguarda le due stringhe TTCATA e TGCTCGTA, l allineamento ottimo calcolato dall algoritmo è il seguente (attenzione: non è detto che ciò sia realmente ciò che accade in natura!) TGCTCGTA T--TCATA dove il simbolo - indica l inserzione di un gap. Il punteggio relativo a tale allineamento è 11: esso corrisponde al valore dell ultimo elemento a destra in basso della matrice S. Si osservi che, in generale, il percorso che dà luogo al punteggio ottimo non è unico: per stabilire un percorso di scelta fra più percorsi possibili, sarebbero necessari ulteriori raffinamenti nella struttura della matrice di assegnazione dei punteggi; tali raffinamenti non sono oggetto di questo laboratorio introduttivo all argomento. Il punteggio relativo all allineamento ottimo tra le sequenze di cavallo e balena (allineamento che qui non riportiamo per brevità) è 395, mentre quello dell allineamento per le sequenze di cavallo e canguro è 263, a conferma delle osservazioni qualitative del dotplot. Nel caso si considerino le stringhe relative ai tre animali, va considerato un array Nomi appropriato, 8
trattandosi di sequenze di aminoacidi. Per ricavarlo, possiamo usare per esempio il comando Nomi=unique(strcat(stringabalena,stringacavallo,... stringacanguro)); Nomi(end+1)= - ; 9