The Bioperl toolkit The Bioperl toolkit : : Perl modules for the life Perl modules for the life sciences sciences Daniel Guariz Pinheiro, PhD. L L aboratório de aboratório de G G enética enética M M olecular e olecular e B B ioinformática ioinformática + DBI + DBI + CGI + CGI
51
Embed
The Bioperl toolkit: Perl modules for the life sciences Daniel Guariz Pinheiro, PhD. L aboratório de G enética M olecular e B ioinformática + DBI + CGI.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
The Bioperl toolkitThe Bioperl toolkit::Perl modules for the life Perl modules for the life
sciencessciences
Daniel Guariz Pinheiro, PhD.L L aboratório de aboratório de G G enética enética M M olecular e olecular e B B ioinformáticaioinformática
+ DBI+ DBI+ CGI+ CGI
IntroduçãoIntrodução
Open Bioinformatics Foundation
Reinvenção da rodaReinvenção da roda
Pode não ser tão eficiente quanto o esperado!
ReferênciasReferê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. 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.
Principais artigos científicos VSNS-BCD – Universität Bielefeld
CitaçõesCitações
Dados (www.bioperl.org)Dados (www.bioperl.org)
1998 – meados 2008
~600 (projetos e artigos)
~44 (livros)
3 (patentes)
Paradigma de programaçãoParadigma de programação
FUNCIONAMENTOFUNCIONAMENTO:RELACIONAMENTOS ETROCAS DE MENSAGENSENTRE OS OBJETOS
Conceitos - IConceitos - 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 - IIConceitos - IIHeranç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.
Diagrama de ClassesDiagrama de Classes
As classes Circle, Square e Triangle redefinem os métodos draw() e erase() daSuperclasse Shape
– Melhor representação do “mundo real”– Ênfase nos dados– Modularidade– Reusabilidade– Produtividade– Manutenibilidade...
Vantagens (POO)Vantagens (POO)
Desvantagens (POO)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)
...
package Sequence;
sub new {my ($class, $id, $seq, $strand) = @_;my $self = bless {}, $class;$self->set_sequence($id,$seq,$strand);return $self;
$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"; } }}
GenBankLOCUS NM_000518 626 bp mRNA linear PRI 27-JAN-2008DEFINITION Homo sapiens hemoglobin, beta (HBB), mRNA.ACCESSION NM_000518VERSION NM_000518.4 GI:28302128KEYWORDS .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.
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"
FASTA (Pearson)>gi|28302128|ref|NM_000518.4| Homo sapiens hemoglobin, beta (HBB), mRNAACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGAGGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGCAGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATGCTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGCTCACCTGGACAACCTCAAGGGCACCTTTGCCACACTGAGTGAGCTGCACTGTGACAAGCTGCACGTGGATCCTGAGAACTTCAGGCTCCTGGGCAACGTGCTGGTCTGTGTGCTGGCCCATCACTTTGGCAAAGAATTCACCCCACCAGTGCAGGCTGCCTATCAGAAAGTGGTGGCTGGTGTGGCTAATGCCCTGGCCCACAAGTATCACTAAGCTCGCTTTCTTGCTGTCCAATTTCTATTAAAGGTTCCTTTGTTCCCTAAGTCCAACTACTAAACTGGGGGATATTATGAAGGGCCTTGAGCATCTGGATTCTGCCTAATAAAAAACATTTATTTTCATTGC
Principais Formatos dos Principais Formatos dos BDs Flat files do NCBI/EBIBDs Flat files do NCBI/EBI
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::GenBankBio::DB::Query::GenBank
use Bio::DB::Query::GenBank;use Bio::DB::GenBank;
# get a stream via a query stringmy $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 handlemy $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::LocationBio::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-
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 searchprograms", 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
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))
2. Obter e imprimir em um arquivo as seguintes informações do arquivo de mRNAsdo gene NAT2 (NAT2.gbwithparts) somente para o número de acesso iniciado porNM_ :
Número de acesso GenBankLocalização no cromossomo exon número do exon coordenada (start..end)
Exemplo:
NM_0000158p22 exon 1 1..101 exon 2 102..1317
Exercício 3Exercí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 4Exercício 4
4.1. Baixar o arquivo (exercises/ex4/NW_001253146.gbk) com o contig genômico do cromossomo 16 deApis 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;
4.2. Gerar um arquivo fasta (proteins.fna) com as seqüencias de proteínas traduzidas a partir das informações do CDS. Utilizar o protein_id (Ex.: XP_397330.2) como ID da sequência e o produto gênico (product) (Ex.: similar to CG1970-PA isoform 1) como descrição;
Exemplo:>XP_397330.2 similar to CG1970-PA isoform 1MTVRALGPFFRSNNLLFRTLNENVVTNNRIIPLVNIESQRREAHQWMPDLDEYKHLLKHE...
Exercício 5Exercí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;
• 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
• Database independent interface for Perl
RDBMS - Relational Database Management System DBD – Data Base DriverAPI - Application Programming Interface
API
Módulo DBIMódulo DBI
• 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.
• 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
Conceitos em Bancos de Conceitos em Bancos de DadosDados
Representação dos DadosRepresentação dos Dados• Tabelas
– Registros (linhas)– Campos (colunas)
id nome cidade estado curso1 Paulo Henrique Alves Porto Velho RO Biologia Experimental2 Matheus Carvalho Bürger Limeira SP Informática Biomédica3 Ricardo Kazuhiro Kavanishi Ribeirão Preto SP Informática Biomédica4 Poliana Fernanda Giachetto Campinas SP Produção Animal5 Luiz Carlos Bertucci Barbosa Araraquara SP Biotecnologia6 André M. Ribeiro dos Santos Belém PA Ciências Biológicas7 Sylvain Darnet Belém PA Biologia molecular e celular8 Luisa Warchavchik Hugerth São Paulo SP Ciências Moleculares9 Maria Izabela Ruz Caffé Campinas SP Informática Biomédica10 Ana Luiza Assin Squillace Mogi Mirim SP Biotecnologia11 Myna Nakabashi São Paulo SP Biotecnologia12 Guilherme Fernandes Lourenço de Oliveira Franca SP Engenharia Biotecnológica13 André Luiz de Oliveira Jaboticabal SP Ciências Biológicas14 Júlio César Botelho de Souza Ribeirão Preto SP Informática Biomédica15 Fernando Moral Mayoral Sao Jose dos Campos SP Ciências Moleculares16 Orzenil Bonfim da Silva Junior Brasilia DF Química17 Diego Martinez Salvanha Ribeirão Preto SP Sistemas de Informação18 Leticia Regina Lima Ribeirao Preto SP Informática Biomédica19 Eric Hainer Ostroski Santo André SP Bioinformática20 Guilherme da Silva Pereira Piracicaba SP Genética e Melhoramento de Plantas
Relacionamentos 1:nRelacionamentos 1:n
id nome cidade_id curso_id1 Paulo Henrique Alves 1 12 Matheus Carvalho Bürger 2 23 Ricardo Kazuhiro Kavanishi 3 24 Poliana Fernanda Giachetto 4 35 Luiz Carlos Bertucci Barbosa 5 46 André M. Ribeiro dos Santos 6 57 Sylvain Darnet 6 68 Luisa Warchavchik Hugerth 7 79 Maria Izabela Ruz Caffé 4 210 Ana Luiza Assin Squillace 8 411 Myna Nakabashi 7 412 Guilherme Fernandes Lourenço de Oliveira 9 813 André Luiz de Oliveira 10 514 Júlio César Botelho de Souza 3 215 Fernando Moral Mayoral 11 716 Orzenil Bonfim da Silva Junior 12 917 Diego Martinez Salvanha 3 1018 Leticia Regina Lima 3 219 Eric Hainer Ostroski 13 1120 Guilherme da Silva Pereira 14 12
id nome estado1 Porto Velho RO2 Limeira SP3 Ribeirão Preto SP4 Campinas SP5 Araraquara SP6 Belém PA7 São Paulo SP8 Mogi Mirim SP9 Franca SP10 Jaboticabal SP11 Sao Jose dos Campos SP12 Brasilia DF13 Santo André SP14 Piracicaba SP
id nome1 Biologia Experimental2 Informática Biomédica3 Produção Animal4 Biotecnologia5 Ciências Biológicas6 Biologia molecular e celular7 Ciências Moleculares8 Engenharia Biotecnológica9 Química10 Sistemas de Informação11 Bioinformática12 Genética e Melhoramento de Plantas
aluno
cidade
curso
Relacionamentos n:mRelacionamentos n:m
id nome
1 Introdução a Perl
2 Introdução a BioPerl
3 Introdução a Linux
aula
aluno_id aula_id
1 1
2 1
3 2
1 2
matricula
aluno
Diagrama de Entidades e Diagrama de Entidades e Relacionamentos (DER)Relacionamentos (DER)
Métodos DBI - conexãoMétodos DBI - conexão
my $dbh = DBI->connect($data_source, $username, $auth);
while ( my @row = $sth->fetchrow_array ) { print "@row\n";}
my $ary_ref = $dbh->selectall_arrayref($statement);
my $ary_ref = $dbh->selectall_arrayref(“SELECT id, nome FROM aluno”);
Exemplos
my @row_ary = $dbh->selecrow_array(“SELECT id, nome FROM aluno WHERE id=1”);
Exercício 6Exercí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.dbsqlite> 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.
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 7Exercí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.