SlideShare a Scribd company logo
Pycon.it 2009 Python e bioinformatica Giovanni Marco Dall'Olio Universitá Pompeu Fabra, Biologia Evolutiva, Barcelona
Bioinformatica E' la scienza che si occupa di analizzare e trattare tutti i dati prodotti dalla ricerca scientifica, tramite metodi computazionali
Nata negli anni '70, con lo sviluppo di un metodo per confrontare due sequenze di proteine (Matrici PAM)
Esplosione di dati scientifici Al giorno d'oggi si producono piú dati scientifici di quanto si riesca ad analizzare
Costi e tempi diminuiti rapidamente n. sequenze (GenBank) 2009 1996
Tipico esempio di bioinformatica Il sequenziamento del genoma umano nel 2001: CCGACGGTTTAACCGCGGGACCGACCTTTGAGAATATCGGTACTCGCGAGACGGATTATCTGTAGAGTGATCGTTGGAATTTGCTCGATAATCCCCCTCTGCTGGTGAACATGGGAAATAACGAGAACCCAAAATGCGTACCAGCTTCGCTCCAATATATAGTGGAGGCGCATCATACAATCCAGATCCTAACGCCCTAAGAGAAGATTGTCAGCCTCGAGTGCAACGATTGAGCGAGAGAGAAGATAGGGCGGTGAAGACTTTCTCTCAGATAATTCTAACTCTTCCGACTCAAAACGGCCTGTCAATGGCCTATGCGGAAGAGTATTGAGTATTGAACCTACGCGATCCTCAGTGTGGCGTGCGACGTCCTCACCAATGTTACGTAAGAGTTCTAACCGTTTTCTGGACCCCTAGCCAGGTGGTCAGGGGTACGAACTTTTAATCACCAATGTTACGTAAGAGTTCTAACCGTTTTCTGGACCCCTAGCCAGGTGGTCAGGGGTACGAACTTTTAAAGTGTTCGGCGAATCCCGAACGCCGTTAGTGGCGCACTCAAATTCCCCATCTAGGAGGTTTTCGTGATGTTAATATTTGCGCGAGGATACTTCACCAAGC.......  Una enorme sequenza di 3*10^9 caratteri
Genoma umano Immaginate una sequenza come quella del genoma umano
Non é molto utile finché non la integriamo con altri dati
Che strumenti utilizzare per analizzarla?
Che approcci, che tecniche?
Esempio di annotazione CCGACGGTTTAACCGCGGGACCGACCTTTGAGAATATCGGTACTCGCGAGACGGATTATCTGTAGAGTGATCGTTGGAATTTGCTCGATAATCCCCCTCTGCTGGTGAACATGGGAAATAACGAGAACCCAAAATGCGTACCAGCTTCGCTCCAATATATAGT GGAGGCGCATCATACAA TCCAG ATCCTAACGCCC TAAGAGAAGATTGTCAGCCTCGAGTGCAACGATTGAGCGAGAGAGAAGATAGGGCGGTGAAGACTTTCTCTCAGATAATTCTAACTCTTCCGACTCAAAACGGC C TGTCAATGGCCTATGCGGAAGAGTATTGAGTATTGAACCTACGCGATCCTCAGTGTGGCGTGCGACGTCCTCACCA ATGTTACGTAAGAGTTCT AACCGTTTTCTGGACC CCTAGCCAGGTGGTCAGGG GTACGAACTTTTAAAGTGTTCGGCGAATCCCGAACGCCGTTAGTGGCGCACTCAAATTCCCCATCTAGGAGGTTTTCGTGATGTTAATATTTGCGCGAGGATACTTCACCAAGC.......  Coding SNP ????
Bioinfo – altri casi d'uso Biologia strutturale:  studiare strutture di proteine, predirle
Docking molecolare : simulare l'efficacia di una molecola come farmaco
Bioinfo – altri casi d'uso Data integration  – ovvero  riunire informazioni da piu' fonti
La maggior parte del lavoro di un bioinformatico consiste in questo Scaricare una lista di geni da un sito, le loro sequenze da un altro, ... Unire i risultati di piú esperimenti indipendenti
Altri esempi – presentare i dati La comunicazione via web é molto importante
Senza, sarebbe impossibile coordinare qualsiasi progetto di ricerca
Alcuni portali (ncbi, uniprot, …) mettono a disposizione dati e tool pubblici
Bioinformatica e programmazione La maggior parte delle persone che lavorano come bioinformatici ha un background in biologia  Non molti programmatori professionisti Per molte operazioni mostrate nelle slide precedenti, non é necessario utilizzare linguaggi a basso livello
-> in bioinformatica sono molto diffusi linguaggi di scripting (perl, python, R, ...)
Python e bioinformatica Python é uno dei linguaggi piú utilizzati in bioinformatica www.bioinformatics.org  survey Java Perl Python
Vantaggi di Python in bioinfo Sintassi chiara , documentazione
Facile da imparare
Ottimo per  scripting
Librerie per database, testing, documentazione, calcolo scientifico
Orientato ad oggetti , ma multi-paradigma
Python e bioinformatica Curva d'apprendimento ☺☺☺☺☺ Facile da imparare ma potente Leggibilitá ☺☺☺☺☺ Testing ☺☺☺☺☺ Doctest, unittest, nose Comunitá open source ☺☺☺ BioPerl e BioConductor sono piu' ampi Paradigmi di programmazione ☺☺☺☺☺ Multi paradigma, OO Velocitá di esecuzione  Interpretato;  Database ☺☺☺☺☺ Ottimi ORM (sqlalchemy), supporto ad altri tipi di db
Bioinformatica e programmazione Bioinformatica – un approccio diverso rispetto alla programmazione di un software Uso estensivo di scripts e moduli
Makefiles e simili per creare pipelines
Tests utilizzati anche per comunicare con non-programmatori
Continua necessitá di riadattare scripts
Bioinformatica e scripts Piu' che scrivere programmi completi, spesso si scrivono piccoli scripts e librerie Piú facili da scrivere
Piu' facili da riadattare Makefiles e simili posso essere utilizzati per creare pipelines
Esempio di pipeline (Makefile) all :  get_sequences result1 result2 get_sequences :  python download_sequence.py -gene 'XYZ' -database 'ncbi' -... python .... result1 :  python calculate_result.py --input data1.txt result2 :  data2.txt cut -f 1, 3 data2.txt > result2.txt
Esempio più complicato di pipeline mask(S)   flat: S.masked   run: RepeatMasker -lib $(RMLIB) S mask_then_blast(S,D)   flat: S-results/S.D.blast.raw   req:  mask(S) blastindex(D)   srun: blastall -p blastx -i  ....... BioMake  ( http://skam.sourceforge.net/skam-intro.html  )
Testing usato per comunicare Immaginate che questo grafico sia il risultato di una vostra analisi
Come dimostrare che sia corretto?
Testing - esempio La parte piu' difficile di un esperimento é scegliere i controlli e i background corretti
In bioinformatica é la stessa cosa, solo che molto si fa al computer
Testing - esempio Abbiamo scritto un programma per leggere il formato Fasta e convertirlo al formato GenBank
Abbiamo scritto un programma per leggere il formato Fasta e convertirlo al formato GenBank,  e testato il suo funzionamento corretto su un file con una sola sequenza, su un file con sequenze multiple, su un file corrotto.....
Python e testing Python ha delle buone librerie per il testing Doctest  -> esempi inclusi nella documentazione
Unittest  -> unit test classico con fixtures
Nosetest  -> individua tutte le funzioni che assomigliano a tests e le esegue
doctest >>>  help (say_hello) Help on function say_hello in module __main__: say_hello(name) print hello <name> to the screen  example: >>> say_hello('Albert Einstein') hello Albert Einstein!!!
Doctest esempio 2  Le doctest sono comode per comunicare con un non-programmatore
unittest From unittest import * class SimpleFastaSeqCase(unittest.TestCase): @classmethod def setUpClass(cls): ..... @classmethod def tearDownClass(cls): ..... def setUp(self): ..... def tearDown(self): ..... def testCondition1(self): ..... def testCondition2(self): ..... Istruzioni da eseguire prima/dopo  tutti  i test Istruzioni da eseguire  prima/dopo  ogni  test Tests
Python a oggetti Un genoma é composto da diversi cromosomi
Su ogni cromosoma possiamo individuare diversi elementi, come geni, fattori di regolazione, etc..
Ogni gene codifica per più trascritti, che a loro volta possono dare origine a più proteine
>  la programmazione a oggetti si presta molto bene a rappresentare dati di tipo biologico\
Programmazione a oggetti - esempio genes = { 'gene1' :  {  'position' : 10000, 'chromosome': 11,   'sequence' :  'GTAGCCTGATGAACGGGCTAGCATGC....' ,   'transcripts' :  { 'transcript1' : [......], 'transcript2' : [......], }, }, 'gene1' : {  'position' : ...........}, ..... } def  get_subseq(genes, geneid, start, end): ''' get a subsequence of a gene, given a dictionary of gene annotations, a gene id, and start/end position ''' pass

More Related Content

PDF
Spyppolare o non spyppolare
PPTX
Python@Unina - Theory
ODP
(draft) perl e bioinformatica - presentazione per ipw2008
PDF
Lab psychopy
PPTX
Syntactical errors detection 2
ODP
Pyscuola
PDF
Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python
PDF
2006 Py04 avanzato
Spyppolare o non spyppolare
Python@Unina - Theory
(draft) perl e bioinformatica - presentazione per ipw2008
Lab psychopy
Syntactical errors detection 2
Pyscuola
Open Day, "Analisi Numerica moderna e Calcolo Scientico: Fortran, C e Python
2006 Py04 avanzato

Viewers also liked (10)

PDF
Py t2 python-moduli
PDF
Py t3 python-oggetti
PDF
Py a3 python-metaprogramming
PDF
Py a2 python-documentazione
PDF
Py t1 python-intro
PDF
Py a5 python-text
PDF
Py a6 python-database
PDF
Py a4 python-file
PDF
Py a1 python-unit_testing
PDF
Penetration Testing con Python - Network Sniffer
Py t2 python-moduli
Py t3 python-oggetti
Py a3 python-metaprogramming
Py a2 python-documentazione
Py t1 python-intro
Py a5 python-text
Py a6 python-database
Py a4 python-file
Py a1 python-unit_testing
Penetration Testing con Python - Network Sniffer
Ad

Similar to Pycon (20)

KEY
Corso Python Deltapromo lezione 1
PDF
Pycrashcourse4.0 pdfjam
PDF
Python per tutti
KEY
Pycrashcourse
PDF
Introduzione a Python
KEY
Corso Python Deltapromo - Lezione 2
PDF
BioRuby e gli Engines di Rails -ITA-
ODP
Python nel primo biennio della scuola superiore
PPTX
Introduzione alla Programmazione ad oggetti - classi-python.pptx
PPTX
Installazione ambientepython ubuntumate
PPT
Corso Python Django
PDF
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
PDF
PDF
Dynamic Language Programming For The Statically Typed Programmer
PDF
2008 python
KEY
Pycrashcourse3.1
PDF
Debian Approch to Med
PDF
Regione Toscana - Introdution to R Software
PDF
Le basi di Pytthon 3 - Fondamenti n.1
PDF
Classificazione di frasi in linguaggio naturale per il riconoscimento di inte...
Corso Python Deltapromo lezione 1
Pycrashcourse4.0 pdfjam
Python per tutti
Pycrashcourse
Introduzione a Python
Corso Python Deltapromo - Lezione 2
BioRuby e gli Engines di Rails -ITA-
Python nel primo biennio della scuola superiore
Introduzione alla Programmazione ad oggetti - classi-python.pptx
Installazione ambientepython ubuntumate
Corso Python Django
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Dynamic Language Programming For The Statically Typed Programmer
2008 python
Pycrashcourse3.1
Debian Approch to Med
Regione Toscana - Introdution to R Software
Le basi di Pytthon 3 - Fondamenti n.1
Classificazione di frasi in linguaggio naturale per il riconoscimento di inte...
Ad

More from Giovanni Marco Dall'Olio (20)

PPTX
Applicazioni di chatGPT e altri LLMs per la ricerca di farmaci
PDF
Fehrman Nat Gen 2014 - Journal Club
PDF
Thesis defence of Dall'Olio Giovanni Marco. Applications of network theory to...
PDF
PDF
Version control
PDF
Linux intro 5 extra: awk
PDF
Linux intro 5 extra: makefiles
PDF
Linux intro 4 awk + makefile
PDF
Linux intro 3 grep + Unix piping
PDF
Linux intro 2 basic terminal
PDF
Linux intro 1 definitions
PDF
Wagner chapter 5
PDF
Wagner chapter 4
PDF
Wagner chapter 3
PDF
Wagner chapter 2
PDF
Wagner chapter 1
PDF
Hg for bioinformatics, second part
PDF
Hg version control bioinformaticians
PDF
The true story behind the annotation of a pathway
PDF
Plotting data with python and pylab
Applicazioni di chatGPT e altri LLMs per la ricerca di farmaci
Fehrman Nat Gen 2014 - Journal Club
Thesis defence of Dall'Olio Giovanni Marco. Applications of network theory to...
Version control
Linux intro 5 extra: awk
Linux intro 5 extra: makefiles
Linux intro 4 awk + makefile
Linux intro 3 grep + Unix piping
Linux intro 2 basic terminal
Linux intro 1 definitions
Wagner chapter 5
Wagner chapter 4
Wagner chapter 3
Wagner chapter 2
Wagner chapter 1
Hg for bioinformatics, second part
Hg version control bioinformaticians
The true story behind the annotation of a pathway
Plotting data with python and pylab

Pycon

  • 1. Pycon.it 2009 Python e bioinformatica Giovanni Marco Dall'Olio Universitá Pompeu Fabra, Biologia Evolutiva, Barcelona
  • 2. Bioinformatica E' la scienza che si occupa di analizzare e trattare tutti i dati prodotti dalla ricerca scientifica, tramite metodi computazionali
  • 3. Nata negli anni '70, con lo sviluppo di un metodo per confrontare due sequenze di proteine (Matrici PAM)
  • 4. Esplosione di dati scientifici Al giorno d'oggi si producono piú dati scientifici di quanto si riesca ad analizzare
  • 5. Costi e tempi diminuiti rapidamente n. sequenze (GenBank) 2009 1996
  • 6. Tipico esempio di bioinformatica Il sequenziamento del genoma umano nel 2001: CCGACGGTTTAACCGCGGGACCGACCTTTGAGAATATCGGTACTCGCGAGACGGATTATCTGTAGAGTGATCGTTGGAATTTGCTCGATAATCCCCCTCTGCTGGTGAACATGGGAAATAACGAGAACCCAAAATGCGTACCAGCTTCGCTCCAATATATAGTGGAGGCGCATCATACAATCCAGATCCTAACGCCCTAAGAGAAGATTGTCAGCCTCGAGTGCAACGATTGAGCGAGAGAGAAGATAGGGCGGTGAAGACTTTCTCTCAGATAATTCTAACTCTTCCGACTCAAAACGGCCTGTCAATGGCCTATGCGGAAGAGTATTGAGTATTGAACCTACGCGATCCTCAGTGTGGCGTGCGACGTCCTCACCAATGTTACGTAAGAGTTCTAACCGTTTTCTGGACCCCTAGCCAGGTGGTCAGGGGTACGAACTTTTAATCACCAATGTTACGTAAGAGTTCTAACCGTTTTCTGGACCCCTAGCCAGGTGGTCAGGGGTACGAACTTTTAAAGTGTTCGGCGAATCCCGAACGCCGTTAGTGGCGCACTCAAATTCCCCATCTAGGAGGTTTTCGTGATGTTAATATTTGCGCGAGGATACTTCACCAAGC....... Una enorme sequenza di 3*10^9 caratteri
  • 7. Genoma umano Immaginate una sequenza come quella del genoma umano
  • 8. Non é molto utile finché non la integriamo con altri dati
  • 9. Che strumenti utilizzare per analizzarla?
  • 10. Che approcci, che tecniche?
  • 11. Esempio di annotazione CCGACGGTTTAACCGCGGGACCGACCTTTGAGAATATCGGTACTCGCGAGACGGATTATCTGTAGAGTGATCGTTGGAATTTGCTCGATAATCCCCCTCTGCTGGTGAACATGGGAAATAACGAGAACCCAAAATGCGTACCAGCTTCGCTCCAATATATAGT GGAGGCGCATCATACAA TCCAG ATCCTAACGCCC TAAGAGAAGATTGTCAGCCTCGAGTGCAACGATTGAGCGAGAGAGAAGATAGGGCGGTGAAGACTTTCTCTCAGATAATTCTAACTCTTCCGACTCAAAACGGC C TGTCAATGGCCTATGCGGAAGAGTATTGAGTATTGAACCTACGCGATCCTCAGTGTGGCGTGCGACGTCCTCACCA ATGTTACGTAAGAGTTCT AACCGTTTTCTGGACC CCTAGCCAGGTGGTCAGGG GTACGAACTTTTAAAGTGTTCGGCGAATCCCGAACGCCGTTAGTGGCGCACTCAAATTCCCCATCTAGGAGGTTTTCGTGATGTTAATATTTGCGCGAGGATACTTCACCAAGC....... Coding SNP ????
  • 12. Bioinfo – altri casi d'uso Biologia strutturale: studiare strutture di proteine, predirle
  • 13. Docking molecolare : simulare l'efficacia di una molecola come farmaco
  • 14. Bioinfo – altri casi d'uso Data integration – ovvero riunire informazioni da piu' fonti
  • 15. La maggior parte del lavoro di un bioinformatico consiste in questo Scaricare una lista di geni da un sito, le loro sequenze da un altro, ... Unire i risultati di piú esperimenti indipendenti
  • 16. Altri esempi – presentare i dati La comunicazione via web é molto importante
  • 17. Senza, sarebbe impossibile coordinare qualsiasi progetto di ricerca
  • 18. Alcuni portali (ncbi, uniprot, …) mettono a disposizione dati e tool pubblici
  • 19. Bioinformatica e programmazione La maggior parte delle persone che lavorano come bioinformatici ha un background in biologia Non molti programmatori professionisti Per molte operazioni mostrate nelle slide precedenti, non é necessario utilizzare linguaggi a basso livello
  • 20. -> in bioinformatica sono molto diffusi linguaggi di scripting (perl, python, R, ...)
  • 21. Python e bioinformatica Python é uno dei linguaggi piú utilizzati in bioinformatica www.bioinformatics.org survey Java Perl Python
  • 22. Vantaggi di Python in bioinfo Sintassi chiara , documentazione
  • 24. Ottimo per scripting
  • 25. Librerie per database, testing, documentazione, calcolo scientifico
  • 26. Orientato ad oggetti , ma multi-paradigma
  • 27. Python e bioinformatica Curva d'apprendimento ☺☺☺☺☺ Facile da imparare ma potente Leggibilitá ☺☺☺☺☺ Testing ☺☺☺☺☺ Doctest, unittest, nose Comunitá open source ☺☺☺ BioPerl e BioConductor sono piu' ampi Paradigmi di programmazione ☺☺☺☺☺ Multi paradigma, OO Velocitá di esecuzione  Interpretato; Database ☺☺☺☺☺ Ottimi ORM (sqlalchemy), supporto ad altri tipi di db
  • 28. Bioinformatica e programmazione Bioinformatica – un approccio diverso rispetto alla programmazione di un software Uso estensivo di scripts e moduli
  • 29. Makefiles e simili per creare pipelines
  • 30. Tests utilizzati anche per comunicare con non-programmatori
  • 31. Continua necessitá di riadattare scripts
  • 32. Bioinformatica e scripts Piu' che scrivere programmi completi, spesso si scrivono piccoli scripts e librerie Piú facili da scrivere
  • 33. Piu' facili da riadattare Makefiles e simili posso essere utilizzati per creare pipelines
  • 34. Esempio di pipeline (Makefile) all : get_sequences result1 result2 get_sequences : python download_sequence.py -gene 'XYZ' -database 'ncbi' -... python .... result1 : python calculate_result.py --input data1.txt result2 : data2.txt cut -f 1, 3 data2.txt > result2.txt
  • 35. Esempio più complicato di pipeline mask(S) flat: S.masked run: RepeatMasker -lib $(RMLIB) S mask_then_blast(S,D) flat: S-results/S.D.blast.raw req: mask(S) blastindex(D) srun: blastall -p blastx -i ....... BioMake ( http://skam.sourceforge.net/skam-intro.html )
  • 36. Testing usato per comunicare Immaginate che questo grafico sia il risultato di una vostra analisi
  • 37. Come dimostrare che sia corretto?
  • 38. Testing - esempio La parte piu' difficile di un esperimento é scegliere i controlli e i background corretti
  • 39. In bioinformatica é la stessa cosa, solo che molto si fa al computer
  • 40. Testing - esempio Abbiamo scritto un programma per leggere il formato Fasta e convertirlo al formato GenBank
  • 41. Abbiamo scritto un programma per leggere il formato Fasta e convertirlo al formato GenBank, e testato il suo funzionamento corretto su un file con una sola sequenza, su un file con sequenze multiple, su un file corrotto.....
  • 42. Python e testing Python ha delle buone librerie per il testing Doctest -> esempi inclusi nella documentazione
  • 43. Unittest -> unit test classico con fixtures
  • 44. Nosetest -> individua tutte le funzioni che assomigliano a tests e le esegue
  • 45. doctest >>> help (say_hello) Help on function say_hello in module __main__: say_hello(name) print hello <name> to the screen example: >>> say_hello('Albert Einstein') hello Albert Einstein!!!
  • 46. Doctest esempio 2 Le doctest sono comode per comunicare con un non-programmatore
  • 47. unittest From unittest import * class SimpleFastaSeqCase(unittest.TestCase): @classmethod def setUpClass(cls): ..... @classmethod def tearDownClass(cls): ..... def setUp(self): ..... def tearDown(self): ..... def testCondition1(self): ..... def testCondition2(self): ..... Istruzioni da eseguire prima/dopo tutti i test Istruzioni da eseguire prima/dopo ogni test Tests
  • 48. Python a oggetti Un genoma é composto da diversi cromosomi
  • 49. Su ogni cromosoma possiamo individuare diversi elementi, come geni, fattori di regolazione, etc..
  • 50. Ogni gene codifica per più trascritti, che a loro volta possono dare origine a più proteine
  • 51. > la programmazione a oggetti si presta molto bene a rappresentare dati di tipo biologico\
  • 52. Programmazione a oggetti - esempio genes = { 'gene1' : { 'position' : 10000, 'chromosome': 11, 'sequence' : 'GTAGCCTGATGAACGGGCTAGCATGC....' , 'transcripts' : { 'transcript1' : [......], 'transcript2' : [......], }, }, 'gene1' : { 'position' : ...........}, ..... } def get_subseq(genes, geneid, start, end): ''' get a subsequence of a gene, given a dictionary of gene annotations, a gene id, and start/end position ''' pass
  • 53. Programmazione a oggetti - esempio genes = {'gene1': { 'position': 10000, 'chromosome': 11, 'sequence': 'GTAGCCTGATGAACGGGCTAGCATGC....', 'transcripts': { 'transcript1': [......], 'transcript2': [......], }, }, 'gene1': { 'position': ...........}, ..... } def get_subseq(genes, geneid, start, end): ''' get a subsequence of a gene, given a dictionary of gene annotations, a gene id, and start/end position ''' pass
  • 54. Un oggetto in python class gene: def __init__ ( self ) : position = None sequence = '' transcripts = [] def get_subseq ( self , start, end ) : pass La sintassi di Python per gli oggetti é chiara e semplice
  • 55. Più concisa di Java, inoltre non é obbligatorio usare OO
  • 56. OO é piuttosto complicato in perl
  • 57. Python and Java classes public class Gene { public int position; public str chromosome; public str transcripts[]; public Gene(int pos){ position = pos } public void getSubseq(int start, int end) { pass } class gene: def __init__(self,pos): self.position = pos self.sequence = '' self.transcripts = [] def get_subseq(self, start, end): pass (Una classe in python) (Una classe in Java) (non sono un programmatore Java!)
  • 58. Lavorare con dati scientifici Un problema serio é quello di immagazzinare i dati e accedervi
  • 59. diffusione di vari formati di testo
  • 60. disputa tra flat files, database, e altri sistemi
  • 61. Python e database Python ha ottimi moduli per gestire database relazionali Sqlalchemy, elixir.....
  • 63. Python e database Python ha ottimi moduli per gestire database relazionali Sqlalchemy, elixir..... I db relazionali non vanno sempre bene per gestire dati scientifici Rappresentare grafi?
  • 65. Merging di insiemi di dati?
  • 66. Grafi e database relazionali E' facile rappresentare un grafo in un db relazionale, ma difficile navigarlo (query ricorsive)
  • 67. Problema comune in bioinformatica http://phenomics.cs.ucla.edu/
  • 68. Strutture gerarchiche e db I db relazionali non sono adatti per rappresentare dati sequenziali
  • 70. Altri tipi di database Python ha delle buone librerie per interagire con altri tipi di database
  • 73. ...
  • 74. HDF5 HDF5 é un formato di file binario, usato un fisica e astronomia
  • 75. Database gerarchico (tabelle dentro altre tabelle)
  • 76. Ottime APIs in python (PyTables) SNP object - id - position - chromosome - genotypes individual genotype - allele1 - allele2 - stats population iHS Fst Nested tables
  • 77. Librerie open source per la bioinformatica Vediamo qualche modulo di utilità generica..
  • 78. Biopython Una collezione di moduli per la bioinformatica
  • 79. Numero di funzionalitá implementate: bioconductor > bioperl > biopython > tutti gli altri Punti forti di Biopython: Supporto a diversi formati
  • 80. APIs per entrez e alcuni database importanti
  • 82. Biopython Esempi # Leggere un file in formato fasta e salvarlo in un dizionario from Bio.SeqIO import SeqIO seqfile = open('fastafile.fa', 'r') sequences = SeqIO.to_dict(SeqIO.parse(seqfile)) # Query NCBI results = Entrez.esearch(db='nucleotide', term='cox2') Entrez.read(results)
  • 83. Pygr Ottimo per analisi su genomi
  • 84. Punti forti Nasconde il problema del salvataggio di dati (database, files)
  • 85. Usare e configurare blast locali
  • 87. Interfaccia con ncbi, ensembl, ucsc
  • 88. Pygr esempi # Ensembl APIs serverRegistry = get_registry( host= 'ensembldb.ensembl.org', user='anonymous') coreDBAdaptor = serverRegistry.get_DBAdaptor( 'homo_sapiens', 'core', '47_36i') sequence = coreDBAdaptor.fetch_slice_by_seqregion( coordSystemName, seqregionName) # Scarica la seq del genoma umano da ucsc(18) import pygr.Data hg18 = pygr.Data.Bio.Seq.Genome.HUMAN.hg18( download=True)
  • 89. Scientific Python Numpy : modulo per calcolo numerico (array, matrici..)
  • 90. Scipy : calcolo matematico avanzato, test statistici..
  • 94. Numpy/Scipy example Note: ipython -pylab per trasformare python in un ambiente simile a R
  • 95. Svantaggi di Python in bioinfo La comunitá open source di Python é attiva, ma quelle di Perl e R lo sono di più
  • 96. In alcuni campi, mancano ancora buone librerie
  • 98. Problemi della bioinfo Mentalitá 'Publish or Perish' dopo aver pubblicato, programmi e database vengono abbandonati Il testing é poco diffuso, difficile riconoscere gli errori Molti scripts non sono inclusi nelle pubblicazioni! Poca cultura su software engineering
  • 100. Grazie per l'attenzione!! Ringraziamenti: Bologna biocomp group
  • 103. nodalpoint.org and all bioinfo bloggers
  • 105. Sequenziamento genoma umano Immaginate una sequenza grande come il genoma umano
  • 106. Come trarre ordine da una massa di dati come questa?
  • 107. Come associare un gene ad una posizione, sequenza?
  • 108. Che strumenti? Che tecniche?
  • 110. Esempio di annotazione di una sequenza Annotazione di una sequenza -> identificiare posizioni di geni, fattori di regolazione, ...
  • 111. Esempio di esperimento bioinformatico Ipotesi : il gene XYZ è conservato in uomo e topo.
  • 112. Assunzioni : I genomi di entrambi gli organismi sono stati sequenziati con lo stesso livello di qualità;
  • 113. ....
  • 114. ....
  • 115. Esempio di esperimento bioinformatico Per dimostrare che il gene XYZ é conservato in entrambe le specie, potrei scrivere diversi scripts: download_sequences.py
  • 117. compare_length.py Il modo più semplice di organizzare una pipeline é tramite Make o tool simili