The Bioperl toolkit Daniel Guariz Pinheiro. O que é BioPerl ? Projeto de colaboração open-source internacional (1995- …) Biblioteca de módulos Perl Soluções.

Slides:



Advertisements
Apresentações semelhantes
Chapter Six Pipelining
Advertisements

ADT – Arvore Binária de Pesquisa
Projeto de Sistemas de Software Luana Lachtermacher
VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2008.
MC542 Organização de Computadores Teoria e Prática
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Listas Encadeadas Circulares Listas Duplamente Encadeadas
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
Prof. José Fernando Rodrigues Júnior Pacotes Material original: Profa. Elaine Parros Machado de Sousa SCC Bancos de Dados e Suas Aplicações.
Ronaldo Celso Messias Correia
Sistemas Operacionais
Banco de Dados Aula 01: Conceitos Básicos
FORTRAN 90 Denise Yumi Takamura.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
SQL procedural – parte 2.
Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada.
Introdução à Consulta 24/3/06. Categorias de comandos DDL : estruturação de objetos de BD Ex. create table, drop index, alter table... DML: manipulação.
Funções de Linha 24/04/06. Funções de Linha Gerar ou construir novo valor não existente na tabela inicial. Valor construído a partir de dados de uma ou.
SQL-3. Novo contexto e necessidade de : Manipular imagens Outros tipos de dados além de texto e números Recuperação de dados mais complexos Níveis distintos.
Introdução à Lógica de Programação
Container Managed Persistent Bean Kellyton Brito Projeto Compose
Universidade Federal da Bahia – Centro de Processamento de Dados – Preview Computadores 1 Uma Ferramenta Orientada a Modelos para Geração de Aplicações.
Prof. Dr. Helder Anibal Hermini
Modelando com UML CMP 231 – Sistemas Embarcados
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 Serviço Worb Treinamento no GRADEp Serviço Worb WorbDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Servidores e Programação Web Redes de Computadores.
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Snap Together Visualization. Introdução - Exploração Visual de Dados Aplicada em conjuntos de dados abstratos. Facilitar a percepção de padrões, tendências,
"Tudo o que acontece, acontece em algum lugar." Gilberto Câmara - INPE Gilberto Câmara - INPE.
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira
ITA - Instituto Tecnológico de Aeronáutica Aula #1.1 – Tutorial de Web Services utilizando o NetBeans 5.5 Disciplina: CE 262 – Ontologias e Web Semântica.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Linguagens para a Web Semântica.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
III – Uso da Infraestrutura Tecnológica Tecnologias de Informação e Comunicação em Desenvolvimento de Produtos III – Uso da Infraestrutura Tecnológica.
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
National Center for Biotechnology Information - é uma das principais fontes de informação sobre genes e proteínas da atualidade.
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias1 Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática.
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Elaine Harada Teixeira de Oliveira – DCC – ICE - UFAM
Orientação a Objetos Uma Introdução à Programação Orientada a Objetos
Entendendo as definições de classe
Comportamento mais sofisticado
The Data Warehouse Toolkit
LINGUAGENS DE PROGRAMAÇÃO
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Programação Concorrente com Thread Java
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Perl modules for the life sciences
Uniform Resource Identifier (URI). Uniform Resource Identifiers Uniform Resource Identifiers (URI) ou Identificador de Recursos Uniforme provê um meio.
Transporte Escolar Fluvial
Usando Java no Oracle Por Edson Almeida Junior
Linguagens de Programação
Tópicos Especiais em Aprendizagem Reinaldo Bianchi Centro Universitário da FEI 2012.
Sincronização com Locks. Locks É um mecanismo de sincronização de processos/threads em que estas devem ser programadas de modo que seus efeitos sobre.
WEKA. Roteiro Introdução Conceitos Exemplos práticos Chamada ao aplicativo.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 30 (1) Empacotamento de Dados em MPI Tópicos: Buffer de Mensagem Empacotamento/Desempacotamento.
Grupo: Bruno W. Gonçalves, Michelle C. Colin, Vanessa S. Conceição.
Análise Sintática – Parte 1
Scala Bruno Barros e Rebeka Gomes
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
Administração e Exploração Avançada de Bases de Dados Mestrado em Engenharia de Sistemas Braga, 2014.
Transcrição da apresentação:

The Bioperl toolkit Daniel Guariz Pinheiro

O que é BioPerl ? Projeto de colaboração open-source internacional (1995- …) Biblioteca de módulos Perl Soluções em Bioinformática Tarefas complexas utilizando algumas poucas linhas de código Licenciado sob a Perl Artistic License Introdução Open Bioinformatics Foundation

Referências 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): : 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): : Stajich JE, Hahn MW. Disentangling the effects of demography and selection in human history. Mol Biol Evol Jan;22(1): Epub 2004 Sep 8. Sendu Bala Christopher Fields Hilmar Lapp Heikki Lehväslaiho Aaron Mackey Brian Osborne Jason Stajich Lincoln Stein Responsáveis BioPerl Principais artigos científicos

Citações 1998 – meados 2008 ~600 (projetos e artigos) ~40 (livros) 3 (patentes)

Paradigma de programação RELACIONAMENTO E TROCA DE MENSAGENS ENTRE OS OBJETOS

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.

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. 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 distinto. Interface: A Interface é uma classe que possui apenas as especificações sem a implementação.

Diagrama de Classes

POO em Perl 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 use Sequence; my $seq = Sequence->new( ' Seq1 ', ' ACCACGATCACATG ', ' + ' ); $seq->display_fasta_sequence(); seq.pl 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;

CPAN Comprehensive Perl Archive Network Coleção de módulos em Perl e documentação Exemplos: DBD::mysql ; DBI; CGI; GD;

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

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)

Generalização de rotinas comuns (único módulo) Exemplos: Operações básicas de IO (input/output) – Bio::Root::IO Operações básicas de acesso web – Bio::Root::HTTPget

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

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

Principais Módulos Bio::SeqSeqüê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::SearchIOObter 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

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); = $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"; } repeat test author someone primary_tag tagtag valuetagtag 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('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"; }

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

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

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

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

Bibliografia epts/ nfo phics/

Perguntas… Daniel Guariz Pinheiro

Exercícios 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 de Apis mellifera (ame_ref_chrLG16.gbk): Número de acesso dos contigs genômicos tamanho da seqüência símbolo do gene (Ex.: LOC413891) coordenada do exon (Ex.: ) informação da orientação (strand: plus(1)/minus(-1)) Exemplo: NW_ LOC

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_ p22 exon exon

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 Descrição números dos exons que compõe essa forma alternativa entre ";" Exemplo: NM_ Homo sapiens breast cancer 1, early onset (BRCA1), transcript variant BRCA1-delta b, mRNA. 1b;3;4;5;6;7;8;11a;12;13;14a;15;16;17;18;19;20;21;22;23;24

Exercício Baixar o arquivo (exercises/ex4/NW_ gbk) com esse contig genômico de Apis mellifera extrair a seqüência completa para um outro arquivo (NW_ fas), no formato fasta, e extrair as seqüências dos transcritos após evento de splicing (spliced_seqs) e compor um outro arquivo multi-fasta com essas seqüências (input.fas). 4.2 Após blast entre NW_ fas (database) e input.fas (input). Obter as queries, hits e coordenadas dos hsps, como no exemplo abaixo e imprimir na tela: Query Subject (hit) subject_start..subject_end Exemplo: NW_ _2 NW_