IPW2008
Perl e BioinformaticaG.M. Dall'Olio
Cosa é la bioinformatica?
● Scienza che studia come utilizzare la grande quantità di dati prodotti dalla ricerca scientifica.
● Sempre meno costoso fare analisi di massa.
● Approccio scientifico: formulazione di una ipotesi (e.g.: il genoma umano é più lungo di quello di topo), validazione, confronto.
Bioinformatica – casi d'uso
● Sequenziamento genoma umano– CCGACGGTTTAACCGCGGGACCGACCTTTGAGAATATCGGTACTCGCGAGA
CGGATTATCTGTAGAGTGATCGTTGGAATTTGCTCGATAATCCCCCTCTGCTGGTGAACATGGGAAATAACGAGAACCCAAAATGCGTACCAGCTTCGCTCCAATATATAGTGGAGGCGCATCATACAATCCAGATCCTAACGCCCTAAGAGAAGATTGTCAGCCTCGAGTGCAACGATTGAGCGAGAGAGAAGATAGGGCGGTGAAGACTTTCTCTCAGATAATTCTAACCTTAAAACGCGTCTGTTGAATCCAGTCCTATCTTGTTTACATACGCGTGGACGGTATGTTGTCCCTTGCAGCGACAGTGGTGCCTTCCTATGATTCCGTCCTTCTTCCGACTCAAAACGGCCTGTCAATGGCCTATGCGGAAGAGTATTGAGTATTGAACCTACGCGATCCTCAGTGTGGCGTGCGACGTCCTCACCAATGTTAGATAGGAGTGACATTTCGTCTTATGATAATTAATTCAACCAATTACACAGGCCGTAAGAGTTCTAACCGTTTTCTGGACCCCTAGCCAGGTGGTCAGGGGTACGAACTTTTAAAGTGTTCGGCGAATCCCGAACGCCGTTAGTGGCGCACTCAAATTCCCCATCTAGGAGGTTTTCGTGATGTTAATATTTGCGCGAGGATACTTCACCAAGC.......
● 3*10^9 caratteri● Cosa farci? (tante regex)
Bioinformatica – casi d'uso
● Prevedere struttura e funzione di una proteina a partire dalla sequenza
● Molte cose in natura si ripetono
Bioinformatica – casi d'uso
● Fornire servizi di supporto alla ricerca classica● Database, applicazioni web, software, supporto...
Altri casi d'uso
● Prevedere effetto di farmaci, prima di metterli in sperimentazione
● Disegnare mappe genetiche● Gestire la fase di produzione di dati, assemblare i
risultati di più esperimenti;● Tanto tanto altro :)
Perl e bioinfo
● Perl è tra i linguaggi più utilizzati in bioinformatica.
● Si è diffuso quando alcuni gruppi dell'EBI (European Bioinformatics Institute) hanno cominciato a usarlo, e rilasciare codice su CPAN.
● Viene insegnato nella maggior parte dei corsi e master.
Linguaggi di programmazione in bioinfo
Fonte: http://openwetware.org/wiki/Biogang:Projects/Bioinformatics_Career_Survey_2008_Results
(agosto 2008)
Vantaggi del perl in bioinformatica
● Facile lavorare con file di testo● Le espressioni regolari sono utilizzate un po'
per tutto● Numerose librerie disponibili già su CPAN e
BioPerl. Facile aggiungere nuovi moduli, e installarli.
● In genere si procede scrivendo piccoli programmi (script), ognuno con un compito specifico, e unendoli tramite Makefile.
● E' un approccio diverso dalla programmazione di un software
● Anche disegnare test é più complicato
Esempio di esperimento bioinformatico
● Ipotesi: il genoma umano é più lungo di quello di topo.
● Assunzioni: – I genomi di entrambi gli organismi sono stati
sequenziati con lo stesso livello di qualità;
– Per ogni genoma considero la lunghezza intera della sequenza eccetto alcune parti non sequenziabili (...)
– Le sequenze di riferimento sono quelle depositate nel database genbank sul server ncbi, release 41.
Esempio di esperimento bioinformatico
● Per dimostrare che il genoma umano é più lungo di quello di topo, scrivo:– get_sequences_from_NCBI.pl → scarica le
sequenze dal databsae di riferimento;
– clean_sequences.pl → verifica le seq scaricate, elimina headers e commenti, toglie le seq che non interessano;
– compare_sequence_length.pl → calcola la lunghezza delle seq e dice quale é più lunga;
● Testo i vari script, li unisco tramite Makefile o un tool simile, e lancio l'analisi.
Esempio di esperimento bioinformatico
Makefile:human.fasta: get_sequences_from_NCBI.pl
perl get_sequences_from_NCBI.pl --organism Human --release 41 --outfile sequences.fasta
mouse.fasta: get_sequences_from_NCBI.pl perl get_sequences_from_NCBI.pl --organism Mouse --release 41 --outfile sequences.fasta
cleaned_%.fasta: %.fasta clean_sequences.pl --infile $< --outfile $@
results.txt: cleaned_human.fasta cleaned_mouse.fasta compare_sequences.pl --files $^ --outfile $@
BioPerl
● Esistono altri progetti simili (BioPython, BioJava, BioC, ...), ma BioPerl é il più completo e diffuso
● BioPerl é un insieme di librerie per la bioinformatica rilasciate sotto Gnu/GPL
● Casi d'uso: convertire un file in un formato diverso, cercare un articolo, sapere se una sequenza é simile ad un'altra già pubblicata, calcolare proprietà di una sequenza, etc..
● Purtroppo non tutti lo usano ('snobbato').
BioPerl: esempi
Leggere un file di sequenze e accedere ad alcune proprietà
use Bio::SeqIO;
$seq_handler = SeqIO->new(- file => $filename, -format => $fileformat);
while ($seq = <seq_handler>) { print "Sequence name is ",$seq->display_id,"\n";
print "First 5 bases is ",$seq->subseq(1,5),"\n"; }
Convertire un file in un altro formato:
$in = Bio::SeqIO->newFh(-format => $format1, -fh => \*ARGV ); $out = Bio::SeqIO->newFh(-format => $format2 );
print ${out} $_ while <$in>;
Ensembl APIs
● Ensembl è un progetto nato per gestire le informazioni ricavate dal sequenziamento del genoma umano
● E' organizzato a oggetti (essere_umano->cromosomi->geni->trascritti etc..)
● Adesso é stato allargato ad altre specie oltre all'uomo.
Ensembl APIs - esempi
● il genoma umano e tutte le sue annotazioni sono rappresentati come oggetti– $mio_gene = $genoma_umano->$cromosoma1-
>all_genes->get_gene_by_id('ENSG000000001')my $gene_adaptor = $registry->get_adaptor( 'Human', 'Core', 'Gene' );
my $gene = $gene_adaptor->fetch_by_display_label('COG6');
foreach my $transcript ( @{ $gene->get_all_Transcripts() } ) {print "TRANSCRIPT ", $transcript->stable_id(), "\n"; print_DBEntries( $transcript->get_all_DBEntries() );
if ( defined $transcript->translation() ) { my $translation = $transcript->translation(); print "TRANSLATION ", $translation->stable_id(), "\n"; print_DBEntries( $translation->get_all_DBEntries() ); }}
Home page di ensembl
Svantaggi del perl in bioinformatica
● Meno facile da imparare di Python● Meno orientato ad oggetti di altri linguaggi● Scienziati con teste molto dure● Usato molto male
Problemi della bioinformatica
● il problema più grande é la poca preparazione● Si studia per 3 o 5 anni biologia, dopodiché con
uno o due corsi ci si improvvisa programmatori.● Molti usano Perl senza sapere usare funzioni,
hash, moduli esterni, documentazione, moduli di testing
Altri problemi della bioinfo
● Mentalità 'Publish or Perish': una volta che una libreria viene pubblicata su rivista, non viene mantenuta.
● Non esiste una vera e propria cultura del software libero.
● Non sono definite delle pratiche di buona programmazione comuni.
Altri linguaggi di programmazione
● Python é apprezzato per la facilità di scrittura, paradigma a oggetti, etc..;
● R é il riferimento per le analisi statistiche;● Java é utilizzato in progetti che integrano più
servizi web (taverna)
Futuro della bioinfo ?
● Tutti i tool per manipolare dati bioinformatici sono servizi web
● I workflow che li organizzano sono messi a disposizione sul web (http://myexperiment.org)
Futuro della bioinfo? II
Futuro del Perl in bioinfo
● In alcuni campi ci si sta spostando dal lavoro su file di testo all'uso di database– Come è Perl per lavorare su database?
● Perl continuerà ad essere utilizzato a lungo, perché ci sono molte librerie e comunità disposte a mantenerle.
Fine!!
Grazie per l'attenzione!!
Errori comuni in bioinformatica
Bioinformatica al giorno d'oggi
● Negli ultimi anni i costi per produrre grandi quantità di dati in esperimenti scientifici sono diminuiti enormemente.
● Per esempio è possibile sequenziare un intero genoma in poco tempo.
Differenza tra programmazione di software e bioinformatica
● Il modus operandi in bioinfo é scrivere piccoli programmi che permettano di eseguire calcoli singoli e capire come assemblarli.
● E' diverso dallo sviluppo di un software o una applicazione.
● E' necessario un approccio più scientifico, facendo attenzione ai controlli e mettendo bene in chiaro quali sono le nostre ipotesi.