BIOINFO3 - Lezione 37 1 BIOINFO3 - Lezione 37 2 BIOINFO3 - Lezione 37 3 PARSING RISULTATI DI BLAST Nella lezione di ieri abbiamo visto come automatizzare l’esecuzione di BLAST. Oggi proviamo ad analizzare automaticamente i risultati prodotti. Supponiamo quindi in qualche modo di avere a disposizione in una stringa il report prodotto dall’esecuzione di BLAST. La stringa potrebbe essere stata catturata con il comando qx di esecuzione del blast $report=qx{blastall ……}; Oppure se l’output del blastall è stato rediretto su un file (ovviamente anche in un programma eseguito precedentemente), il file potrebbe essere letto ed il suo contenuto assegnato alla stringa qx{blastall …… > file-report}; #anche in un altro programma ………… open (I,”file-report”); while ($riga=<I>){ $report.=$riga; } BIOINFO3 - Lezione 37 4 REPORT DI BLAST Proviamo a vedere come è strutturato dal punto di vista sintattico il report prodotto da BLAST. Bisogna innanzitutto distinguere due casi: 1- Il programma non ha trovato similarità locali significative tra query e database Versione e riferimenti Sequenza query Database Pattern da ricercare BIOINFO3 - Lezione 37 5 REPORT DI BLAST 2- Sono state trovate delle sequenze del database con similarità locali alla query Versione e riferimenti Sequenza query Database Pattern da ricercare Sequenze con E-value (probabilità di allineamento dovuto al caso) minore della soglia predefinita Per ciascun allineamento individuato: dettaglio e parametri BIOINFO3 - Lezione 37 6 ESERCIZIO Provate voi a scrivere il programma che legga il file di risultati di BLAST passato come argomento, cerca il pattern “Sequences producing...” e per gli allineamenti trovati stampi i valori di: GI Length Score E-Value Identities %Identities Gaps (se ci sono) %Gaps (se ci sono) BIOINFO3 - Lezione 37 7 Ecco un programma che individua (se ce ne sono) le sequenze (e i parametri dell’allineamento) del database che danno allineamenti significativi con la query BIOINFO3 - Lezione 37 8 L’array contiene 4 elementi ma il primo verrà scartato Dopo lo shift l’array contiene i 3 allineamenti BIOINFO3 - Lezione 37 9 Stampiamo $s, ovvero tutti i parametri dell’allineamento di una delle sequenze trovate La stessa sequenza ha 2 allineamenti con la query! Però, per semplicità, in questo programma consideriamo solo il primo. BIOINFO3 - Lezione 37 10 Siamo nel primo ciclo BIOINFO3 - Lezione 37 11 FINE ESECUZIONE Facciamo continuare (c) il programma fino alla fine e osserviamo come siano stampati i parametri anche per le altre due sequenze che hanno trovato allineamento In questo programma di esempio non facciamo nulla di particolare con i dati acquisiti, se non stamparli, però potremo ad esempio selezionare le sequenze in base all’e-value o in base alla percentuale di similarità. BIOINFO3 - Lezione 37 12 ESTRAZIONE DELLE SEQUENZE Una volta individuato il codice delle sequenze con similarità alla sequenza query, potrebbe interessarci, per successive elaborazioni, avere a disposizione la sequenza completa di tali sequenze. Un modo per ricavarla, visto che siamo in possesso del codice gi delle sequenze, potrebbe essere quello di scrivere un programma parserizzatore del file FASTA originale del database. Esiste però una possibilità più comoda. Il pacchetto di BLAST offre, tra gli altri, anche un programma che si chiama fastacmd, che fa già tale lavoro. fastacmd –d database –s stringa Il database è quello su cui abbiamo fatto il blast, mentre la stringa fornita è o il codice gi della sequenza o anche il suo accession. Il programma fastacmd restituisce in formato FASTA sullo standard output la sequenza del database individuata da tale codice BIOINFO3 - Lezione 37 13 FASTACMD Unica condizione richiesta per poter eseguire il comando fastacmd è quella di aver formattato il database con l’opzione –o al momento dell’esecuzione del formatdb di quel database di sequenze. BIOINFO3 - Lezione 37 14 FASTACMD Ovviamente il comando fastacmd potrà essere eseguito anche da programma, al pari di tutti gli altri comandi UNIX. Vediamo questo programma che riceve il nome del file di risultati di BLAST ed un numero e stampa (in FASTA) solo le sequenze con e-value inferiore o uguale al numero fornito BIOINFO3 - Lezione 37 15 FASTACMD BIOINFO3 - Lezione 37 16 RIEPILOGO •Parsing risultati di BLAST •FASTACMD BIOINFO3 - Lezione 37 17