29
IPW2008 Perl e Bioinformatica G.M. Dall'Olio

Perl Bioinfo

Embed Size (px)

DESCRIPTION

Diapositive di 'BIoinformatica e perl' Si tratta di un draft, la versione finale verrà presentata al talk.

Citation preview

Page 1: Perl Bioinfo

IPW2008

Perl e BioinformaticaG.M. Dall'Olio

Page 2: Perl Bioinfo

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.

Page 3: Perl Bioinfo

Bioinformatica – casi d'uso

● Sequenziamento genoma umano– CCGACGGTTTAACCGCGGGACCGACCTTTGAGAATATCGGTACTCGCGAGA

CGGATTATCTGTAGAGTGATCGTTGGAATTTGCTCGATAATCCCCCTCTGCTGGTGAACATGGGAAATAACGAGAACCCAAAATGCGTACCAGCTTCGCTCCAATATATAGTGGAGGCGCATCATACAATCCAGATCCTAACGCCCTAAGAGAAGATTGTCAGCCTCGAGTGCAACGATTGAGCGAGAGAGAAGATAGGGCGGTGAAGACTTTCTCTCAGATAATTCTAACCTTAAAACGCGTCTGTTGAATCCAGTCCTATCTTGTTTACATACGCGTGGACGGTATGTTGTCCCTTGCAGCGACAGTGGTGCCTTCCTATGATTCCGTCCTTCTTCCGACTCAAAACGGCCTGTCAATGGCCTATGCGGAAGAGTATTGAGTATTGAACCTACGCGATCCTCAGTGTGGCGTGCGACGTCCTCACCAATGTTAGATAGGAGTGACATTTCGTCTTATGATAATTAATTCAACCAATTACACAGGCCGTAAGAGTTCTAACCGTTTTCTGGACCCCTAGCCAGGTGGTCAGGGGTACGAACTTTTAAAGTGTTCGGCGAATCCCGAACGCCGTTAGTGGCGCACTCAAATTCCCCATCTAGGAGGTTTTCGTGATGTTAATATTTGCGCGAGGATACTTCACCAAGC.......

● 3*10^9 caratteri● Cosa farci? (tante regex)

Page 4: Perl Bioinfo

Bioinformatica – casi d'uso

● Prevedere struttura e funzione di una proteina a partire dalla sequenza

● Molte cose in natura si ripetono

Page 5: Perl Bioinfo

Bioinformatica – casi d'uso

● Fornire servizi di supporto alla ricerca classica● Database, applicazioni web, software, supporto...

Page 6: Perl Bioinfo

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 :)

Page 7: Perl Bioinfo

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.

Page 8: Perl Bioinfo

Linguaggi di programmazione in bioinfo

Fonte: http://openwetware.org/wiki/Biogang:Projects/Bioinformatics_Career_Survey_2008_Results

(agosto 2008)

Page 9: Perl Bioinfo

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.

Page 10: Perl Bioinfo

● 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

Page 11: Perl Bioinfo

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.

Page 12: Perl Bioinfo

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.

Page 13: Perl Bioinfo

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 $@

Page 14: Perl Bioinfo

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').

Page 15: Perl Bioinfo

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>;

Page 16: Perl Bioinfo

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.

Page 17: Perl Bioinfo

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() ); }}

Page 18: Perl Bioinfo

Home page di ensembl

Page 19: Perl Bioinfo

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

Page 20: Perl Bioinfo

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

Page 21: Perl Bioinfo

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.

Page 22: Perl Bioinfo

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)

Page 23: Perl Bioinfo

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)

Page 24: Perl Bioinfo

Futuro della bioinfo? II

Page 25: Perl Bioinfo

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.

Page 26: Perl Bioinfo

Fine!!

Grazie per l'attenzione!!

Page 27: Perl Bioinfo

Errori comuni in bioinformatica

Page 28: Perl Bioinfo

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.

Page 29: Perl Bioinfo

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.