RICERCA DI SIMILARITA’ TRA SEQUENZE Un altro problema comunissimo in bioinformatica è quello della ricerca di similarità tra sequenze. In particolare, data una sequenza query di nucleotidi o di amminoacidi, vogliamo trovare le sequenze più simili ad essa tra tutte le sequenze di un database. Il programma che normalmente si usa per questo scopo è BLAST. Nel corso di Bioinformatica2 dovreste avere già visto l’algoritmo di BLAST (Basic Local Alignment Search Tool, Altschul et al., 1990) e tutti i suoi parametri e dovreste aver provato ad usarlo attraverso il WEB, sul sito NCBI. Noi invece vedremo l’esecuzione di BLAST da linea di comando UNIX e in particolare la possibilità di automatizzare, grazie alla scrittura di appositi programmi Perl, l’esecuzione di tali ricerche e l’analisi dei risultati prodotti dal programma BIOINFO3 - Lezione 36 1 BLAST Supponiamo che sulla macchina UNIX (LINUX) in cui stiamo lavorando sia già stata installata la versione eseguibile da linea di comando del BLAST. Se foste comunque interessati ad installare l’ultima versione sul vostro computer, potete sempre scaricarla dal sito http://www.ncbi.nlm.nih.gov/BLAST/ . Sul sito trovate anche tutte le istruzioni necessarie per l’installazione. Il programma eseguibile che effettua la ricerca di BLAST si chiama blastall e dovrebbe essere installato in una directory presente nel PATH in modo che da qualunque directory il programma sia eseguibile semplicemente scrivendo blastall e non tutto il path completo della directory in cui è stato effettivamente installato. Proviamo a chiedere dove è installato blastall BIOINFO3 - Lezione 36 2 REQUISITI DI BLAST Blastall ha bisogno di almeno due parametri: la sequenza query e il database di sequenze, in cui cercare le sequenze più simili alla query. Per effettuare molto velocemente le ricerche, il programma BLAST non le effettua sul DB originale in formato FASTA, ma in una sua versione “binaria”, preventivamente ottenuta attraverso il programma formatdb (ovviamente fornito anch’esso nel pacchetto di installazione di BLAST). Pre-elaborazione formatdb DB di sequenze in formato “binario” DB di sequenze in formato FASTA blastall sequenza query BIOINFO3 - Lezione 36 Risultato di BLAST 3 FORMATDB Per vedere cos’è e come funziona il programma formatdb, quali parametri richiede, ecc. chiediamone la pagina di manuale UNIX relativa, con il comando “man formatdb” BIOINFO3 - Lezione 36 4 FORMATDB Tipicamente (se il database è un file di sequenze in formato FASTA) i parametri che si usano con formatdb sono: -i filename -p F Il primo è il nome del file di sequenze da formattare ed il secondo è necessario solo se le sequenze del DB sono nucleotidiche BIOINFO3 - Lezione 36 5 FORMATDB Supponete di scrivere il file FASTA con tutte le sequenze EST delle esercitazioni nella vostra directory /local/wwwstud/html/bioinfo3-xx. Proviamo a creare la versione binaria del nostro database (flat-file) di EST Notare i file “binari” creati (.nhr, .nin, .nsq) Notare il file di log creato (formatdb.log) BIOINFO3 - Lezione 36 6 BLASTALL E’ importante che l’utente che eseguirà il blast abbia il diritto di leggere i file binari. Se vogliamo eseguire il blast attraverso un programma cgi, e quindi dall’utente con cui gira il server web httpd, dovremo esser sicuri che tale utente possa leggere i file. Se comunque anche la creazione dei file binari con il formatdb avviene attraverso un programma cgi e quindi è effettuata sempre dall’utente con cui gira httpd, non dovrebbero esserci problemi, sempre che tale utente abbia il permesso di scrivere nella directory. Proviamo a scoprire qualcosa di più su blastall: BIOINFO3 - Lezione 36 7 BLASTALL E ovviamente anche con “man blastall” BIOINFO3 - Lezione 36 8 BLASTALL Anche in questo caso un’esecuzione “tipica” richiede pochi parametri: -p versione-specifica-di-blast -d database -i query La versione specifica di blast da usare (blastn, blastp, blastx,…) dipende dalla nature della sequenza query e delle sequenze del database formattato. Il database sarà il nome originale del database di sequenze in formato FASTA, che dovrà essere stato preventivamente formattato Query è il nome del file contenente la sequenza query Blastall restituisce il risultato della sua elaborazione sullo standard output. Per ottenerlo in un file sarà sufficiente redirezionare lo standard output con il simbolo di > . BIOINFO3 - Lezione 36 9 BLASTALL Supponiamo di aver creato in /local/wwwstud/cgi-bin/bioinfo3-64 un file fasta, chiamato seq, contenente una sequenza query. Tale sequenza potrebbe ad esempio essere stata ricevuta via web: l’utente ha immesso nella form tale sequenza desiderando verificarne le similarità contro il nostro database. Proviamo per curiosità a lanciare il blastall di tale sequenza contro un database non formattato (EST.fas anziché EST-ginseng.fas) Il programma si accorge che il database non è formattato! BIOINFO3 - Lezione 36 10 BLASTALL Proviamo invece a vedere il risultato di un blast correttamente eseguito sul database formattato di sequenze BIOINFO3 - Lezione 36 11 AUTOMATIZZAZIONE DEL BLAST Programma che riceve come argomento una sequenza nucleotidica ed effettua il blast contro il database di EST BIOINFO3 - Lezione 36 12 ESECUZIONE BIOINFO3 - Lezione 36 13 ESECUZIONE BIOINFO3 - Lezione 36 14 ESECUZIONE Una volta terminata l’esecuzione del programma proviamo anche a verificare il file temp creato dal programma stesso. Per poter creare tale file l’utente che esegue il programma deve poter scrivere nella directory (notare come siano perciò stati settati a 777 i diritti per il file “.”, cioè per la directory corrente. Eventualmente, una volta eseguito il blast, il programma potrebbe anche rimuovere il file temp, di cui non ci sarà più bisogno. BIOINFO3 - Lezione 36 15 RIEPILOGO •Ricerca di similarità tra sequenze •Il BLAST da linea di comando •FormatDB •Blastall •Esecuzione da programma BIOINFO3 - Lezione 36 16