A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Perl modules for the life sciences

Apresentações semelhantes


Apresentação em tema: "Perl modules for the life sciences"— Transcrição da apresentação:

1 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

2 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 ( ) 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

3 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!

4 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 Oct;12(10): -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 Oct;12(10): Gbrowse – Visualização de Genomas 3: Stajich JE, Hahn MW. Disentangling the effects of demography and selection in human history. Mol Biol Evol Jan;22(1): 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

5 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

6 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

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

8 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

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

12 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

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 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 = read_all_sequences($filename,'fasta');

15 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

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

17 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

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

19 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

20 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

21 Documentação $ perldoc Bio::SeqIO 21

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 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); = $seqobj->get_SeqFeatures(); foreach my $feat ) { 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

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('J '); #my $seqobj = $gb->get_Seq_by_gi('195052'); = $seqobj->get_SeqFeatures(); foreach my $feat ) { 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

25 Principais Formatos dos BDs Flat files do NCBI/EBI
EMBL ID AY standard; mRNA; HUM; 647 BP. XX AC AY509193; SV AY 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 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| |ref|NM_ | Homo sapiens hemoglobin, beta (HBB), mRNA ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGA GGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC AGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATG CTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC TCACCTGGACAACCTCAAGGGCACCTTTGCCACACTGAGTGAGCTGCACTGTGACAAGCTGCACGTGGAT CCTGAGAACTTCAGGCTCCTGGGCAACGTGCTGGTCTGTGTGCTGGCCCATCACTTTGGCAAAGAATTCA CCCCACCAGTGCAGGCTGCCTATCAGAAAGTGGTGGCTGGTGTGGCTAATGCCCTGGCCCACAAGTATCA CTAAGCTCGCTTTCTTGCTGTCCAATTTCTATTAAAGGTTCCTTTGTTCCCTAAGTCCAACTACTAAACT GGGGGATATTATGAAGGGCCTTGAGCATCTGGATTCTGCCTAATAAAAAACATTTATTTTCATTGC GenBank LOCUS NM_ bp mRNA linear PRI 27-JAN-2008 DEFINITION Homo sapiens hemoglobin, beta (HBB), mRNA. ACCESSION NM_000518 VERSION NM_ GI: 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), (2007) PUBMED REMARK GeneRIF: Forty-five SNPs within the interval including the LCR region and the delta gene showed strong association with disease severity. exon /gene="HBB" /inference="alignment:Splign" /number=3 polyA_signal polyA_site 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 ]; oxygen transport [PMID ] [PMID ]; positive regulation of nitric oxide biosynthesis [PMID ]; transport“ /note="beta globin chain" /codon_start=1 /product="beta globin" /protein_id="NP_ " /db_xref="GI: " /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 /gene="HBB" /inference="alignment:Splign" /number=2 COMMENT REVIEWED REFSEQ: This record has been curated by NCBI staff. The reference sequence was derived from L On Feb 11, 2003 this sequence version replaced gi: 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 /organism="Homo sapiens" /mol_type="mRNA" /db_xref="taxon:9606" /chromosome="11" /map="11p15.5" gene /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 /inference="alignment:Splign" /number=1 CDS /GO_component="hemoglobin complex [PMID ] [PMID ]" /GO_function="heme binding; hemoglobin binding [PMID ]; iron ion binding; metal ion binding; oxygen binding [PMID ]; oxygen transporter activity [PMID ] [PMID ]; selenium binding [PMID ]" FT CDS 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="AAR " 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 tgactcctga ggagaagtct gccgttactg ccctgtgggg caaggtgaac gtggatgaag ttggtggtga ggccctgggc aggctgctgg tggtctaccc ttggacccag aggctctttg agtcctttgg ggatctgttc actcctgatg ctgttatggg caaccctaag gtgaaggctc atggcaagaa agtgctcggt gcctttagtg atggcccggc tcacctggac aacctcaagg gcacctttgc cacactgagt gagctgcact gtgacaagct gcacgtggat cctgagaact tcaggctcct gggcaacgtg ctggtctgtg tgctggccca tcactttggc aaagaattca ccccaccagt gcaggctgcc tatcagaaag tggtggctgg tgtggctaat gccctggccc acaagtatca ctaagctcgc tttcttgctg tccaatttct attaaaggtt cctttgttcc ctaagtccaa ctactaaact gggggatatt atgaagggcc ttgagcatct ggattctgcc taataaaaaa catttatttt cattgaaaaa aaaaaaaaaa aaaaaaa // 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. ( É 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. 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.

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

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

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| |ref|NM_ | 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 [Mar ] 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: Query= CTC-MA 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| |ref|NM_ | Homo sapiens eukaryotic translation e-88 gi| |ref|NM_ | Homo sapiens eukaryotic translation e-14 gi| |ref|NG_ | Homo sapiens eukaryotic translation e-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); 31

32 Referências http://java.sun.com/docs/books/tutorial/java/concepts/

33 Daniel Guariz Pinheiro
Perguntas… Daniel Guariz Pinheiro

34 Exercícios “There’ s More Than One Way To Do It” TIMTOWTDI
“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.: ) <TAB> informação da orientação (strand: plus(1)/minus(-1)) Exemplo: NW_ LOC408563

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 exon

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_ Homo sapiens breast cancer 1, early onset (BRCA1), transcript variant BRCA1-delta b, mRNA b;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_ 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_ ) como ID da sequência e o símbolo do Gene (Ex.: LOC413891) como descrição; Exemplo: > XM_ 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_ ) como ID da sequência e o produto gênico (product) (Ex.: similar to CG1970-PA isoform 1) como descrição; >XP_ similar to CG1970-PA isoform 1 MTVRALGPFFRSNNLLFRTLNENVVTNNRIIPLVNIESQRREAHQWMPDLDEYKHLLKHE

39 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 > 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-MA H11 NM_ Homo sapiens eukaryotic translation initiation factor 4A, isoform 2 (EIF4A2), mRNA Score: 163 Identity: e-value: 9e-88 Query (start,end): 59, 229 Subject (start,end): 924, 1094

40 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

41 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

42 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

43 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

44 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

45 Diagrama de Entidades e Relacionamentos (DER)

46 Métodos DBI - conexão dbi:DriverName:database_name Data source
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();

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 ( = $sth->fetchrow_array ) { print } Métodos (prepare/execure/fetch) my $ary_ref = $dbh->selectall_arrayref($statement); Exemplos my $ary_ref = $dbh->selectall_arrayref(“SELECT id, nome FROM aluno”); = $dbh->selecrow_array(“SELECT id, nome FROM aluno WHERE id=1”);

49 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_ 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: XM_ XM_ XM_ XM_ XM_ XM_ XM_

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;

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


Carregar ppt "Perl modules for the life sciences"

Apresentações semelhantes


Anúncios Google