Perl modules for the life sciences

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Ana Paula B. Barboza Ivana Xavier Rodrigues
Instalação e Configuração
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Estudo de Caso, modelo Oracle 10g
Aula 3 – DB2 Express-C Autor:
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Java Conexão com Banco de Dados
Banco de Dados SQL TRIGGERS (Gatilhos)
Interação entre objetos
Maurício Edgar Stivanello
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Sistema Gerenciador de Banco de Dados SGBD
Desenvolvimento Baseado em CGI Material cedido pelo Prof
Introduction of RefSeq and LocusLink: resources at the NCBI
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Material III-Bimestre Wagner Santos C. de Jesus
7 Abstração Genérica Unidades genéricas e instanciação.
Programação PERL Israel Tojal da Silva
The Bioperl toolkit Daniel Guariz Pinheiro. O que é BioPerl ? Projeto de colaboração open-source internacional (1995- …) Biblioteca de módulos Perl Soluções.
Documentando con Javadoc
MySQL Gerdson de Araújo Silva Universidade Federal de Alagoas Maceió-AL, 21 de maio de 2009.
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Banco de dados Profª Kelly Medeiros.
Administração de Sistemas de Informação Banco de Dados
Paradigmas de programação
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Monitoria GDI Aula Prática
Conceitos básicos de orientação a objetos
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Bancos de Dados Espaciais
Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
Monitoria GDI Aula Prática
Design Patterns / Acesso ao banco de dados (java.sql)
Tipos de Linguagens do Banco de Dados
Introdução ao Hibernate
1.
III – O Modelo OR Estudo de Caso, modelo Oracle 10g.
Monitoria GDI Aula Prática
Desenvolvendo um script SQL
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Banco de dados.
BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de Arquivos em Java.
Configuração do Ambiente de programação
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
SCC Bancos de Dados e Suas Aplicações
SQLite Banco de Dados II.
Ricardo Ferreira Schiavo
Banco de Dados I I Comandos SQL
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
7P/SI – 2010/01 Prof. Carlos Alberto Seixas. Agenda Visão Geral sobre os Conceitos e Implementação sobre SGBs MySQL Revisão das Práticas Práticas 1 e.
Conceitos básicos Professor Esp. Diego André Sant’Ana
VBA – Visual Basic para Aplicativos
* Com o avanço das descobertas acerca dos Ácidos Nucléicos e das Proteínas surgiu o Dogma da biologia Molecular; * Surgimento dos métodos de sequenciamento.
Linguagem de definição de dados - SQL
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

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. 1

Open Bioinformatics Foundation Introdução O que é BioPerl ? Projeto de colaboração open-source internacional (1996- …) Biblioteca de módulos Perl Soluções para a Pesquisa em Bioinformática, Genômica e Ciências Biológicas; Tarefas complexas e rotineiras utilizando algumas poucas linhas de código; Análise e anotação de seqüências e outras áreas; Licenciado sob a Perl Artistic License; Open Bioinformatics Foundation (2002-...) BioPerl é um projeto de colaboração open-source internacional, que reúne biólogos, bioinformatas e cientistas da computação que trabalham em um conjunto de módulos (ou componentes) da linguagem de programação Perl para o desenvolvimento de soluções em Bioinformática; O projeto BioPerl é coordenado pela Open Bioinformatics Foundation, uma organização sem fins lucrativos e composta por voluntários interessados em colaborar com o desenvolvimento open-source da Bioinformática. O pacote BioPerl é licenciado sob a Perl Artistic License A Artistic License é uma licença livre na medida em que concede aos utilizadores a possibilidade de usarem, modificarem e redistribuírem a obra como quiserem desde que indiquem o nome do criador, incluam o código original e expliquem de que forma é que o código foi modificado. Inicialmente com análise e anotação de sequencias, mas foi expandido para outras áreas: como genética de populações, ontologias, ... Open Bioinformatics Foundation 2

Reinvenção da roda Pode não ser tão eficiente quanto o esperado! De fato a BioPerl evita que termos que reinventar a roda, pois fornece uma série de métodos otimizados e testados que realmente evitam ter que codificar muitas linhas de código que muitas vezes não são tão eficientes quanto o esperado. Pode não ser tão eficiente quanto o esperado!

VSNS-BCD – Universität Bielefeld 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 Esses são os principais artigos que referenciam ao BioPerl. O primeiro, de Jason Stajich, descreve a arquitetura geral do pacote, seu domínio e aplicações. O segundo é de Lincoln Stein e descreve o Gbrowse uma das principais ferramentas de visualização de genomas. O terceiro, também de Stajich, descreve um pacote GenPop para estudos de genética de populações. A organização da BioPerl iniciou durante um curso (como este) na qual os alunos e coordenadores colaboraram com código e comentários para a BioPerl, depois reuniram outros pesquisadores na área de genômica. Ao lado estão os atuais desenvolvedores responsáveis pelo BioPerl. Em destaque, Jason Stajich, que é presidente da OBF e Lincoln Stein, responsáveis por dois dos mais utilizados módulos da Perl, o módulo CGI, para desenvolvimento de interfaces web, e GD para interação com uma das principais bibliotecas para a manipulação de imagens. Lincoln Stein Sendu Bala Christopher Fields Hilmar Lapp Heikki Lehväslaiho Aaron Mackey Brian Osborne 4

Citações Dados (www.bioperl.org) 1998 – meados 2008 ~600 (projetos e artigos) ~44 (livros) 3 (patentes) Apenas para exemplificar a popularidade e a abrangência da BioPerl, eis alguns dados de citações em publicações que usam ou descrevem a BioPerl. De 1998 quando surgiram os primeiros artigos até a meados de 2008. São aprox. 600 projetos e artigos; 44 livros e 3 patentes. Abaixo, o gráfico mostra o crescimento no número de publicações anuais de artigos indexados no PubMed que citam o BioPerl. 5

Paradigma de programação Programação Modular Programação Orientada a Objetos Representação dos conceitos em um sistema Objetos Classe (definição) Comportamento (métodos) Estados possíveis (atributos) Relacionamento com outros objetos Módulos, ou componentes de uma linguagem de programação são um conjunto de subrotinas, ou seja instruções em código para desenvolver determinado procedimento ou função. A programação modular é um paradigma de programação no qual são desenvolvidos módulos (com um escopo bem definido, com uma determinada finalidade), que possuem em si métodos implementados para um propósito específico. A idéia é que esses métodos possam ser utilizados em uma determinada aplicação e re-utilizados em outras aplicações. Na realidade a BioPerl é desenvolvida utilizando uma extensão desse paradigma de programação, a programação orientada a objetos, a qual eu pretendo fazer uma breve introdução. Representação dos conceitos em um sistema é feita através de objetos de uma classe. A classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos. FUNCIONAMENTO: RELACIONAMENTOS E TROCAS DE MENSAGENS ENTRE OS OBJETOS 6

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

Conceitos - II Herança: (Especialização/generalização) é o mecanismo pelo qual uma classe (sub- classe) pode estender outra classe (super-classe), aproveitando seus métodos e atributos. No modelo a objetos, uma sub-classe possui todos os atributos e todas as operações da super-classe. A sub-classe pode acrescentar alguns atributos e métodos. Ela pode também redefinir alguns métodos da super-classe. Ela não pode tirar nenhuma propriedade da super-classe. Encapsulamento: Detalhes da implementação são transparentes a quem manipula o objeto; Polimorfismo: É o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos. Interface: A Interface é uma classe que possui apenas as especificações sem a implementação. Assinatura, isto é o nome do método, os argumentos e o tipo de resposta 8

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

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

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) ... Apropriação – vantagem e desvantagem

POO em Perl Definições simplificadas: 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; Sequence.pm 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; use Sequence; my $seq = Sequence->new('Seq1','ACCACGATCACATG','+'); $seq->display_fasta_sequence(); seq.pl A linguagem de programação Perl não é uma linguagem Orientada a Objetos nativa. Ela não foi inicialmente projetada para ser uma linguagem de programação orientada a objetos. Porém, ela permite a implementação de sistemas de acordo com esse paradigma de programação, permitindo a implementação de todos esses conceitos descritos anteriormente. 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; 12

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;

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 Com a API é possível utilizar determinadas funcionalidades sem envolver-se em detalhes da implementação. Bio::Perl - API simplificada – provê acesso a funções mais comumente usadas. Exemplo: # Lê um todas as seqüências de um arquivo multifasta my @seq_object_array = read_all_sequences($filename,'fasta');

Arquitetura geral 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); A arquitetura do conjunto de pacotes BioPerl é baseada nos princípios da orientação objeto, para construção de módulos encapsulados, onde tarefas complexas podem ser realizadas através de uma única chamada a um método, módulos genéricos e reutilizáveis em múltiplas aplicações. O BioPerl se baseia na definição de APIs estáveis (isso é um aspecto chave no BioPerl), que permitem a extensão das funcionalidades sem modificar completamente o sistema. Já que a API é um contrato de como os métodos são invocados e o qual é o resultado esperado, independentemente de como isso é feito. Imagine que o modo de como uma operação é realizada tenha que ser alterado. Isto pode ser feito sem ter que alterar o código que invoca esse procedimento. O BioPerl segue determinados princípios de design: 15

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) Esse princípio é baseado na metodologia de especificar a um dado módulo, tipos abstratos de dados, definindo como um dado módulo se comportará sem especificar o mecanismo pelo qual ele o fará. Utilizando o conceito de Interface que já foi dito anteriormente. 16

Generalização de rotinas comuns (único mó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

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 Bio::Seq::SeqFactory – decide se vai criar um objeto da classe que trata de seqüência de nucleotídeos ou que trata 18

Características Escrito puramente em Perl Requer compilador 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

Principais Módulos 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

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

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

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 repeat test author someone 1 2 3 tag tag value tag tag value

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"; } 24

Principais Formatos dos BDs Flat files do NCBI/EBI EMBL ID AY509193 standard; mRNA; HUM; 647 BP. XX AC AY509193; SV AY509193.1 DT 20-JAN-2004 (Rel. 78, Created) DT 16-APR-2005 (Rel. 83, Last updated, Version 2) DE Homo sapiens hemoglobin beta mRNA, complete cds. KW . OS Homo sapiens (human) OC Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; Mammalia; OC Eutheria; Euarchontoglires; Primates; Catarrhini; Hominidae; Homo. 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" FASTA (Pearson) >gi|28302128|ref|NM_000518.4| Homo sapiens hemoglobin, beta (HBB), mRNA ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGA GGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC AGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATG CTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC TCACCTGGACAACCTCAAGGGCACCTTTGCCACACTGAGTGAGCTGCACTGTGACAAGCTGCACGTGGAT CCTGAGAACTTCAGGCTCCTGGGCAACGTGCTGGTCTGTGTGCTGGCCCATCACTTTGGCAAAGAATTCA CCCCACCAGTGCAGGCTGCCTATCAGAAAGTGGTGGCTGGTGTGGCTAATGCCCTGGCCCACAAGTATCA CTAAGCTCGCTTTCTTGCTGTCCAATTTCTATTAAAGGTTCCTTTGTTCCCTAAGTCCAACTACTAAACT GGGGGATATTATGAAGGGCCTTGAGCATCTGGATTCTGCCTAATAAAAAACATTTATTTTCATTGC GenBank LOCUS NM_000518 626 bp mRNA 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 strongly associated with severity of HbE/beta(0)-thalassemia JOURNAL Clin. Genet. 72 (6), 497-505 (2007) PUBMED 17894837 REMARK GeneRIF: Forty-five SNPs within the interval including the LCR region and the delta gene showed strong association with disease severity. exon 366..626 /gene="HBB" /inference="alignment:Splign" /number=3 polyA_signal 602..607 polyA_site 626 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 // /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 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 /inference="alignment:Splign" /number=1 CDS 51..494 /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]" 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 // E estão armazenadas em diversos formatos em um dos diversos bancos de dados vistos anteriormente, cada grupo armazena as seqüências em seu próprio padrão utilizando um identificador também próprio, porém ao longo do tempo foram estabelecidos alguns padrões que hoje são os mais utilizados e reconhecidos ... O padrão é importante para que se possa recuperar as informações e fazer o intercâmbio de informações. A maioria destes formatos foram criados pensando no computador não em você. O Bioinformata deve saber como ler e manipular estes formatos. O formato FASTA é uma das formas mais simples de representação da seqüencia. Uma seqüência em formato FASTA inicia com uma única linha descrevendo o nome da seqüência, seguida por linhas contendo a seqüência em si. A linha de descrição se distingue das linhas da seqüência por conter em seu início o sinal de maior  (">"). Recomenda-se que todas as linhas não possuam mais que 80 caracteres de comprimento. O Formato GenBank é mais completo, útil para os pesquisadores encontrarem facilmente a informação, permite apresentar além da seqüência, uma série de outras informações referente à anotação dessa seqüência por especialistas... (Mostrar alguns campos). Os Identificadores também são importantes e seguem um padrão próprio pra cada grupo... Outro Formato é o do EMBL, que assim como o GenBank também possui além da seqüência informações adicionais... Através de métodos da bioperl, é possível converter de um formato para o outro, devido à padronização. Remark – Observação GeneRIF - Gene Reference Into Function – anotação funcional de genes. HPRD – Human Protein Reference Database – informações sobre proteínas e outras informações relacionadas. (http://www.ebi.ac.uk/help/Fasta_frame.html) É importante ficarem atentos aos identificadores eles são necessários para relacionar as informações. Durante o curso e até mesmo após o curso vai surgir a necessidade de transitar entre essas bases de dados. Divisões do GenBank (Divisão Funcional/Divisão Splign: algorithms for computing spliced alignments with identification of paralogs. Kapustin Y, Souvorov A, Tatusova T, Lipman D. National Center for Biotechnology Information, National Library of Medicine, National Institutes of Health, Bethesda, MD 20814, USA. kapustin@ncbi.nlm.nih.gov BACKGROUND: The computation of accurate alignments of cDNA sequences against a genome is at the foundation of modern genome annotation pipelines. Several factors such as presence of paralogs, small exons, non-consensus splice signals, sequencing errors and polymorphic sites pose recognized difficulties to existing spliced alignment algorithms. RESULTS: We describe a set of algorithms behind a tool called Splign for computing cDNA-to-Genome alignments. The algorithms include a high-performance preliminary alignment, a compartment identification based on a formally defined model of adjacent duplicated regions, and a refined sequence alignment. In a series of tests, Splign has produced more accurate results than other tools commonly used to compute spliced alignments, in a reasonable amount of time. CONCLUSION: Splign's ability to deal with various issues complicating the spliced alignment problem makes it a helpful tool in eukaryotic genome annotation processes and alternative splicing studies. Its performance is enough to align the largest currently available pools of cDNA data such as the human EST set on a moderate-sized computing cluster in a matter of hours. The duplications identification (compartmentization) algorithm can be used independently in other areas such as the study of pseudogenes.

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

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

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

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

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

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

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/

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

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

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

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

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

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; >XP_397330.2 similar to CG1970-PA isoform 1 MTVRALGPFFRSNNLLFRTLNENVVTNNRIIPLVNIESQRREAHQWMPDLDEYKHLLKHE

Exercício 5 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

Módulo DBI Database independent interface for Perl API 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 - SQLite driver para DBI Interface entre a Perl e SQLite RDBMS RDBMS - Relational Database Management System DBD – Data Base Driver API - Application Programming Interface

Conceitos em Bancos 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 (Structured Query Language) Permite realizar operações relacionais, de consulta e inserção de dados; MySQL – SGBD relacional SQLite – SGBD relacional simplificado

Representação dos Dados Tabelas Registros (linhas) Campos (colunas) id nome cidade estado curso 1 Paulo Henrique Alves Porto Velho RO Biologia Experimental 2 Matheus Carvalho Bürger Limeira SP Informática Biomédica 3 Ricardo Kazuhiro Kavanishi Ribeirão Preto 4 Poliana Fernanda Giachetto Campinas Produção Animal 5 Luiz Carlos Bertucci Barbosa Araraquara Biotecnologia 6 André M. Ribeiro dos Santos Belém PA Ciências Biológicas 7 Sylvain Darnet Biologia molecular e celular 8 Luisa Warchavchik Hugerth São Paulo Ciências Moleculares 9 Maria Izabela Ruz Caffé 10 Ana Luiza Assin Squillace Mogi Mirim 11 Myna Nakabashi 12 Guilherme Fernandes Lourenço de Oliveira Franca Engenharia Biotecnológica 13 André Luiz de Oliveira Jaboticabal 14 Júlio César Botelho de Souza 15 Fernando Moral Mayoral Sao Jose dos Campos 16 Orzenil Bonfim da Silva Junior Brasilia DF Química 17 Diego Martinez Salvanha Sistemas de Informação 18 Leticia Regina Lima Ribeirao Preto 19 Eric Hainer Ostroski Santo André Bioinformática 20 Guilherme da Silva Pereira Piracicaba Genética e Melhoramento de Plantas

Relacionamentos 1:n cidade aluno curso id nome estado 1 Porto Velho RO 2 Limeira SP 3 Ribeirão Preto 4 Campinas 5 Araraquara 6 Belém PA 7 São Paulo 8 Mogi Mirim 9 Franca 10 Jaboticabal 11 Sao Jose dos Campos 12 Brasilia DF 13 Santo André 14 Piracicaba cidade aluno id nome cidade_id curso_id 1 Paulo Henrique Alves 2 Matheus Carvalho Bürger 3 Ricardo Kazuhiro Kavanishi 4 Poliana Fernanda Giachetto 5 Luiz Carlos Bertucci Barbosa 6 André M. Ribeiro dos Santos 7 Sylvain Darnet 8 Luisa Warchavchik Hugerth 9 Maria Izabela Ruz Caffé 10 Ana Luiza Assin Squillace 11 Myna Nakabashi 12 Guilherme Fernandes Lourenço de Oliveira 13 André Luiz de Oliveira 14 Júlio César Botelho de Souza 15 Fernando Moral Mayoral 16 Orzenil Bonfim da Silva Junior 17 Diego Martinez Salvanha 18 Leticia Regina Lima 19 Eric Hainer Ostroski 20 Guilherme da Silva Pereira id nome 1 Biologia Experimental 2 Informática Biomédica 3 Produção Animal 4 Biotecnologia 5 Ciências Biológicas 6 Biologia molecular e celular 7 Ciências Moleculares 8 Engenharia Biotecnológica 9 Química 10 Sistemas de Informação 11 Bioinformática 12 Genética e Melhoramento de Plantas curso

Relacionamentos n:m aula aluno matricula aluno_id aula_id 1 2 3 id nome 1 Introdução a Perl 2 Introdução a BioPerl 3 Introdução a Linux matricula aluno_id aula_id 1 2 3

Diagrama de Entidades e Relacionamentos (DER)

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

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

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

Exercício 6 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

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;

Exercício 7 7. Utilizar o módulo CGI para criar uma página HTML formatada com as informações de um determinado transcrito, recuperadas do banco de dados (test.db) (utilizando o módulo DBI), passando por parâmetro um id de transcrito.