1 / 51

The Bioperl toolkit : Perl modules for the life sciences

The Bioperl toolkit : Perl modules for the life sciences. + DBI + CGI. L aboratório de G enética M olecular e B ioinformática. Daniel Guariz Pinheiro, PhD. O pen B ioinformatics F oundation. Introdução. O que é BioPerl ?

chibale
Download Presentation

The Bioperl toolkit : Perl modules for the life sciences

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Bioperl toolkit: Perl modules for the life sciences + DBI + CGI L aboratório de G enética M olecular e B ioinformática Daniel Guariz Pinheiro, PhD.

  2. Open Bioinformatics Foundation Introdução • O que é BioPerl ? • Projeto de colaboraçãoopen-sourceinternacional (1996- …) • Biblioteca de módulos Perl • Soluçõespara a PesquisaemBioinformática, Genômica e CiênciasBiológicas; • Tarefascomplexas e rotineirasutilizandoalgumaspoucaslinhas de código; • Análise e anotação de seqüências e outrasáreas; • Licenciado sob a Perl Artistic License; • Open Bioinformatics Foundation (2002-...)

  3. Reinvençãodaroda Pode não ser tão eficiente quanto o esperado!

  4. Referências Principais artigos científicos VSNS-BCD – Universität Bielefeld 1: Stajich JE, Block D, Boulez K, Brenner SE, Chervitz SA, Dagdigian C, Fuellen G, Gilbert JG, Korf I, Lapp H, Lehväslaiho H, Matsalla C, Mungall CJ, Osborne BI, Pocock MR, Schattner P, Senger M, Stein LD, Stupka E, Wilkinson MD, Birney E. The Bioperl toolkit: Perl modules for the life sciences. Genome Res. 2002 Oct;12(10):1611-8. -Arquitetura Geral do Pacote BioPerl 2: Stein LD, Mungall C, Shu S, Caudy M, Mangone M, Day A, Nickerson E, Stajich JE, Harris TW, Arva A, Lewis S. The generic genome browser: a building block for a model organism system database. Genome Res. 2002 Oct;12(10):1599-610. Gbrowse – Visualização de Genomas 3: Stajich JE, Hahn MW. Disentangling the effects of demography and selection in human history. Mol Biol Evol. 2005 Jan;22(1):63-73. Epub 2004 Sep 8. GenPop – Genética de Populações Jason Stajich Responsáveis BioPerl Lincoln Stein Sendu Bala Christopher Fields Hilmar Lapp Heikki Lehväslaiho Aaron Mackey Brian Osborne

  5. Citações Dados (www.bioperl.org) • 1998 – meados 2008 • ~600 (projetos e artigos) • ~44 (livros) • 3 (patentes)

  6. Paradigma de programação • Programação Modular • ProgramaçãoOrientada a Objetos • Representação dos conceitosem um sistema • Objetos • Classe (definição) • Comportamento (métodos) • Estadospossíveis (atributos) • Relacionamento com outrosobjetos FUNCIONAMENTO: RELACIONAMENTOS E TROCAS DE MENSAGENS ENTRE OS OBJETOS

  7. Conceitos - I • Classe: • É a modelagem de um conceito do mundo real (abstração de um objeto). • As propriedades associadas ao conceito são representadas por atributos e operações. • Objeto ou Instância (de uma classe): • É a concretização da classe em uma entidade lógica, que contém dados (atributos) e código para manipulá-los (métodos). • Cada objeto “pertence” a uma classe. • Mensagem: • Comunicação entre objetos. • Se manda uma mensagem a um objeto para pedir a ele executar uma operação particular.

  8. Conceitos - II • Herança: • (Especialização/generalização)é o mecanismopeloqualumaclasse (sub-classe) podeestenderoutraclasse (super-classe), aproveitandoseusmétodos e atributos. • No modelo a objetos, uma sub-classepossuitodososatributos e todas as operaçõesda super-classe. A sub-classepodeacrescentaralgunsatributos e métodos. Elapodetambémredefiniralgunsmétodosda super-classe. Elanãopodetirarnenhumapropriedadeda super-classe. • Encapsulamento: • Detalhesdaimplementaçãosãotransparentes a quemmanipula o objeto; • Polimorfismo: • É o princípiopeloqualduasoumais classes derivadas de umamesmasuperclassepodeminvocarmétodosquetêm a mesmaidentificação (assinatura) mascomportamentosdistintos. • Interface: • A Interface é umaclassequepossuiapenas as especificaçõessem a implementação.

  9. Diagrama de Classes As classes Circle, Square e Triangle redefinem os métodos draw() e erase() da Superclasse Shape

  10. Vantagens (POO) – Melhor representação do “mundo real” – Ênfase nos dados – Modularidade – Reusabilidade – Produtividade – Manutenibilidade ... • – Ênfase nos dados • – Modularidade • – Reusabilidade • – Produtividade • – Manutenibilidade – etc...

  11. Desvantagens (POO) – Desempenho baixo no tempo de execução em relação ao código estruturado; – Apropriação (Classes – atributos e métodos – e Hierarquia de classes) – Fragilidade (Necessidade de definições precisas das classes – requer análise cuidadosa do projeto) ...

  12. Sequence.pm package Sequence; sub new { my ($class, $id, $seq, $strand) = @_; my $self = bless {}, $class; $self->set_sequence($id,$seq,$strand); return $self; } sub set_sequence { my ($self, $id, $seq, $strand) = @_; $self->{'sequence'} = {'id' => $id, 'seq' => $seq, 'strand' => $strand}; } sub display_fasta_sequence { my $self = shift; my $seq = $self->{'sequence'}->{'seq'}; $seq=~s/(.{1,60})/$1\n/g; print ">$self->{'sequence'}->{'id'}\n$seq"; } 1; seq.pl use Sequence; my $seq = Sequence->new('Seq1','ACCACGATCACATG','+'); $seq->display_fasta_sequence(); POO em Perl • Definições simplificadas: • Um objeto é simplesmente uma referência à classe a qual ele pertence; • Uma classe é simplesmente um pacote que provê métodos para lidar com as referências do objeto; • Um método é simplesmente uma sub-rotina que espera uma referência ao objeto como primeiro argumento;

  13. CPAN http://www.cpan.org/ • Comprehensive Perl Archive Network • Coleção de módulos em Perl e documentação • Exemplos: • DBD::mysql ; • DBI; • CGI; • GD;

  14. Application Programming Interface (API) • Conjunto de rotinas e padrões (convenções) estabelecidos por uma aplicação para a utilização/extensão de suas funcionalidades. • Provê uma interface de alto nível para uma determinada aplicação. • Bio::Perl - API simplificada Exemplo: # Lê um todas as seqüências de um arquivomultifasta my @seq_object_array = read_all_sequences($filename,'fasta');

  15. Arquiteturageral do BioPerl • Programação Orientada a Objetos (POO) • API (Application Programming Interface) • Princípios: • Separação entre Interface e Implementação; • Generalização de rotinas comuns em um único módulo; • Utilização de certos padrões de desenvolvimento reconhecidos (Design Patterns);

  16. Separação entre Interface e Implementação • Interface (Tipos Abstratos de Dados) • Contrato de como os métodos devem ser invocados; • I – adicionado ao nome da classe (Ex.: Bio::SeqI e Bio::Seq; Bio::SeqFeatureI e Bio::SeqFeature)

  17. Generalização de rotinascomuns (únicomódulo) • Exemplos: • Operações básicas de IO (input/output) – Bio::Root::IO • Operações de IO (input/output) seqüências – Bio::SeqIO • Operações básicas de acesso web – Bio::Root::HTTPget • Operações de acesso web – Bio::DB::GenBank

  18. Utilização de Padrões de Desenvolvimento • Factory – adição de módulos responsáveis pela criação automática de objetos • Factory – adicionado ao nome da classe (Ex.: Bio::Seq::SeqFactory - Bio::PrimarySeq ou Bio::Seq::Qual) • Strategy – seleção dinâmica de algoritmos • Ex.: next_seq() da classe Bio::SeqIO (Diferentes implementações, uma para cada um dos parsers) – seleção em tempo de execução

  19. Características • Escrito puramente em Perl • Padrão de desenvolvimento rigoroso • Orientações para a padronização do cógido • Testes exaustivos • Documentação (POD - Plain Old Documentation) • perldoc • Requer compilador Perl • v5.005 ou superior • Plataformas suportadas (Sistemas Operacionais) • UNIX-like • Linux, Solaris, FreeBSD, … • Windows

  20. Bio::Seq Seqüências e suas propriedades Bio::SeqFeature Anotação de seqüências com seus atributos Bio::DB Acesso a bancos de dados de seqüências Bio::SeqIO Usado para ler e gravar seqüências em diferentes formatos Bio::DB::Query::GenBank Consultas a bancos de dados de seqüências (GenBank) Bio::SearchIO Obter dados de resultados (Ex.: blast) Bio::Location Manipulação de coordenadas de seqüências Bio::Graphics Gerar imagens de seqüências e atributos de seqüências PrincipaisMódulos

  21. $ perldoc Bio::SeqIO Documentação http://docs.bioperl.org

  22. Bio::Seq use Bio::Seq; my $sequence_as_string = 'ACGTACAGTACAGTACTAGAAACGTA'; my $seqobj = Bio::Seq->new( -display_id => 'my_id', -seq => $sequence_as_string); print $seqobj->display_id(),"\n"; print $seqobj->seq(),"\n"; print $seqobj->translate()->seq(),"\n"; print $seqobj->trunc(5,10)->revcom()->seq(),"\n"; my $subseqstr = $seqobj->subseq(5,10); print $subseqstr,"\n"; my $revcom = $seqobj->revcom(); print $revcom ,"\n"; print $revcom->seq(),"\n"; print $seqobj->desc(),"\n";

  23. repeat test 1 tag tag value 2 3 author tag tag value someone Bio::SeqFeature::Generic use Bio::Seq; use Bio::SeqFeature::Generic; my $seqobj = Bio::Seq->new( -display_id => 'my_id', -seq => 'ACGTACAGTACAGTACTAGAAACGTA'); my $feat = new Bio::SeqFeature::Generic ( -start => 5, -end => 15, -strand => -1, -primary_tag => 'repeat', -display_name => 'alu family', -tag=>{ test=>[1,2,3], author=>'someone' } ); $seqobj->add_SeqFeature($feat); my @features = $seqobj->get_SeqFeatures(); foreach my $feat ( @features ) { print "Feature ",$feat->primary_tag," starts ",$feat->start," ends ", $feat->end," strand ",$feat->strand,"\n"; print "Feature sequence is ",$feat->seq->seq(),"\n"; foreach my $tag ( $feat->get_all_tags() ) { print "\t",$tag,"\n"; foreach my $value ( $feat->each_tag_value($tag) ) { print "\t\t",$value,"\n"; } } } primary_tag

  24. Bio::DB::GenBank use Bio::DB::GenBank; my $gb = new Bio::DB::GenBank; my $seqobj = $gb->get_Seq_by_acc('J00522'); #my $seqobj = $gb->get_Seq_by_version('J00522.1'); #my $seqobj = $gb->get_Seq_by_gi('195052'); my @features = $seqobj->get_SeqFeatures(); foreach my $feat ( @features ) { print "Feature ",$feat->primary_tag," starts ",$feat->start," ends ", $feat->end," strand ",$feat->strand,"\n"; print "Feature sequence is ",$feat->seq->seq(),"\n"; foreach my $tag ( $feat->get_all_tags() ) { print "\t",$tag,"\n"; foreach my $value ( $feat->each_tag_value($tag) ) { print "\t\t",$value,"\n"; } } }

  25. Principais Formatos dos BDs Flat files do NCBI/EBI EMBL ID AY509193 standard; mRNA; HUM; 647 BP. XX AC AY509193; XX SV AY509193.1 XX DT 20-JAN-2004 (Rel. 78, Created) DT 16-APR-2005 (Rel. 83, Last updated, Version 2) XX DE Homo sapiens hemoglobin beta mRNA, complete cds. XX KW . XX OS Homo sapiens (human) OC Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; Mammalia; OC Eutheria; Euarchontoglires; Primates; Catarrhini; Hominidae; Homo. XX FH Key Location/Qualifiers FH FT source 1..647 FT /db_xref="taxon:9606" FT /mol_type="mRNA" FT /organism="Homo sapiens" FT /isolation_source="recovered SARS patient" FT /cell_type="lymphocyte" GenBank LOCUS NM_000518 626 bpmRNA linear PRI 27-JAN-2008 DEFINITION Homo sapiens hemoglobin, beta (HBB), mRNA. ACCESSION NM_000518 VERSION NM_000518.4 GI:28302128 KEYWORDS . SOURCE Homo sapiens (human) ORGANISM Homo sapiens Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; Mammalia; Eutheria; Euarchontoglires; Primates; Haplorrhini; Catarrhini; Hominidae; Homo. REFERENCE 1 (bases 1 to 626) AUTHORS Ma,Q., Abel,K., Sripichai,O., Whitacre,J., Angkachatchai,V., Makarasara,W., Winichagoon,P., Fucharoen,S., Braun,A. and Farrer,L.A. TITLE Beta-globin gene cluster polymorphisms are stronglyassociatedwith severityofHbE/beta(0)-thalassemia JOURNAL Clin. Genet. 72 (6), 497-505 (2007) PUBMED 17894837 REMARK GeneRIF: Forty-fiveSNPswithintheintervalincludingthe LCR regionandthe delta gene showedstrongassociationwithdisease severity. COMMENT REVIEWED REFSEQ: This record has been curated by NCBI staff. The reference sequence was derived from L48217.1. On Feb 11, 2003 this sequence version replaced gi:13788565. Summary: The alpha (HBA) and beta (HBB) loci determine the structure of the 2 types of polypeptide chains in adult hemoglobin, Hb A. The normal adult hemoglobin tetramer consists of two alpha chains and two beta chains. Mutant beta globin causes sickle cell anemia. Absence of beta chain causes beta-zero-thalassemia. Reduced amounts of detectable beta globin causes beta-plus-thalassemia. The order of the genes in the beta-globin cluster is 5'-epsilon -- gamma-G -- gamma-A -- delta -- beta--3'. Publication Note: This RefSeq record includes a subset of the publications that are available for this gene. Please see the Entrez Gene record to access additional publications. COMPLETENESS: full length. FEATURES Location/Qualifiers source 1..626 /organism="Homo sapiens" /mol_type="mRNA" /db_xref="taxon:9606" /chromosome="11" /map="11p15.5" gene 1..626 /gene="HBB" /note="hemoglobin, beta; synonyms: HBD, CD113t-C" /db_xref="GeneID:3043" /db_xref="HGNC:4827" /db_xref="HPRD:HPRD_00786" /db_xref="MIM:141900" exon 1..142 /gene="HBB" /inference="alignment:Splign" /number=1 CDS 51..494 /gene="HBB" /GO_component="hemoglobin complex [PMID 1540659] [PMID 10588683]" /GO_function="heme binding; hemoglobin binding [PMID 1512262]; iron ion binding; metal ion binding; oxygen binding [PMID 11747442]; oxygen transporter activity [PMID 1971109] [PMID 11747442]; selenium binding [PMID 15780970]" /GO_process="nitric oxide transport [PMID 8292032]; oxygen transport [PMID 1540659] [PMID 11747442]; positive regulation of nitric oxide biosynthesis [PMID 7965120]; transport“ /note="beta globin chain" /codon_start=1 /product="beta globin" /protein_id="NP_000509.1" /db_xref="GI:4504349" /db_xref="CCDS:CCDS7753.1" /db_xref="GeneID:3043" /db_xref="HGNC:4827" /db_xref="HPRD:HPRD_00786" /db_xref="MIM:141900" /translation="MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFE SFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPE NFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH" exon 143..365 /gene="HBB" /inference="alignment:Splign" /number=2 exon 366..626 /gene="HBB" /inference="alignment:Splign" /number=3 polyA_signal 602..607 /gene="HBB" polyA_site 626 /gene="HBB" ORIGIN 1 acatttgctt ctgacacaac tgtgttcact agcaacctca aacagacacc atggtgcatc 61 tgactcctga ggagaagtct gccgttactg ccctgtgggg caaggtgaac gtggatgaag 121 ttggtggtga ggccctgggc aggctgctgg tggtctaccc ttggacccag aggttctttg 181 agtcctttgg ggatctgtcc actcctgatg ctgttatggg caaccctaag gtgaaggctc 241 atggcaagaa agtgctcggt gcctttagtg atggcctggc tcacctggac aacctcaagg 301 gcacctttgc cacactgagt gagctgcact gtgacaagct gcacgtggat cctgagaact 361 tcaggctcct gggcaacgtg ctggtctgtg tgctggccca tcactttggc aaagaattca 421 ccccaccagt gcaggctgcc tatcagaaag tggtggctgg tgtggctaat gccctggccc 481 acaagtatca ctaagctcgc tttcttgctg tccaatttct attaaaggtt cctttgttcc 541 ctaagtccaa ctactaaact gggggatatt atgaagggcc ttgagcatct ggattctgcc 601 taataaaaaa catttatttt cattgc // FASTA (Pearson) >gi|28302128|ref|NM_000518.4| Homo sapiens hemoglobin, beta (HBB), mRNA ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGA GGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC AGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATG CTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC TCACCTGGACAACCTCAAGGGCACCTTTGCCACACTGAGTGAGCTGCACTGTGACAAGCTGCACGTGGAT CCTGAGAACTTCAGGCTCCTGGGCAACGTGCTGGTCTGTGTGCTGGCCCATCACTTTGGCAAAGAATTCA CCCCACCAGTGCAGGCTGCCTATCAGAAAGTGGTGGCTGGTGTGGCTAATGCCCTGGCCCACAAGTATCA CTAAGCTCGCTTTCTTGCTGTCCAATTTCTATTAAAGGTTCCTTTGTTCCCTAAGTCCAACTACTAAACT GGGGGATATTATGAAGGGCCTTGAGCATCTGGATTCTGCCTAATAAAAAACATTTATTTTCATTGC FT CDS 51..494 FT /codon_start=1 FT /db_xref="GOA:Q6R7N2" FT /db_xref="HSSP:1BAB" FT /db_xref="InterPro:IPR000971" FT /db_xref="InterPro:IPR002337" FT /db_xref="InterPro:IPR012292" FT /db_xref="UniProtKB/TrEMBL:Q6R7N2" FT /note="differentially expressed in lymphocyte of SARS FT patient" FT /product="hemoglobin beta" FT /protein_id="AAR96398.1" FT /translation="MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRLFES FT FGDLFTPDAVMGNPKVKAHGKKVLGAFSDGPAHLDNLKGTFATLSELHCDKLHVDPENF FT RLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH" XX SQ Sequence 647 BP; 159 A; 158 C; 165 G; 165 T; 0 other; acatttgctt ctgacacaac tgtgttcact agcaacctca aacagacacc atggtgcacc 60 tgactcctga ggagaagtct gccgttactg ccctgtgggg caaggtgaac gtggatgaag 120 ttggtggtga ggccctgggc aggctgctgg tggtctaccc ttggacccag aggctctttg 180 agtcctttgg ggatctgttc actcctgatg ctgttatggg caaccctaag gtgaaggctc 240 atggcaagaa agtgctcggt gcctttagtg atggcccggc tcacctggac aacctcaagg 300 gcacctttgc cacactgagt gagctgcact gtgacaagct gcacgtggat cctgagaact 360 tcaggctcct gggcaacgtg ctggtctgtg tgctggccca tcactttggc aaagaattca 420 ccccaccagt gcaggctgcc tatcagaaag tggtggctgg tgtggctaat gccctggccc 480 acaagtatca ctaagctcgc tttcttgctg tccaatttct attaaaggtt cctttgttcc 540 ctaagtccaa ctactaaact gggggatatt atgaagggcc ttgagcatct ggattctgcc 600 taataaaaaa catttatttt cattgaaaaa aaaaaaaaaa aaaaaaa 647 //

  26. Bio::SeqIO use Bio::SeqIO; my $in = Bio::SeqIO->new( -file => "./NAT2.gbwithparts" ); my $out = Bio::SeqIO->new( -file => ">./NAT2.embl", -format=> 'EMBL' ); while ( my $seq = $in->next_seq() ) { print $seq->display_id(),"\t",$seq->desc(),"\n"; $out->write_seq($seq); }

  27. Bio::DB::Query::GenBank use Bio::DB::Query::GenBank; use Bio::DB::GenBank; # get a stream via a query string my $query = Bio::DB::Query::GenBank->new( -query =>'NAT2[Gene Name] AND Homo sapiens[Organism] AND mRNA[Filter]', -db => 'nucleotide'); my $count = $query->count(); print "Found $count entries\n"; # get a genbank database handle my $gb = new Bio::DB::GenBank; my $stream = $gb->get_Stream_by_query($query); while (my $seq = $stream->next_seq) { print $seq->display_id(),"\t",$seq->desc(),"\n"; }

  28. Bio::Location use Bio::SeqIO; my $in = Bio::SeqIO->new( -file => "./ame_ref_chrLG16.gbk" ); while ( my $seq = $in->next_seq() ) { print $seq->display_id, "\n"; for my $feature ( $seq->get_SeqFeatures ) { next unless ( $feature->primary_tag eq 'mRNA'); if ($feature->has_tag('gene')) { my ($name) = $feature->get_tag_values('gene'); my $exonct = 1; print "\t",$name,"\n"; for my $exon ($feature->location->each_Location ) { # print " ",$exon->start, "..",$exon->end,"\n"; my $exonseq = $seq->trunc($exon); $exonseq->display_id($name.".exon".$exonct++); # print "\t\t",$exonseq->display_id(),"\n"; } print "Exon count: $exonct\n"; my $spliced = $feature->spliced_seq; print $spliced,"\n“; # print $spliced->seq(),"\n"; } } }

  29. Bio::SearchIO use Bio::SearchIO; my $searchio = new Bio::SearchIO( -format => 'blast', -file => 'blast/blast_output'); while( my $result = $searchio->next_result ) { print $result->query_accession(),"\n"; while( my $hit = $result->next_hit ) { print "\t",$hit->accession(),"\t",$hit->description(),"\n"; while( my $hsp = $hit->next_hsp ) { print "\t\t",'Score: ',$hsp->score(),"\n"; print "\t\t",'Identity: ',$hsp->percent_identity(),"\n"; print "\t\t",'e-value: ',$hsp->evalue(),"\n"; print "\t\t",'Query (start,end): ', $hsp->start('query'),', ',$hsp->end('query'),"\n"; print "\t\t",'Subject (start,end): ', $hsp->start('subject'),', ',$hsp->end('subject'),"\n"; } } }

  30. Blast output >gi|9945313|ref|NM_001967.2| Homo sapiens eukaryotic translation initiation factor 4A, isoform 2 (EIF4A2), mRNA Length = 1864 Score = 323 bits (163), Expect = 9e-88 Identities = 169/171 (98%) Strand = Plus / Plus Query: 59 gcatggtgacatggaccagaaggagagagatgttatcatgagggaattccggtcagggtc 118 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Sbjct: 924 gcatggtgacatggaccagaaggagagagatgttatcatgagggaattccggtcagggtc 983 Query: 119 aagtcgtgttctgatcactactgacttgtaggctcgcgggattgatgtgcaacaagtgtc 178 ||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||| Sbjct: 984 aagtcgtgttctgatcactactgacttgttggctcgcgggattgatgtgcaacaagtgtc 1043 Query: 179 ttgggttataaattatgatctacctaccaatcgtgaaaactatattcacag 229 || |||||||||||||||||||||||||||||||||||||||||||||||| Sbjct: 1044 tttggttataaattatgatctacctaccaatcgtgaaaactatattcacag 1094 Score = 208 bits (105), Expect = 4e-53 Identities = 108/109 (99%) Strand = Plus / Plus Query: 340 gaattggcggagggggtcgatttgggaggaaaggtgtggctataaactttgttactgaag 399 |||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||| Sbjct: 1094 gaattggcagagggggtcgatttgggaggaaaggtgtggctataaactttgttactgaag 1153 Query: 400 aagacaagaggattcttcgtgacattgagactttctacaatactacagt 448 ||||||||||||||||||||||||||||||||||||||||||||||||| Sbjct: 1154 aagacaagaggattcttcgtgacattgagactttctacaatactacagt 1202 BLASTN 2.2.16 [Mar-25-2007] Reference: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402. Query= CTC-MA0003-010602-021-H11 (451 letters) Database: /data/db/hs.fna 21,144 sequences; 56,617,273 total letters Searching..................................................done Score E Sequences producing significant alignments: (bits) Value gi|9945313|ref|NM_001967.2| Homo sapiens eukaryotic translation ... 323 9e-88 gi|4503528|ref|NM_001416.1| Homo sapiens eukaryotic translation ... 78 9e-14 gi|32698801|ref|NG_002809.1| Homo sapiens eukaryotic translation... 62 5e-09

  31. Bio::Graphics use Bio::SearchIO; use Bio::Graphics; use Bio::SeqFeature::Generic; my $searchio = new Bio::SearchIO( -format => 'blast', -file => 'blast/blast_output'); while( my $result = $searchio->next_result ) { my $query_accession = $result->query_accession(); my $panel = Bio::Graphics::Panel->new(-length => $result->query_length(),-width => 800, -pad_left=>10, -pad_right=>10); my $full_length = Bio::SeqFeature::Generic->new(-display_name=>$query_accession, -start=>1, -end=>$result->query_length()); $panel->add_track($full_length, -glyph => 'arrow', -tick => 2, -fgcolor => 'black', -double => 1, -label=>1); my $track = $panel->add_track(-glyph => 'graded_segments', -label => 1, -min_score=>0, -max_score=>1000); while( my $hit = $result->next_hit ) { my $hit_accession = $hit->accession(); while( my $hsp = $hit->next_hsp ) { my $feature = Bio::SeqFeature::Generic->new(-display_name=> $hit_accession, -score=> $hsp->score(), -start=> $hsp->start('query'), -end=> $hsp->end('query')); $track->add_feature($feature); } } open(OUT, ">".$query_accession.'.png'); binmode OUT; print OUT $panel->png; close(OUT); }

  32. Referências http://java.sun.com/docs/books/tutorial/java/concepts/ http://perldoc.perl.org/perlboot.html http://www.bioperl.org/ http://www.ncbi.nlm.nih.gov/pubmed/12368254 http://docs.bioperl.org/ http://lgmb.fmrp.usp.br/~daniel/downloads/cvbioinfo2010 http://stein.cshl.org/genome_informatics/BioGraphics/

  33. Perguntas… Daniel Guariz Pinheiro daniel@lgmb.fmrp.usp.br http://lgmb.fmrp.usp.br/~daniel/

  34. Exercícios http://lgmb.fmrp.usp.br/~daniel/downloads/cvbioinfo2010/exercises.txt “There’ s More Than One Way To Do It” TIMTOWTDI

  35. Exercício 1 1. Obter e imprimir em um arquivo as seguintes informações do cromossomo 16 (contig genômico) de Apis mellifera (ame_ref_chrLG16.gbk): Número de acesso dos contigs genômicos <TAB> tamanho da seqüência <TAB> símbolo do gene (Ex.: LOC413891) <TAB><TAB> coordenada do exon (Ex.: 8865..9971) <TAB> informação da orientação (strand: plus(1)/minus(-1)) Exemplo: NW_001253164 745157 LOC408563 666589..666822 1 672756..672973 1 673083..673254 1 673344..673483 1 673847..674257 1 674369..674599 1 674724..675077 1 679210..679317 1 680024..681271 1 681362..681649 1 681734..681958 1 682047..682250 1 682360..682591 1 682805..683048 1

  36. Exercício 2 2. Obter e imprimir em um arquivo as seguintes informações do arquivo de mRNAs do gene NAT2 (NAT2.gbwithparts) somente para o número de acesso iniciado por NM_ : Número de acesso GenBank Localização no cromossomo exon número do exon coordenada (start..end) Exemplo: NM_000015 8p22 exon 1 1..101 exon 2 102..1317

  37. Exercício 3 3. Fazer uma consulta no GenBank das formas alternativas do gene BRCA1 () através da BioPerl, obter as seguintes informações e imprimir na tela: Número de acesso<TAB>Descrição<TAB>números dos exons que compõe essa forma alternativa entre ";" Query: BRCA1[Gene Name] AND Homo sapiens[Organism] AND RefSeq[Filter] AND mRNA[Filter] db: nucleotide Exemplo: NM_007305 Homo sapiens breast cancer 1, early onset (BRCA1), transcript variant BRCA1-delta9-10-11b, mRNA. 1b;3;4;5;6;7;8;11a;12;13;14a;15;16;17;18;19;20;21;22;23;24

  38. Exercício 4 4.1. Baixar o arquivo (exercises/ex4/NW_001253146.gbk) com o contig genômico do cromossomo 16 de Apis mellifera; 4.1. Extrair a seqüência completa para um outro arquivo no formato fasta (contig.fna) e extrair as seqüências dos transcritos (mRNAs) após evento de splicing (spliced_seqs) e compor um arquivo multi-fasta com essas seqüências (transcripts.fna) . Utilizar o transcript_id (Ex.: XM_397330.3) como ID da sequência e o símbolo do Gene (Ex.: LOC413891) como descrição; Exemplo: > XM_397330.3 LOC413891 GAATCGAGATATCGAATCGAATTAAGTCAAGTAAGAATGAAATTAAATCGATTTAAAGCA ... 4.2. Gerar um arquivo fasta (proteins.fna) com as seqüencias de proteínas traduzidas a partir das informações do CDS. Utilizar o protein_id (Ex.: XP_397330.2) como ID da sequência e o produto gênico (product) (Ex.: similar to CG1970-PA isoform 1) como descrição; Exemplo: >XP_397330.2 similar to CG1970-PA isoform 1 MTVRALGPFFRSNNLLFRTLNENVVTNNRIIPLVNIESQRREAHQWMPDLDEYKHLLKHE ...

  39. Exercício5 5. Baixar o arquivo (ex5/blast_out_5.txt), resultado de blast de uma EST x seqüencias de referência (RefSeq). 5.1. Imprimir o nome da seqüência (query) e somente para os HITS com score > 100 . Imprimir o número de acesso GenBank (Ex.: NM_001967) e descrição (Ex.: Homo sapiens eukaryotic translation initiation factor 4A, isoform 2 (EIF4A2), mRNA). Imprimir em seguida os HSPs (como no exemplo abaixo) desse HIT com score >= 150; Exemplo: CTC-MA0003-010602-021-H11 NM_001967 Homo sapiens eukaryotic translation initiation factor 4A, isoform 2 (EIF4A2), mRNA Score: 163 Identity: 98.8304093567251 e-value: 9e-88 Query (start,end): 59, 229 Subject (start,end): 924, 1094

  40. API API - Application Programming Interface DBD – Data Base Driver RDBMS - Relational Database Management System Módulo DBI • Database independent interface for Perl • O módulo DBI define um conjunto de métodos, variáveis e convenções que provêm uma interface consistente e independente do base de dados atual que está sendo utilizada; • Conexões: MySQL, MSSQL, Oracle, Informix, PostgreSQL, SQLite, etc. • DBD::mysql - MySQL driver para DBI • Interface entre a Perl e o MySQL RDBMS • DBD::SQLite - SQLitedriver para DBI • Interface entre a Perl e SQLite RDBMS

  41. ConceitosemBancos de Dados • Sistemas de Gerenciamento de Bancos de Dados • Programas de computador responsáveis pelo gerenciamento de uma base de dados. • Provê ferramentas e mecanismos e convenções que permitem gerenciar o acesso, a manipulação e a organização dos dados. • MySQL, Oracle, PostgreSQL, SQLite, etc. • Modelo Relacional • Inspirado na Álgebra Relacional • Linguagem SQL (StructuredQueryLanguage) • Permite realizar operações relacionais, de consulta e inserção de dados; • MySQL – SGBD relacional • SQLite – SGBD relacionalsimplificado

  42. Representação dos Dados • Tabelas • Registros (linhas) • Campos (colunas)

  43. Relacionamentos 1:n cidade aluno curso

  44. Relacionamentos n:m aula aluno matricula

  45. Diagrama de Entidades e Relacionamentos (DER)

  46. Métodos DBI - conexão dbi:DriverName:database_name dbi:DriverName:database_name@hostname:portdbi:DriverName:database=database_name;host=hostname;port=port Data source my $data_source = “dbi:SQLite:test.db”; SQLite Conexão my $dbh = DBI->connect($data_source, $username, $auth); Desconexão $dbh->disconnect();

  47. Métodos DBI – DML/DDL DML - Linguagem de Manipulação de Dados INSERT UPDATE DELETE DDL - Linguagem de Definição de Dados CREATE DROP ALTER TABLE CREATE INDEX ALTER INDEX DROP INDEX CREATE VIEW DROP VIEW $dbh->do($statementl); Exemplo: $dbh->do(“DELETE FROM matricula”);

  48. Métodos DBI - DQL DQL - Linguagem de Consulta de Dados SELECT my $sth = $dbh->prepare($statement); $sth->execute(); while ( my @row = $sth->fetchrow_array ) { print "@row\n"; } Métodos (prepare/execure/fetch) my $ary_ref = $dbh->selectall_arrayref($statement); Exemplos my $ary_ref = $dbh->selectall_arrayref(“SELECT id, nome FROM aluno”); my @row_ary = $dbh->selecrow_array(“SELECT id, nome FROM aluno WHERE id=1”);

  49. Exercício6 6. Utilizar o módulo DBI para manipular um Banco de Dados 6.1. Criar um banco de dados (test.db) usando o SQLite e criar uma tabela (transcript) com id, acc e length para armazenar um id numérico chave, um número de acesso GenBank e o tamanho do transcrito; $ sqlite3 test.db sqlite> CREATE TABLE transcript (id int not null primary key, acc varchar(20) not null, length int not null); sqlite> <CTRL+D> 6.2. Inserir as informações no Banco obtendo a partir das informações contidas no arquivo (exercises/ex4/NW_001253146.gbk) que contém contig genomico do cromossomo 16 de Apis mellifera; 6.3. Recuperar as informações da tabela transcripts e imprimi-las na tela de forma tabulada. Exemplo: 1 XM_397330.3 2358 2 XM_397331.3 1435 3 XM_395650.1 1128 4 XM_396002.1 393 5 XM_393027.3 1443 6 XM_395047.3 1677 7 XM_395046.3 3428

  50. Módulo CGI CGI - Common Gateway Interface Manipular requisições e respostas HTTP – Páginas HTML dinâmicas #!/usr/bin/perl use strict; use warnings; use CGI; my $q = CGI->new(); print$q->header; # cria o cabeçalho HTTP print $q->start_html('hello world'); my $nome = $q->param(‘nome’) || ‘’; print $q->h1('hello world'), $q->br(), $nome; print $q->end_html;

More Related