UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO SISTEMA WEB PARA PROJETO E ANÁLISE DE PRIMERS Sistemas de Informação Fernanda Scariot Itajaí (SC), junho de 2004. UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO RELATÓRIO DO TRABALHO DE CONCLUSÃO DE CURSO SISTEMA WEB PARA PROJETO E ANÁLISE DE PRIMERS Sistemas de Informação Fernanda Scariot Relatório apresentado à banca examinadora do trabalho de conclusão do curso de ciência da computação para análise e aprovação. Itajaí (SC), junho de 2004. EQUIPE TÉCNICA Acadêmica Fernanda Scariot Professor Orientador Rafael Luiz Cancian, M.Sc. Professor Co-orientador André Oliveira de Souza Lima, Dr. Coordenador dos Trabalhos de Conclusão de Curso Anita Maria Fernandes da Rocha, Dra. César Albenes Zeferino, Dr. Coordenador do Curso Luís Carlos Martins, Esp. i DEDICATÓRIA Dedico este trabalho aos meus pais que sempre me incentivaram a seguir em frente e sempre acreditaram no meu potencial. Agradeço pelo amor infinito e pelas palavras de alegria e força que recebi, mesmo estando longe. ii AGRADECIMENTOS Agradeço a Deus pela vida, pela saúde e pela inteligência que me foi concedida, e por ter enviado verdadeiros anjos para me acompanhar e me ajudar durante toda a vida. Agradeço a minha mãe que sempre acreditou em mim e não deixou que eu desistisse em nenhum momento e a meu pai que sempre teve gestos de amor incondicional. A meus irmãos que sempre estiveram do meu lado e mostraram-se grandes amigos. A meus magníficos amigos que sempre me auxiliaram, me fizeram sorrir, e nunca me abandonaram. Em especial a Ariel, grandiosíssimo amigo, Carlos, meu "pai" e amigo de plantão, e às minhas amigas Fernanda e Ana Paula, sempre grandes companheiras. Agradeço a todos àqueles que se mostraram verdadeiros amigos em toda a minha vida acadêmica. Descobri inúmeros novos amigos nessa caminhada... Agradeço a meus mestres que me ensinaram e me auxiliaram em tudo que podiam, em especial a Anita, Elisangela, Rudimar, Adhemar, e César. A meu co-orientador professor André Lima e a pesquisadora Sheila, que contribuíram para que esse trabalho fosse realizado. Muito obrigada! iii SUMÁRIO LISTA DE ABREVIATURAS E SIGLAS ............................................vii LISTA DE FIGURAS ..............................................................................ix LISTA DE TABELAS..............................................................................xi RESUMO .................................................................................................xii ABSTRACT ............................................................................................xiii I – INTRODUÇÃO....................................................................................1 1. APRESENTAÇÃO.................................................................................................. 1 2. JUSTIFICATIVA.................................................................................................... 4 3. IMPORTÂNCIA ..................................................................................................... 5 4. OBJETIVOS ............................................................................................................ 6 4.1. Geral ....................................................................................................................... 6 4.2. Específicos.............................................................................................................. 6 5. METODOLOGIA ................................................................................................... 7 II – REVISÃO BIBLIOGRÁFICA ........................................................10 1. MATERIAL GENÉTICO .................................................................................... 10 1.1. DNA e RNA ......................................................................................................... 11 1.2. Gene...................................................................................................................... 13 1.3. Proteínas ............................................................................................................... 14 1.4. Replicação ............................................................................................................ 16 1.5. Transcrição ........................................................................................................... 17 1.6. Tradução ............................................................................................................... 18 1.7. Desnaturação e Renaturação do DNA.................................................................. 19 2. TÉCNICAS DE BIOLOGIA MOLECULAR .................................................... 20 2.1. Seqüenciamento e Clonagem ............................................................................... 20 2.2. PCR ...................................................................................................................... 21 iv 2.2.1. Primers............................................................................................................... 24 2.3. Eletroforese .......................................................................................................... 26 3 – BIOINFORMÁTICA .......................................................................................... 27 3.1. Bancos de Dados Biológicos Públicos................................................................. 27 3.2. Alinhamento de Seqüências ................................................................................. 29 3.3. Árvores Filogenéticas........................................................................................... 32 3.4. Simuladores de Eletroforese................................................................................. 34 4 – SISTEMAS PARA WEB .................................................................................... 35 4.1. Perl........................................................................................................................ 36 4.1.1. Principais Módulos Perl .................................................................................... 37 4.1.2. BioPerl............................................................................................................... 38 4.2. HTML................................................................................................................... 39 4.2. PHP....................................................................................................................... 40 4.3. Banco de Dados.................................................................................................... 41 4.3.1. SQL ................................................................................................................... 42 4.3.2. MySQL.............................................................................................................. 42 4.3.3. PostgreSQL ....................................................................................................... 43 4.3.4. Comparação de Bancos de Dados ..................................................................... 44 III. DESENVOLVIMENTO...................................................................45 1. MODELAGEM DO SISTEMA ........................................................................... 45 1.1. Análise do Sistema ............................................................................................... 45 1.1.1. Diagrama de Contexto....................................................................................... 45 1.1.2. Diagramas de Fluxos de Dados......................................................................... 46 1.1.3. Dicionário de Dados Utilizados na Modelagem do Sistema ............................ 50 1.1.4. Diagrama de Casos de Uso................................................................................ 54 1.1.5. Diagrama de Classes ......................................................................................... 55 1.1.6. Diagramas de Seqüência ................................................................................... 57 1.1.7. Diagrama de Navegação do Sistema................................................................. 60 v 1.1.8. Diagrama Entidade-Relacionamento ................................................................ 61 1.1.9. Dicionário de Dados das Tabelas...................................................................... 63 1.2. Projeto do Sistema................................................................................................ 68 1.2.1. Especificação de Processos ............................................................................... 68 1.2.2. Modelo Físico do Banco de Dados ................................................................... 72 2. DESCRIÇÃO DO SISTEMA PROPOSTO........................................................ 74 2.1. Busca de Seqüências ............................................................................................ 75 2.2. Preparação de Seqüências .................................................................................... 80 2.3. Projeto de Primers ................................................................................................ 83 IV – CONCLUSÕES ...............................................................................89 BIBLIOGRAFIA .....................................................................................91 GLOSSÁRIO ...........................................................................................97 vi LISTA DE ABREVIATURAS E SIGLAS A Adenina AIDS Síndrome da Imunodeficiência Adquirida ASP Active Server Pages BD Banco de Dados BLOSUM Blocks Substitution Matrix C Citosina CGI Common Gateway Interface DBI Database Interface DNA Ácido Desoxirribonucléico EMBL European Molecular Biology Laboratory EST Expressed Sequence Tags G Guanina HIV Human Immunodeficiency Virus HTML HyperText Markup Language LWP.pm Library for Web Programming NCBI National Center for Biotechnology Information NIH National Institutes of Health PAM Point Accepted Mutation pb Pares de bases PCR Polimerase Chain Reaction PDB Protein Data Base PDL Perl Data Language Perl Practical Extraction and Report Language RNA Ácido Ribonucléico RNAm RNA mensageiro RNAr RNA ribossômico RNAt RNA transportador RPM RPM Package Manager SGBD Sistema Gerenciador de Banco de Dados SQL Structured Query Language T Timina vii Ta Temperatura de Anelamento Tm Temperature Melting U Uracila UML Unified Modeling Language viii LISTA DE FIGURAS Figura 1. Nucleotídeo Timina ............................................................................................................11 Figura 2. A Dupla hélice do DNA......................................................................................................12 Figura 3. Bases nitrogenadas que compõe o DNA.............................................................................13 Figura 4. Tabela de Tradução de Aminoácidos..................................................................................15 Figura 5. Replicação de cadeia de DNA ............................................................................................17 Figura 6. Reação em cadeia da polimerase – PCR.............................................................................22 Figura 7. Exemplo de gel de eletroforese...........................................................................................27 Figura 8. Alinhamento par-a-par entre seqüências realizado pelo Blast............................................30 Figura 9. Alinhamento múltiplo entre seqüências feito pelo ClustalW .............................................31 Figura 10. Árvore Filogenética feita pelo software ClustalW ...........................................................33 Figura 11. Menu de opções do pacote de programas Phylip..............................................................33 Figura 12. Tela do software Gel Electrophoresis Simulator ..............................................................34 Figura 13. Tela do software Simulation of Electrophoresis & Sequence Building of DNA .............35 Figura 14. Diagrama de Contexto. .....................................................................................................46 Figura 15. Diagrama de Fluxo de Dados, nível1................................................................................47 Figura 16. Diagrama de Fluxo de Dados decomposto do processo 1.4. ............................................48 Figura 17. Diagrama de Fluxo de Dados decomposto do processo 1.5. ............................................49 Figura 18. Diagrama de Fluxo de Dados decomposto do processo 1.6. ............................................50 Figura 19. Use Cases..........................................................................................................................54 Figura 20. Diagrama de Classes do Sistema ......................................................................................56 Figura 21. Diagrama de Seqüência com as ações iniciais do sistema................................................57 Figura 22. Diagrama de Seqüência do método DesignPrimers() .......................................................58 Figura 23. Diagrama de Seqüência do método _DesignIndividualPrimers().....................................58 Figura 24. Diagrama de Seqüência do método _DesignPairedPrimers()...........................................59 Figura 25. Diagrama de Seqüência do método _AnalysePrimers() ...................................................60 Figura 26. Diagrama de Navegação do Sistema ................................................................................61 Figura 27. Diagrama Entidade-Relacionamento, modelo Lógico......................................................62 Figura 28. Diagrama Entidade-Relacionamento, modelo Físico. ......................................................73 Figura 29. Tela de opções principais do sistema................................................................................74 Figura 30. Tela de parâmetros de busca de seqüências......................................................................76 ix Figura 31. Tela com o sumário de algumas seqüências encontradas. ................................................78 Figura 32. Tela de Digitação de Seqüências ......................................................................................79 Figura 33. Tela com o resultado do alinhamento feito pelo software ClustalW. ...............................81 Figura 34. Figura com alinhamento feito pelo software ClustalW ....................................................83 Figura 35. Tela com os parâmetros de entrada para o projeto de primers. ........................................84 Figura 36. Tela com os parâmetros de entrada internos para o projeto de primers. ..........................85 Figura 37. Fitas sense e anti-sense .....................................................................................................86 Figura 38. Tela com os resultados do projeto de primers. .................................................................88 x LISTA DE TABELAS Tabela 1. Tabela de Degenerações de Bases Nucléicas .....................................................................26 Tabela 2. Dicionário de Dados da Modelagem do Sistema. ..............................................................50 Tabela 3. Dicionário de Dados dos Fluxos de Dados. .......................................................................52 Tabela 4. Tabela Degeneracao ...........................................................................................................63 Tabela 5. Tabela Tipo_PCR ...............................................................................................................63 Tabela 6. Tabela Projeto_PCR ...........................................................................................................63 Tabela 7. Tabela Primer_Rejeitado ....................................................................................................63 Tabela 8. Tabela Produto_Amplificado .............................................................................................64 Tabela 9. Tabela Corte .......................................................................................................................64 Tabela 10. Tabela Usuario .................................................................................................................64 Tabela 11. Tabela Enzima_Usada......................................................................................................65 Tabela 12. Tabela Enzima..................................................................................................................65 Tabela 13. Tabela Resultado_Alinhamento .......................................................................................65 Tabela 14. Tabela Organismo ............................................................................................................65 Tabela 15. Tabela Região_Similar .....................................................................................................66 Tabela 16. Tabela Similaridade..........................................................................................................66 Tabela 17. Tabela Posição_Anelamento ............................................................................................66 Tabela 18. Tabela Tipo_Est_Secundaria............................................................................................66 Tabela 19. Tabela Est_Secundaria .....................................................................................................66 Tabela 20. Tabela Primer ...................................................................................................................67 Tabela 21. Tabela Par_Primer ............................................................................................................67 Tabela 22. Tabela Codon ...................................................................................................................67 Tabela 23. Tabela Conjuntos_Organismos ........................................................................................67 xi RESUMO O presente trabalho descreve o desenvolvimento de um software para web que auxilia o trabalho dos pesquisadores da área de biologia molecular, automatizando algumas das etapas necessárias para o projeto e análise de primers, usados em reações de PCR (Polymerase Chain Reaction). O desenvolvimento do software utilizou a linguagem de programação Perl e o módulo BioPerl, específico para bioinformática, em conjunto com o banco de dados MySQL, e outros softwares, como o ClustalW, executando em ambiente Linux. Por ser baseado em web, este software pode ser acessao a partir de qualquer computador conectado à Internet, e em qualquer plataforma. O software faz a busca de seqüências genômicas em bancos de dados públicos, a preparação dessas sequências e o projeto de primers com base nas restrições impostas pelo pesquiador, apresentando as características dos primers gerados e/ou analisados. Cada etapa é automatizada, mas o software permite ainda a intervenção do pesquisador em cada passo, que pode sempre usar sua experiência para corrigir problemas na automatização desse processo. O mecanismo usado para o projeto de primers permite que se gerem primers confiáveis e específicos. Os resultados apontam para um grande benefício aos pesquisadores dessa área, embora várias características ainda possam ser incorporadas ao software. xii ABSTRACT This work describes the development of a web system that will help the work of molecular biologists, automatizating some steps necessary to the Primer design and analisys, used in PCR (Polymerase Chain Reaction). The development of software used the programming language Perl and the BioPerl module, specific for bioinformatics, in set with the data base MySQL, and others softwares, as the ClustalW, executing in Linux environment. For being based on web, this software can be accessed from any computer conected to the internet, and in any platform. Software makes the search of genomic sequences in public data bases, the preparation of these sequences and the design of primers on the basis of the restrictions imposed for the research, presenting the generated and/or analyzed characteristics of primers. Each stage is automatized, but software still allows the intervention of the researcher in each step, that can always use his experience to correct problems in the automatization of this process. The used mechanism for the design of primers allows that they generate primers trustworthy and specific. The results point with respect to a great benefit the researchers of this area, even so some characteristics still can be incorporated software. xiii I – INTRODUÇÃO 1. APRESENTAÇÃO A bioinformática é uma nova ferramenta científica que une a bioquímica com a informática. Criada nas últimas décadas para tratar a imensa massa de dados que vem sendo gerada pelos vários projetos de genoma ao redor do mundo, a bioinformática permite explorar informações nunca antes disponíveis, e pode gerar resultados nunca antes imaginados. O termo bioinformática tem sido utilizado para descrever os processos computacionais usados para dar apoio às pesquisas relacionadas com material genético (DNA, RNA e proteínas). No mesmo sentido vem sendo utilizado o termo “Biologia Computacional” e, em geral, podem ser considerados como sinônimos. Já o termo “Informática Aplicada à Biologia” é mais geral, e inclui, além da bioinformática, qualquer sistema (software ou hardware) usado por pesquisadores da área de ciências biológicas. Em relação às pesquisas com material genético, alvo da bioinformática, o trabalho do biólogo e pesquisador de área afim começa geralmente com o seqüenciamento de um trecho de DNA (Ácido Desoxirribonucléico). O seqüenciamento pode ser feito de vários modos, mas, em geral, o processo básico é o seguinte: uma amostra de DNA é retirada do organismo de interesse. Esse DNA é fragmentado utilizando-se enzimas de restrição. Enzimas de restrição são proteínas capazes de “cortar” a dupla fita de DNA em trechos específicos. Assim, obtêm-se vários pequenos pedaços de DNA, capazes de serem seqüenciados com o equipamento adequado. Como, em geral, a quantidade de DNA é pequena, é necessário “amplificar” (clonar) esse DNA. Isso pode ser feito através de plasmídeos (técnica in vivo) ou PCR (técnica in vitro). PCR, ou Polimerase Chain Reaction (Reação em Cadeia da Polimerase), permite aumentar milhões ou bilhões de vezes a quantidade inicial de DNA. Para isso, são necessários apenas uma pequena amostra de DNA, nucleotídeos livres, uma enzima chamada Taq DNA Polimerase e inicializadores de polimeração, chamados primers. 2 Para o seqüenciamento, nucleotídeos especialmente marcados com algum indicador fluorescente também são adicionados à amostra. Esses compostos são colocados num equipamento chamado termociclador que, por simples mudanças de temperatura (aquece a 95oC e resfria a cerca de 60oC, várias vezes), faz com que as moléculas de DNA se repliquem, aumentando a quantidade da amostra. Após ter DNA suficiente, é necessário separar essa amostra por peso molecular, e assim obter sua seqüência. Para isso utiliza-se o seqüenciador. A amostra de DNA é colocada num gel de eletroforese, que consiste numa placa de gel ligada a uma fonte que gera corrente elétrica. As amostras tendem, por efeito do campo eletromagnético, a atravessar o gel, e as moléculas menores o fazem mais rapidamente. Na parte de baixo do gel, um feixe de laser do seqüenciador mede a freqüência da luminescência do indicador fluorescente colocado em alguns nucleotídeos. Com isso, cada nucleotídeo terminal é identificado e a seqüência é, posteriormente, determinada. Embora a construção do seqüenciador já necessite do auxílio da informática, é apenas após essa etapa que a bioinformática realmente começa. Inicialmente foram desenvolvidos softwares para avaliar a qualidade das seqüências obtidas, uma vez que, por problemas tecnológicos, as seqüências obtidas pelo seqüenciador não são perfeitas. Também por restrições tecnológicas, esse equipamento é capaz de seqüenciar apenas trechos pequenos de DNA (por isso ele é inicialmente fragmentado). Então, programas que sobrepõe as inúmeras pequenas seqüências (shotguns) obtidas para gerar uma seqüência completa final (contig) foram desenvolvidos. Com a obtenção das seqüências de DNA dos organismos de interesse, o trabalho do pesquisador de biologia está recém começando. Em geral, para saber como o DNA (genótipo) se relaciona com alguma característica física (fenótipo), várias outras etapas que usam bioinformática são necessárias. Inicialmente, é necessário descobrir quais trechos desse DNA correspondem aos genes, pois são os genes que serão transcritos em RNA (Ácido Ribonucléico) e esses então vão para o citoplasma onde são traduzidos em proteínas, e são as proteínas, em primeira instância, as responsáveis pela atividade biológica de um organismo e suas características físicas. Inúmeros algoritmos foram desenvolvidos para a predição de genes, e hoje vários deles podem ser usados através da web. Sabe-se que qualquer gene possui um códon (seqüência de 3 pares de bases) de inicialização de tradução e um códon de terminação. Além disso, eles possuem uma região promotora, anterior ao códon de inicialização, onde a RNA polimerase se ligará para dar início à transcrição do RNA. Como esses códons e região promotora podem variar para cada 3 organismo, e sua existência não necessariamente indica um gene real, tais algoritmos apenas são uma indicação que tal trecho pode ser um gene, e é sempre necessária a comprovação em laboratório “molhado” (biológico). A seqüência de um gene determina a seqüência de aminoácidos da proteína que será gerada, sendo que cada 3 (três) pares de base serão traduzidos para um aminoácido. Programas que fazem essa tradução foram então desenvolvidos. Entretanto, a seqüência de aminoácidos de uma proteína (sua estrutura primária), não é suficiente para caracterizá-la ou obter informações sobre seu funcionamento no organismo. A proteína dobra-se sobre si, criando estruturas secundárias, e essas também possuem uma conformação tridimensional (estrutura terciária). Em geral, é a conformação tridimensional da proteína que determina sua função. Em muitas proteínas, entretanto, várias estruturas terciárias precisam agrupar-se (estrutura quaternária) para que possam exercer sua função (PANDOLFI, 2003). Vários algoritmos e softwares, cada vez mais complexos, foram desenvolvidos para predizer as estruturas de uma proteína. Sempre, após a análise in silico (em computador), é necessário uma comprovação in vitro. As proteínas, após terem sido produzidas, passam por outras transformações, reagindo com outras proteínas e moléculas no ambiente celular. Essas transformações geram as vias metabólicas desse organismo. Estudos e análises do metabolismo estão sendo agora incluídos em programas de bioinformática. Outras técnicas recentes de bioinformática incluem a análise de transcriptoma, que são as moléculas de RNA presentes no citoplasma. Com isso, tem-se certeza de que genes estão ativos e pode-se, através de programas especializados, medir a taxa de expressão desses genes, relacionando-os de diversas formas, principalmente em condições ambientais diferentes. Pode-se, por exemplo, medir a taxa de expressão de centenas de genes numa célula normal e numa célula cancerígena, e verificar quais genes estão relacionados com essa doença. Para isso utilizam-se técnicas de hibridização automatizadas, chamadas micro-arrays. Cada novo software de bioinformática desenvolvido abre caminho para mais pesquisas e novas descobertas. Um dos maiores objetivos a ser alcançado pela bioinformática é a produção de fármacos com base na estrutura das proteínas. Este resultado trará drogas mais eficazes e com menor tempo para a entrada no mercado (PROSDOCIMI, 2003). Para que este e outros objetivos 4 sejam alcançados, iniciou-se o estudo de seqüências de DNA e genes (genômica), e atualmente seu foco está na análise de transcritos (ESTs – Expressed Sequence Tags) e proteínas (proteômica). E será focado nas vias metabólicas (metabolômica) em pouco tempo. Prevê-se que, num futuro não muito distante, estará focada na fisiologia do organismo (fisiolômica ?). O desenvolvimento de algoritmos e softwares para tratar com essas informações é um desafio complexo e constante, mas um desafio não menos importante e às vezes desconhecido do público em geral (inclusive biólogos) é a estruturação desses dados. A criação de bancos de dados, sua estrutura, integridade, tratamento de dados replicados, etc, também faz parte da bioinformática, e é apenas com a representação eficaz e eficiente desses dados, que os algoritmos para seu tratamento podem ser usados. Dada a importância e uso do experimento de PCR em diversas técnicas de biologia molecular e da relativa dificuldade em determinar seus componentes, este trabalho apresenta o desenvolvimento de um sistema de bioinformática para estruturação de dados e automatização de processos biológicos, no que se refere ao projeto de experimentos de PCR, da busca de seqüências genômicas ao projeto e análise dos primers usados no experimento. Com isso espera-se contribuir com pesquisadores da área biológica, médica e farmacêutica, e também contribuir com o aperfeiçoamento da ciência e pesquisa em bioinformática, 2. JUSTIFICATIVA A bioinformática é uma ferramenta recente e em pleno desenvolvimento. Imagina-se que será a nova ciência do século XXI. Embora sirva como ferramenta ao trabalho de biólogos (entre outros profissionais, como médicos, farmacêuticos, veterinários e agrônomos), seu desenvolvimento depende principalmente da atuação de profissionais de Ciência da Computação, capazes de especificar os algoritmos para execução em computador. A participação desse tipo de profissional, incluindo estudantes de graduação, é que permitirá a criação de novos algoritmos e ferramentas. Sob aspectos computacionais, a bioinformática é um grande desafio. Em geral, profissionais de computação são capazes de especificar algoritmos para problemas que tem solução/teoria conhecida. Ou seja, é necessário saber resolver o problema “à mão” para que se possa ensinar o computador a resolvê-lo. Entretanto, no caso da bioinformática, em geral, não se conhece a teoria 5 associada ao problema. Não é conhecido como o DNA, genes e proteínas realmente funcionam, e ainda há variações entre organismos, entre tecidos, entre células e até mesmo numa única célula, ao longo do tempo. Portanto, um trabalho nessa área é tema relevante de pesquisa, até mesmo em nível de graduação. Por não se conhecer exatamente o funcionamento de sistemas biológicos (organismos), os programas de bioinformática geralmente utilizam técnicas de mineração de dados e inteligência artificial. Uma boa modelagem é indispensável, principalmente no que se refere à organização de bancos de dados. Devido à grande quantidade de dados, e à necessidade de muita análise sobre esses dados, a bioinformática é uma aplicação potencial para algoritmos heurísticos e processamento paralelo. Assim, também do ponto de vista computacional, trata-se de uma área realmente interessante. 3. IMPORTÂNCIA A importância de desenvolvimento em bioinformática tem sido amplamente divulgada, e é quase consenso mundial que ela pode ser capaz de resolver inúmeros problemas altamente relevantes, dentre os quais apenas alguns serão mencionados. Em relação à agricultura, a bioinformática e a engenharia genética estão melhorando a qualidade dos alimentos, estão tornando-os mais resistentes a pragas e mais produtivos. Isso tem aumentado, num nível nunca antes visto, a quantidade de alimento produzido no mundo. Como aumento populacional dos últimos séculos, apenas o melhoramento genético é capaz de produzir alimento para todos. O mesmo tem ocorrido à pecuária, onde o melhoramento de animais tem produzido rebanhos mais resistentes e mais adequados ao consumo. Novas proteínas têm sido introduzidas no leite bovino através de modificações genéticas nos animais (BACALTCHUK, 2003). Em relação à espécie humana, a importância da bioinformática é ainda maior. A identificação de problemas genéticos já é uma realidade, e genes responsáveis por inúmeras doenças já foram identificados, como os genes GPRA e AAA1, presentes no cromossomo 7 e responsáveis pela asma (AGENCIA EFE, 2004). Com o avanço da bioinformática, da genômica para a 6 proteômica e metabolômica, além da identificação de tais genes, será possível o projeto racional de fármacos, atuando diretamente em nível genético. Com isso, não só a expectativa de vida será maior, mas a própria qualidade de vida do ser humano será melhor. Especificamente em relação a este trabalho, ele é de grande importância para inúmeros pesquisadores que trabalham com biologia molecular, virologia e bioquímica. A idéia de sua realização surgiu da necessidade de dois pesquisadores, um do Laboratório de Biologia Molecular da UNIVALI e outro do Laboratório de Virologia da UEL (Universidade Estadual de Londrina). O trabalho desses profissionais será significativamente facilitado, sendo concluído num intervalo de tempo muito menor e com qualidade muito superior. Este trabalho permitirá que os pesquisadores façam, num único ambiente web, a busca de seqüências genômicas, o alinhamento dessas seqüências e o projeto dos primers que serão usados em experimentos de PCR. Um avanço importante proposto neste trabalho é a análise da especificidade dos primers, garantindo que eles anelarão em certas seqüências e não em outras. Com isso, torna-se significativamemte mais fácil o projeto de primers que amplifiquem apenas certas estirpes ou mutações de organismos de interesse. Como o trabalho está disponível na Web para todos os pesquisadores do mundo, este sistema agilizará o trabalho de muitos biólogos e pesquisadores de áreas afins. 4. OBJETIVOS 4.1. Geral O objetivo geral deste trabalho é desenvolver um sistema baseado em web para busca de seqüências genômicas, projeto e análise de primers para experimentos de PCR. 4.2. Específicos • Armazenar e manipular, em banco de dados no servidor, de forma hierárquica, seqüências de DNA, RNA, primers, enzimas de restrição e anotações genômicas. 7 • Acessar automaticamente, via internet, bancos de dados genômicos públicos, e diversas ferramentas disponíveis (ClustalW, Blastn, Blastp). Acessar várias ferramentas já disponíveis em forma de pipeline ou “linha de produção”. Comparar as seqüências locais de DNA e RNA com seqüências em bancos de dados públicos: Blastn, par-a-par e alinhamento múltiplo. • Analisar um primer, apresentando: tamanho, peso molecular, temperatura de hibridização, complementaridade, estruturas secundárias internas, entropia, entalpia, etc. Avaliar a qualidade de primers segundo parâmetros pré-estabelecidos (restrições do usuário). Definir o trecho da seqüência que o primer deve alinhar e tamanho de amplicon desejado. Permitir a inclusão de sítios de restrição e bases degeneradas nos primers. 5. METODOLOGIA Foram necessárias cinco etapas a fim de executar o projeto: estudo, modelagem, desenvolvimento, validação e divulgação dos resultados. As etapas de estudo e modelagem foram efetivadas no TCC1, sendo que as etapas de desenvolvimento, validação e divulgação científica foram efetivadas no TCC2. Essas são as etapas gerais de trabalhos científicos que usam o método hipotético-dedutivo. A etapa de estudo compreende a definição clara do problema, o escopo do sistema e aquisição do conhecimento prévio sobre o tema e soluções existentes. A etapa de modelagem consiste em definição de nova hipótese ou proposta de nova solução ao problema estudado. A etapa de desenvolvimento trata da experimentação da hipótese ou desenvolvimento da nova solução. A validação visa corroborar a hipótese desenvolvida, além de dar base científica à solução desenvolvida. Por fim, todo trabalho científico deve ser descrito de tal forma que possa ser reproduzido e testado por outros pesquisadores. Etapa 1 – Estudo – Definição do problema e revisão de soluções/técnicas existentes Nesta etapa buscou-se compreender exatamente os conceitos envolvidos no trabalho, como PCR, primers, eletroforese, alinhamento par-a-par e alinhamento múltiplo, homologia, genes 8 ortólogos e parólogos, etc. Esse conhecimento prévio foi necessário para entender o processo de trabalho dos pesquisadores em biologia molecular. Posteriormente, foi necessário estudar as ferramentas de bioinformática já desenvolvidas e que foram necessárias neste trabalho, como o ClustalW e o GeneRunner. Além disso, foi necessário saber utilizar os bancos de dados biológicos públicos, como o GenBank, disponível no site do NCBI (National Center for Biotechnology Information) e o Expasy. Para o desenvolvimento, foi necessário estudar também a criação e manutenção de bancos de dados com MySQL, a linguagem de programação Perl (Practical Extraction and Report Language), amplamente utilizada em bioinformática, e o ambiente Linux, no qual executam as ferramentas de bioinformática que foram usadas neste trabalho. Por fim, também foi necessário ter bom conhecimento do funcionamento do alinhamento múltiplo, bem como de todas as condições para o projeto de primers diversos. Etapa 2 – Modelagem – Levantamento de hipóteses e Proposta de nova solução A etapa de modelagem compreende a especificação tanto dos bancos de dados quanto da aplicação em si. A estrutura do banco de dados considerou os organismos, as seqüências de DNA, enzimas de restrição, primers e seqüência consenso. A modelagem do sistema deve especificar completamente o funcionamento do mesmo, e inclui tanto a Análise quanto o Projeto do Sistema. Para tanto foi utilizada a Análise Estruturada para as etapas de busca de seqüências e preparação das seqüências para projeto de primers, e análise orientada a objeto, e sua descrição com a linguagem UML (Unified Modeling Language) para a etapa de projeto de primers. Etapa 3 – Desenvolvimento – Experimentação – Implementação da solução proposta O desenvolvimento compreende a implementação do sistema web, seguindo rigorosamente a modelagem da etapa anterior. A implementação foi realizada em forma de componentes (módulos) independentes, de forma a facilitar a depuração, testes, manutenção e reuso dos mesmos. Na implementação do sistema foram utilizadas as classes de objetos da biblioteca BioPerl, já desenvolvida por pesquisadores e disponível para bioinformatas. Todo o sistema foi executado a partir de browsers, o que permite seu uso a qualquer pesquisador em qualquer plataforma de hardware. 9 São acessados bancos de dados públicos, como o NCBI (NATIONAL CENTER FOR BIOTECHNOLOGY INFORMATION, 2003), através da interface do sistema. Quando é acessada a página do NCBI, tem-se como resposta uma página em HTML (HyperText Markup Language) com os dados da pesquisa. A partir desta página são tiradas as informações que o usuário deseja. Esta tarefa é simplificada quando se utiliza a linguagem Perl, que é excelente para o tratamento de strings (seqüências de caracteres). O objetivo de implementar a etapa de pesquisa em banco de dados públicos é de facilitar tarefas que exigem que dados obtidos de um sistema, como o NCBI sejam enviados para outras ferramentas, como o ClustalW. Assim, em uma única interface, teremos acesso a várias ferramentas e vários processos serão interligados. Quando o usuário acessa a página do sistema, ele fornece dados para que sejam processados pelo servidor. Os dados são então processados no servidor e enviados apenas os resultados para o browser do usuário. Os dados obtidos através de pesquisa em banco de dados públicos e outras ferramentas são armazenados nos bancos do sistema (no servidor) para futuras consultas e para gerar relatórios com estatísticas pertinentes à pesquisa, como por exemplo, o número de determinada base nucléica em algum trecho de DNA. Etapa 4 – Validação – Teste das hipóteses levantadas – Validação da solução implementada A etapa de validação e testes compreendeu a comparação dos resultados obtidos com o sistema com resultados obtidos através de outros softwares existentes no mercado, como o GeneRunner. E quando houver a possibilidade de realizar a experiência em laboratório serão comparados os resultados gerados pelo software aos resultados obtidos na prática. O laboratório de Bioquímica e Biologia Molecular usado será um laboratório específico da área de ciências biológicas da UNIVALI, que tenha o material necessário para a validação. Etapa 5 – Divulgação – Corroboração da nova solução desenvolvida A divulgação dos resultados está sendo feita via página web, em servidor Apache. O material sobre o projeto está disponível com o sistema. II – REVISÃO BIBLIOGRÁFICA 1. MATERIAL GENÉTICO A evolução do planeta Terra produziu uma imensa diversidade de formas vivas. São aproximadamente quatro milhões de espécies de animais, vegetais, protozoários e bactérias, cujos comportamentos, morfologia e funções diferem um dos outros. As biologias celular e molecular estudam a organização que é comum entre os seres vivos. Elas analisam as moléculas e os componentes celulares com que são construídas todas as formas de vida (DE ROBERTIS e HIB, 2001). A célula é considerada, por muitos autores, a menor unidade de vida, contendo as características morfológicas e fisiológicas de todos os organismos vivos. Atualmente, aceita-se que o gene seja a menor unidade de vida, desde que devidamente definido (DAWKINS, 1979). As propriedades de um organismo vivo dependem de suas células individuais, cuja continuidade ocorre através de seu material genético. As células são divididas em dois grandes grupos: as procarióticas e as eucarióticas. As células procarióticas são estruturalmente mais simplificadas que as células eucarióticas (ZAHA, 1996, p.13) sendo que a principal diferença entre ambos os tipos celulares consiste no fato que os procarióticos não possuem membrana nuclear (DE ROBERTIS e HIB, 2001, p.3). Os componentes químicos das células são classificados em orgânicos (ácidos nucléicos, hidratos de carbono, lipídeos e proteínas) e inorgânicos (água e sais minerais). A maior parte das estruturas celulares contém lipídeos e moléculas muito grandes, denominadas polímeros, integrados por monômeros, que se prendem entre si por ligações covalentes (ibidem). Nos organismos existem três importantes polímeros: polissacarídeos, cujos monômeros são os açúcares, os ácidos nucléicos, formados pelos nucleotídeos (monômeros), e as proteínas, formadas pelos aminoácidos (ZAHA, 1996, p.18). Os polissacarídeos (hidratos de carbono), compostos de carbono, hidrogênio e oxigênio, são a principal fonte de energia da célula (DE 11 ROBERTIS e HIB, 2001, p.25). Os ácidos nucléicos serão estudados mais profundamente no decorrer do texto. 1.1. DNA e RNA Ácidos nucléicos são polímeros lineares de nucleotídeos, unidos por ligação fosfodiéster. Existem dois tipos de ácidos nucléicos: ácido desoxirribonucléico (DNA) e ácido ribonucléico (RNA). Cada nucleotídeo é formado de um grupo fosfato, um açúcar (pentose) e uma base nitrogenada (púrica e pirimídica). No DNA existem duas bases purinas (formadas por dois anéis de carbono), adenina (A) e guanina (G), e duas bases pirimidínicas (formadas por um simples anel de carbono), timina (T) e citosina (C). Entre DNA e RNA há duas principais diferenças: no RNA temse a presença da uracila (U) em vez da timina; e a pentose no RNA é a ribose e no DNA, é a desoxirribose (ZAHA, 1996, p 32). A Figura 1 mostra um exemplo de uma base nitrogenada, a timina. Figura 1. Nucleotídeo Timina Fonte: Kaiser (2003) Uma seqüência de nucleotídeos possui uma orientação química de extrema importância. Em uma fita de DNA ou RNA, numa das extremidades há um grupo fosfato ligado ao 5C (carbono 5’) do açúcar (extremidade 5’) e na outra há uma hidroxila ligada ao 3C (carbono 3’) do açúcar (extremidade 3’). Assim, na extremidade 5’ da cadeia, um grupo fosfato está presente e, na extremidade 3’, um grupo OH. Convencionou-se escrever e ler a seqüência nucleotídica da 12 esquerda para a direita, no sentido 5’ Æ 3’ (ibidem). A representação de uma cadeia polinucleotídica é feita através das letras das bases nitrogenadas: 5’ AAAGGCTTCGA 3’. O DNA é composto de duas cadeias polinucleotídeas helicoidais que formam uma dupla hélice em torno de um eixo central (ZAHA, 1996) Uma fita se une à outra por meio de pontes de hidrogênio. As pontes de hidrogênio são formadas entre pares de nucleotídeos. A ilustração da dupla hélice do DNA pode ser vista na Figura 2. Os pares de bases são: adenina que se une à timina, e a citosina que se une à guanina. Entre A e T há a formação de duas pontes de hidrogênio e entre C e G há três pontes de hidrogênio, o que faz com que sua ligação seja mais forte. As bases nucléicas que compõem o DNA são exibidas na Figura 3. Geralmente, o comprimento de uma seqüência de DNA é descrito em pares de bases (pb), quilobases (1000 pb), megabases (1 milhão pb) etc (GIBAS e JAMBECK, 2001). Figura 2. A Dupla hélice do DNA Fonte: Access (2003) 13 Figura 3. Bases nitrogenadas que compõe o DNA. Fonte: Kaiser (2003) O RNA é uma molécula de ácido nucléico formada por uma só cadeia polimérica. Ele é sintetizado a partir do molde de DNA e é utilizado na expressão da informação genética. A seqüência de bases (estrutura primária) é similar à do DNA, exceto pela substituição da desoxirribose por ribose e da timina por uracila (ZAHA, 1996). O RNA se divide em 3 tipos: RNA ribossômico (RNAr), RNA transportador (RNAt) e RNA mensageiro (RNAm). 1.2. Gene Cada molécula de DNA contém vários genes dispostos ao longo do seu comprimento. Segundo De Robertis e Hib (2001), o gene é “a seqüência de DNA que contém a informação necessária para sintetizar uma molécula de RNA e, se esta corresponde a um RNA mensageiro, a partir dele construir uma proteína”. Segundo Zaha (1996), “o gene corresponde a uma seqüência particular de DNA, codificadora de uma informação (proteína ou RNA)”. Os genes são segmentos individualizados de uma molécula de DNA separados uns dos outros por DNA intergênico (ou interveniente) (BROWN, 1999). Os genes constituem entidades biológicas por meio das quais as características físicas dos pais são transmitidas aos filhos. As 14 mutações que ocorrem nos genes podem ser benéficas ou não para a adaptação da espécie (DE ROBERTIS e HIB, 2001). Uma definição interessante e abrangente é dada por Dawkins (1979): “um gene é definido como qualquer porção do material cromossômico que dura potencialmente por um número suficiente de gerações para servir como unidade da seleção natural” e ainda “um gene é um replicador com alta fidelidade de cópia”. Há três tipos de genes: os codificadores de proteína (que são modelos para gerar as moléculas de proteína), os especificadores de RNA (que são modelos para as máquinas químicas), e os genes não transcritos (que são regiões do DNA que possuem algum propósito funcional, mas não alcançam esse propósito, sendo transcritos para criar outra molécula) (GIBAS e JAMBECK, 2001). A informação biológica que um gene transporta é o conjunto de instruções para a síntese de uma molécula de RNA que poderá, conseqüentemente, ser traduzida em proteína ou ainda orientar a síntese de uma enzima. Em organismos complexos as seqüências dos genes codificantes interrompidos são chamados de exons, e as seqüências intergênicas são chamadas de introns (ZAHA,1996). A expressão gênica é o processo pelo qual a informação biológica contida no gene se torna disponível à célula. Esse processo é relativamente constante. A expressão gênica é composta de várias fases: transcrição, tradução e a síntese da molécula de RNA ou de um polipeptídio (BROWN, 1999). 1.3. Proteínas As proteínas constituem mais da metade do peso seco de uma célula. São polímeros que desempenham inúmeras funções biológicas e também determinam a forma e a estrutura da célula. Os monômeros que compõem as proteínas são os aminoácidos. Os aminoácidos são ácidos orgânicos que possuem um grupo amina e um grupo carboxila. A união entre os vários aminoácidos é feita através de ligações peptídicas (ZAHA, 1996). 15 A constituição da proteína sintetizada depende diretamente do código genético, revelado no RNA pela seqüência de códons. O número de códons na fita de RNAm determina o tamanho da proteína. Existem, ao todo, 64 códons, que são resultantes das quatro letras (A, U, G e C) dispostas em trincas de nucleotídeos (43 = 64). Como existem mais códons (64) que aminoácidos (20), quase todos os aminoácidos podem ser reconhecidos por mais de um códon, isto porque algumas trincas de nucleotídeos atuam como sinônimos. Esta situação resulta na degeneração do código genético (DE ROBERTIS e HIB, 2001). Pode-se ver a tabela de aminoácidos e as proteínas que são codificadas por cada trinca na Figura 4. Figura 4. Tabela de Tradução de Aminoácidos Fonte: Hilbers (2003) Existem dois códons especiais: um é códon iniciador (AUG) que é aquele que inicia a síntese protéica e o outro é códon de terminação (UAA, UAG e UGA), que sinaliza onde o ribossomo deve finalisar a síntese protéica e a liberação da nova cadeia de polipeptídios. A Figura 4 mostra a tabela de tradução para a maioria dos organismos. No entanto, para as mitocôndrias e alguns organismos, a tabela é diferente. Por exemplo, no DNA da mitocôndria humana, o códon UGA do RNAm em vez de ser um códon finalizador, codifica o triptofano. 16 Quatro níveis estruturais são encontrados nas moléculas de proteínas: a estrutura primária, secundária, terciária e quaternária. A estrutura primária é a seqüência de aminoácidos (BROWN, 1999, p 83). É ela que determina os demais níveis de organização da molécula de proteína. A estrutura secundária se refere à forma espacial da proteína (sendo constituída, principalmente, por α-helices, β-folhas e laços). A estrutura terciária é a formação de novos dobramentos originados de ligações entre trechos da própria molécula. A estrutura quaternária resulta da combinação de dois ou mais polipeptídios (DE ROBERTIS e HIB, 2001). 1.4. Replicação A replicação é o processo pelo qual uma molécula de DNA se duplica, dando origem a duas moléculas idênticas à molécula inicial. Para que esse processo ocorra, há a necessidade de um conjunto de proteínas específicas (SILVA, 2001a). A seguir é descrito o processo básico simplificado de replicação, do DNA, uma vez que o processo completo é demasiado complexo para ser abordado totalmente neste trabalho. Para que ocorra a replicação de uma molécula de DNA faz-se necessário separar as duas fitas de nucleotídeos da molécula, através da enzima helicase. Durante esse processo, apenas uma região limitada de bases está não-pareada. A separação de bases ocorre em regiões chamadas de origem de replicação, e progridem ao longo da molécula na direção 3’ (BROWN, 1999). Essa etapa resulta uma nova fita contínua e vários trechos de DNA que formam uma segunda nova fita simples, então chamados de fragmentos de Okazaki. A replicação de uma fita de DNA e os fragmentos de Okazaki podem ser vistos na Figura 5. 17 Figura 5. Replicação de cadeia de DNA Fonte: Classic (2003) A síntese de novas fitas é feita pela enzima DNA-polimerase. Essa enzima tem a função de unir nucleotídeos soltos aos fragmentos de Okazaki. Como a enzima DNA-polimerase não pode sintetizar outra fita a partir de nucleotídeos livres, ela necessita de um molde de fita dupla para iniciar a síntese completa de uma fita dupla (SILVA, 2001a). Este molde, chamado de primer (iniciador) nada mais é do que uma pequena cadeia de RNA de fita simples, onde, a partir da posição 3’, a enzima DNA polimerase iniciará a incorporação de nucleotídeos, formando a fita dupla do DNA. Logo após a síntese da fita dupla de DNA, a enzima ligase une os vários fragmentos de Okazaki. Dessa forma, as duas fitas de DNA já estão terminadas e naturalmente se enrolam formando a dupla hélice (SILVA, 2001a). 1.5. Transcrição A transcrição é a síntese de moléculas de RNA usando moléculas de DNA como molde. A síntese ocorre pela união entre si dos nucleotídeos de RNA que seguem a ordem dos nucleotídeos da molécula de DNA (DE ROBERTIS, 2001). A enzima responsável pela transcrição é a RNA polimerase (SILVA, 2001a). Através da transcrição são sintetizados todos os RNAs da célula. O RNAm será usado para transferir a informação genética do DNA para a síntese protéica. Os demais RNAs têm funções finais na célula, tanto estruturais como catalíticas. Durante a transcrição ocorre o controle da 18 expressão gênica, que estabelece quais os genes são transcritos e quantos deles são necessários (ZAHA, 1996). A ligação inicial do DNA à RNA polimerase deve ocorrer em uma posição específica, um pouco antes do gene a ser transcrito. Isso é importante porque em geral uma grande parte do DNA não é gene e não deverá ser transcrito. O ponto inicial onde deve se unir a RNA polimerase é chamado de promotor. Um promotor é uma pequena seqüência de nucleotídeos reconhecida por uma RNA polimerase como o ponto ao qual deve-se ligar ao DNA a fim de começar a transcrição. Durante a etapa de alongamento da transcrição, a RNA polimerase migra ao longo da molécula de DNA desenrolando a dupla fita à medida que progride, enquanto que, seqüencialmente, une ribonucleotídeos à extremidade 3’ da molécula crescente de RNA. A fita de DNA que foi desenrolada volta ao seu estado normal. A finalização da transcrição ocorre, como na inicialização, em um ponto especifico da molécula de DNAm chamado de códon de terminação. (BROWN, 1999). 1.6. Tradução A síntese, ou tradução protéica é um processo que requer um filamento de RNAm, RNAt e subunidades ribossômicas. No ribossomo, o RNAm é traduzido em uma proteína, processo no qual também é necessária a intervenção dos RNAt. Os RNAt captam os aminoácidos do citosol e conduzem-os até o ribossomo na ordem estabelecida pelos nucleotídeos do RNAm, que são os moldes do sistema (DE ROBERTIS e HIB, 2001). Cada RNAt pode ser distinguido por sua especificidade por um dos 20 aminoácidos existentes. Por exemplo, o RNAtgli é específico para glicina, o RNAtyr é específico para tirosina. Uma molécula de RNAt forma uma ligação com seu aminoácido (e com nenhum outro) e pode reconhecer e se ligar a um códon que especifica aquele aminoácido. Pode haver mais de um RNAt para um único aminoácido, o que reflete o fato de que o código genético é redundante, e que a maioria dos aminoácidos é codificada por mais de um códon (BROWN, 1999). 19 Geralmente os códons que representam um mesmo aminoácido são parecidos entre si, e é freqüente que sejam diferentes no terceiro nucleotídeo. Devido à pouca especificidade deste nucleotídeo, diz-se que existe uma degeneração na terceira base da maioria dos códons (DE ROBERTIS e HIB, 2001). 1.7. Desnaturação e Renaturação do DNA Os termos desnaturação e renaturação são sinônimos de separação das fitas e reanelamento das fitas, respectivamente. A desnaturação ocorre quando as pontes de hidrogênio entre as cadeias complementares do DNA são rompidas e as fitas se separam. O processo inverso ocorre na renaturação. Esses processos ocorrem normalmente na natureza e podem ser desencadeados in vitro. A temperatura na qual 50% das moléculas de DNA se encontra desnaturado é chamado de Tm (Temperature Melting) (ZAHA, 1996). Para desencadear as reações acima citadas, uma das técnicas usadas é variação da temperatura. Para o rompimento de um par CG são necessárias temperaturas mais elevadas, porque entre a ligação das bases C e G há três pontes de hidrogênio, enquanto entre A e T há apenas duas pontes. É possível calcular o valor de Tm de um dado DNA a partir do conteúdo de GC, usando a fórmula: Tm (°C) = 69,3 + 0,41 (%GC) – 500 / tamanho (ibidem). A renaturação pode ocorrer mesmo quando as moléculas de DNA estão completamente separadas. Se uma solução contendo DNA desnaturado for lentamente resfriada, as fitas reassociam-se. Esse anelamento ocorre geralmente a uma temperatura 25°C abaixo da Tm. Se um resfriamento abrupto ocorre, a renaturação pode não ocorrer (ibidem). Essas características do DNA são importantes também para os experimentos de PCR, que realizam a replicação de DNA in vitro e baseiam-se justamente na desnaturação e renaturação do DNA. A PCR é explicada na seção 2.2. 20 2. TÉCNICAS DE BIOLOGIA MOLECULAR 2.1. Seqüenciamento e Clonagem Provavelmente, a técnica mais importante disponível aos pesquisadores é o seqüenciamento de DNA, processo através do qual se pode determinar a ordem exata de nucleotídeos de um trecho de DNA. Os métodos de seqüenciamento de DNA mais rápidos e eficientes estão disponíveis desde a década de 70. A primeira molécula de DNA a ser totalmente seqüenciada foi o genoma do bacteriófago X 174 com 5.386 nucleotídeos que foi completado em 1975 (BROWN, 1999). Um dos requisitos para o seqüenciamento do DNA é a habilidade para obter fragmentos definidos de DNA. Qualquer método de seqüenciamento de DNA começa com uma população de um fragmento definido de DNA. A partir dessa população, são polimerizados conjuntos de moléculas que diferem em tamanho devido à incorporação na extremidade 3´ de uma base modificada, a qual interrompe o processo de síntese da cadeia complementar (nucleotídeo de terminação). Essas moléculas são separadas por eletroforese de acordo com seu tamanho e por meio do reconhecimento de qual base modificada está na extremidade 3´ é possível determinar a seqüência original do DNA. Existem vários motivos que levam ao seqüenciamento de um genoma completo, entre eles: a descoberta das funções dos genes; a utilização de genes já conhecidos na produção de fármacos ou outros produtos de interesse biotecnológico; a identificação de genes que causam doenças, possibilitando a criação de terapias e uso em seres que ainda não desenvolveram os sintomas; e a descoberta da função (se houver) dos trechos de DNA que ainda são ditos como extragênicos (sem função alguma) (BROWN, 1999). A clonagem de genes pode ser feita através da técnica de DNA recombinante. Nesta técnica é inserido um pequeno trecho de DNA em uma molécula replicante. Esta se replicará, e junto com ela, o trecho inserido será multiplicado também (GRIFFITHS et al, 2002). 21 2.2. PCR A Polimerase Chain Reaction (PCR) é uma técnica que possibilita a reprodução de milhares, milhões ou mesmo bilhões de cópias de um determinado fragmento de DNA. Através dessa técnica, uma seqüência particular de interesse pode ser amplificada (clonada), tornando-se majoritária na amostra de DNA, e assim a seqüência amplificada pode ser utilizada para outros fins (TRIUNFOL, 2003). PCR é útil em diagnósticos para verificar a presença de um gene ou um estado mutacional de um gene específico, ou simplesmente na amplificação de um segmento específico (GRIFFITHS et al, 2002). Depois que uma seqüência é amplificada, ela pode ser separada em um experimento de eletroforese, por exemplo. O processo de PCR utiliza múltiplos ciclos de desnaturação, anelamento com primers e alongamento da seqüência por ação da polimerase (LIFE TECHNOLOGY, CA. 2000). Esses primers são pequenos fragmentos de DNA complementares a cada uma das extremidades da seqüência de DNA de interesse. Cada ciclo se inicia com a desnaturação da dupla-hélice do DNA, elevado a altas temperaturas (95 °C), por aproximadamente 1 minuto. Esta etapa é seguida da etapa de anelamento dos primers ao DNA molde, a temperaturas que variam de 55 ºC por 1 a 2 minutos. Posteriormente ocorre a elongação de cadeia por ação da polimerase, em geral entre temperaturas de 72 °C durante 2 a 5 minutos. Então cada cadeia sofre a desnaturação novamente e se tornam moldes para mais um ciclo. O número de ciclos, a temperatura de anelamento, o tempo de cada ciclo e outros componentes de PCR variam de acordo com o objetivo e condições utilizadas (SILVA, 2001a). A Figura 6 mostra uma representação da técnica de PCR. Ao final do primeiro ciclo, há duas fitas da molécula original de DNA, mais duas cópias da região de interesse. Esses ciclos são repetidos várias vezes, tipicamente 30 vezes, num aparelho chamado termocirculador. Ao final desses ciclos de amplificação existem, tipicamente, mais que 1 milhão de cópias do segmento de DNA de interesse para cada molécula molde original da amostra inicial. (TRIUNFOL, 2003). 22 Figura 6. Reação em cadeia da polimerase – PCR Fonte: Triunfol (2003) Para a amplificação de um trecho de DNA através da técnica de PCR são necessários dois pares de primers em filamentos opostos. Para o seqüenciamento de um trecho de DNA é necessário apenas um primer que se anele no início do trecho. Após a replicação do trecho entre os dois primers, as duas novas seqüências são desnaturados por aquecimento para gerar moldes unifilamentares, e um segundo ciclo inicia (GRIFFITHS et al, 2002). Os parâmetros que afetam a eficiência da reação de PCR são: temperatura de anelamento (Ta) e tempo de anelamento, temperatura de desnaturação (Tm, muito importante) e tempo de desnaturação, PCR buffer (tampão que mantém o pH e a quantidade de sais necessários para a atuação da enzima), concentração de MgCl2, concentração e projeto de primer e cossolventes, entre vários outros. Há dois termos muito utilizados em reações de PCR que não podem ser confundidos, a Tm e a Ta. A Tm (temperature melting – temperatura de ‘derretimento’) é a temperatura na qual 50% do DNA se encontra desnaturado (ZAHA, 1996). E a Ta (annealing temperature - temperatura de anelamento) é a temperatura na qual o primer se anela à seqüência alvo. Geralmente, a Ta é calculada 5 °C abaixo da temperatura estimada de Tm (ALKAMI, 1999). Três são as métricas utilizadas para medir a qualidade do trecho amplificado pela reação de PCR: especificidade, eficiência e fidelidade. 23 A especificidade é a medida para saber se a reação amplifica apenas a região-alvo e não outras regiões da molécula, o que ocasionaria “falsos-positivos”, com a amplificação de DNA, mas não o trecho desejado. Ela é muito influenciada pelo primer utilizado na reação, principalmente seu tamanho e degeneração. A concentração de primers também é uma variável importante, sendo que baixas concentrações aumentam a especificidade, enquanto altas concentrações facilitam o anelamento não específico (ALKAMI, 1999). A eficiência, que trata da rentabilidade da reação de PCR. A eficiência pode ser alta se o produto amplificado for pequeno e se os ciclos da PCR forem bem ajustados, permitindo um anelamento e polimerazação rápidos. Um aumento na concentração de íons Mg++ também pode aumentar a eficiência da reação, embora aumentos exagerados tendem a causar reações menos específicas (ALKAMI, 1999). A última métrica a ser analisada é a fidelidade (exatidão ou acurária), que verifica se o produto amplificado é uma cópia idêntica à original. Pode-se aumentar a fidelidade diminuindo a concentração de dNTP e íons Mg++ numa proporção equimolar, mas, principalmente, a fidelidade está relacionada ao tipo da polimerase utilizada na PCR. (ALKAMI, 1999). Há alguns tipos de reações de PCR com processos e finalidades diferentes. Entre eles, destacam-se no contexto deste trabalho: Nested PCR, Multiplex PCR, Universal PCR e Degenerate PCR (SINGH e KUMAR, 2003). • Nested PCR: é utilizado quando a quantidade de seqüência-alvo é muito pequena (< 100 moléculas). Este processo consiste em amplificar, primeiramente, uma região da seqüência, e depois disso realiza-se uma segunda PCR que amplificará um trecho menor do resultado da primeira reação de PCR. Para este tipo de PCR são necessários quatro primers. • Multiplex PCR: esta técnica envolve a amplificação de dois ou mais trechos de uma mesma seqüência-alvo. Preferencialmente é utilizado um único primer, mas pode-se utilizar mais primers. No projeto de multiplex primers, a característica mais importante a ser analisada é a temperatura de anelamento que deve ser similar entre os primers projetados. Nesta técnica, deve ser levado em consideração o tamanho do produto, para que eles possam ser separados por eletroforese com eficiência. Multiplex PCR é normalmente utilizado para detecção de mutações. 24 • Universal PCR: são PCRs que utilizam primers projetados a partir da seqüência de aminoácidos de uma proteína de interesse. É utilizado quando não se conhece a seqüênciaalvo (genômica), apenas a proteína possivelmente sintetizada por um gene dessa seqüênciaalvo. • Degenerate PCR: pesquisadores aspiram a clonagem de genes novos, e nem sempre a seqüência é totalmente conhecida. Então, pode ser usada uma união de primers degenerados com universal primers para descobrir a seqüência de interesse. Para esta técnica utilizam-se primers degenerados (explicado na seção 2.2.1). Primers degenerados baseadas em seqüências de aminoácidos de regiões conservadas podem ser usados para a procura de membros de uma família de genes, genes homólogos de diferentes espécies e vírus relacionados. 2.2.1. Primers Primer, ou iniciador, é uma pequena cadeia de DNA de fita simples, onde, a partir da posição 3’, a enzima DNA polimerase iniciará a incorporação de nucleotídeos, formando a fita dupla do DNA. Os primers são produzidos in vivo ou in vitro. Na forma natural, os primers são produzidos por uma RNA polimerase especial chamada Primase (SILVA, 2001a). O projeto (design) de primer é uma das mais importantes etapas para que se tenha uma reação de PCR bem sucedida (ALKAMI, 1999), uma vez que são eles os responsáveis por prover um pequeno trecho de dupla fita no qual a taq-Polimerase possa iniciar a replicação. Existem muitos pontos que devem ser levados em consideração para se projetar um primer de boa qualidade. Segundo Life Technology CA (2000), Afseth (1997), Innis (1990), os principais pontos de análise são: • Tamanho da seqüência do primer. Normalmente os primers têm entre 18 e 24 nucleotídeos. O primer deve ser comprido o suficiente para ser único na seqüência e reduzir a probabilidade da seqüência ser encontrada em locais não alvos na seqüência. Entretanto, primers muito grandes são muito caros para fazer; não conferem grande sensibilidade; e hibridizam mais lentamente, fazendo com que o rendimento diminua. • Temperatura de anelamento: deve ser suficiente baixa para garantir a eficiência do anelamento do primer com a seqüência alvo, e deve ser suficiente alta para minimizar o anelamento com seqüências não alvo e formação de estruturas secundárias. Quando há dois 25 primers na mesma solução, é muito importante ter uma pequena diferença de temperatura de hibridização entre os primers. Normalmente a diferença de Ta entre dois primers é de 5 °C. • Quantidade de nucleotídeos G e C no primer: geralmente é preferível que a porcentagem de GC no primer esteja entre 50% a 60%, ou na mesma proporção da seqüência original. • Existe uma relação entre a temperatura de anelamento com a quantidade de GC do primer. Como existe uma tripla ligação entre as bases G e C e uma dupla ligação entre A e T, a temperatura de anelamento sofre alteração devido à quantidade de bases GC e AT. Quanto maior for a quantidade de GC em um primer, maior será a temperatura de anelamento. Existem duas fórmulas para calcular a Ta de um primer: primers com 20 ou menos pares de bases: Ta = [4(G + C) + 2(A + T)] - 5°C; primers com mais de 20 pares de bases: Ta = 62.3°C + 0.41°C (%GC) - 500/tamanho - 5°C • Nucleotídeos na extremidade 3’: deve-se evitar trechos complementares na extremidade 3’, a fim de diminuir a ocorrência de dímeros de primers, que ocorrem quando os primers anelam-se um ao outro, e não se anelam à seqüência alvo. • Deve-se evitar primers com potencial para formar estruturas secundárias internas, isto é, o primer anelar-se em si mesmo e não anelar à seqüência alvo. • Deve-se evitar uma extremidade 3’ rica em GC. Um valor bom é ter primers com três nucleotídeos A ou T dentre os cinco últimos nucleotídeos. • Os últimos três nucleotídeos precisam anelar-se perfeitamente à seqüência alvo para a enzima polimerase fazer o alongamento da seqüência. • Deve-se evitar um trecho com nucleotídeos contínuos iguais, por que estes trechos são facilmente encontrados em diversas regiões do genoma, geralmente no início e no fim, e assim não se consegue uma boa especificidade. • Um método utilizado é a inserção de bases degeneradas nos primers. As bases degeneradas podem ser um de dois ou mais nucleotídeos, conforme a Tabela 1. Primers degenerados possuem pelo menos uma posição em sua seqüência que pode conter doi ou mais nucleotídeos diferentes. O número de bases degeneradas é inversamente proporcional à especificidade do primer. Não se deve incluir bases degeneradas na extremidade 3’ do primer, para que não inicie a polimerização em trecho errado da seqüência. É recomendado usar altas concentrações de primers degenerados em PCR porque muitos dos primers em uma solução degenerada não são específicos. 26 Tabela 1. Tabela de Degenerações de Bases Nucléicas IUPAC A C G T/U R Y S W Base Adenina Citosina Guanina Timina/Uracila A or G C or T G or C A or T IUPAC W K M B D H V N Base A or T G or T A or C C or G or T A or G or T A or C or T A or C or G qualquer base Fonte: Triunfol (2003) Existem várias ferramentas computacionais que projetam primers. Um exemplo de ferramenta disponível na internet é Web Primer (WEB PRIMER, 2003), e outra ferramenta, também livre, é Gene Runner. A ferramenta Web Primer aceita dois tipos de entrada de dados: uma maneira é através do identificador do GenBank da seqüência a ser amplificada, e a outra maneira é a entrada da seqüência de aminoácidos. Esta ferramenta provê primers para duas finalidades distintas, seqüenciamento ou PCR. A ferramenta Gene Runner para Windows está disponível para download gratuitamente em Gene Runner (2003). Esta ferramenta provê vários serviços, como projeto de primers, alinhamento se seqüências, tradução para proteínas, e outros. Para o projeto de primers esta ferramenta não é muito eficiente, pois ela não restringe os primers de acordo com os parâmetros de entrada. 2.3. Eletroforese Eletroforese é a técnica pela qual fragmentos de DNA de diferentes tamanhos são separados por peso molecular. As seqüências de DNA são colocadas em um equipamento que contém canais preenchidos de gel, e elas percorrem esse gel, movidos por uma diferença de potencial elétrico. Se o peso molecular de uma seqüência é maior que o de outra, o primeiro percorre o gel mais lentamente que o segundo (TRIUNFOL, 2003). A Figura 7 mostra um gel de eletroforese. Nas colunas de 1 a 14 há poços contendo diferentes seqüências de DNA. Pode-se ver, no lado esquerdo dessa Figura, a indicação dos tamanhos dos fragmentos separados no gel. 27 Figura 7. Exemplo de gel de eletroforese Fonte: Threlfall et al (2003) Trechos de DNA, depois de amplificados por PCR, e possivelmente cortados por enzimas de restrição, podem ser separados pela eletroforese e comparados a outras seqüências, para verificar se duas seqüências possuem o mesmo gene, por exemplo. 3 – BIOINFORMÁTICA 3.1. Bancos de Dados Biológicos Públicos Os bancos de dados em biologia molecular são importantes principalmente para proporcionar à comunidade científica um grande repositório de dados de fácil acesso 28 (PROSDOCIMI, 2003a). Esses bancos de dados possuem seqüências de DNA, RNA, proteínas, genes, ESTs, revistas e artigos de ciências biológicas e médicas, entre outras informações. Os bancos de dados estão se expandindo rapidamente. De abril de 1988 até o final de 1999, os projetos genoma cobriram 83 espécies com 21 projetos completados (predominantemente microorganismos) e no ano de 2000 existiam 62 projetos em andamento. Esses projetos são realizados através das técnicas de PCR e pelos sistemas de seqüenciamento automático (QUEIROZ, 2002). Segundo National Center For Biotechnology Information (2003), o número de seqüências depositadas no GenBank em 2002 era de mais de 22 milhões de seqüências. Com o advento do seqüenciamento do DNA e, principalmente, a partir da década de 1990, do seqüenciamento em larga escala, foi necessária a construção de bancos de dados mais robustos para abrigar o número de seqüências obtidas pelos pesquisadores. O NCBI, por exemplo, foi criado pelo NIH (National Institutes of Health) em 1988 para abrigar esse tipo de informação (PROSDOCIMI, 2003a). Para criar um índice para suas entradas, foi criado um identificador, o GenInfo Identifier (gi), que é um número inteiro. Este número é único para cada seqüência (TRIUNFOL, 2003). O NCBI, em cooperação com o EMBL (European Molecular Biology Laboratory) e outras organizações internacionais, fornece a seqüência mais completa de dados de seqüências de DNA disponível no mundo, assim como o PubMed, um banco de dados taxionômico (classificação), e um ponto de acesso alternativo para dados de estruturas e seqüências de proteínas. Esse banco de dados, conhecido como GenBank, pode ser acessado a partir do site do NCBI (GIBAS e JAMBECK, 2001). O NCBI mantém dados de seqüências de todos os organismos, todas as fontes e todos os tipos de moléculas de DNA, RNA, estruturas 3D de proteínas,... O PubMed é um serviço do National Library of Medicine, e está disponível no site do NCBI. Ele inclui mais de 11 milhões de artigos biomédicos. O PubMed inclui muitos artigos completos e outras fontes relacionadas, como revistas científicas. 29 3.2. Alinhamento de Seqüências A busca de similaridades entre duas ou mais seqüências pode ser feita através das técnicas de alinhamento. Alinhar duas seqüências significa estabelecer uma correspondência entre as bases nucléicas ou aminoácidos de ambas seqüências, procurando dar prioridade a monômeros iguais. O alinhamento de seqüências é uma das ferramentas de bioinformática mais utilizada. O alinhamento pode ser feito para vários propósitos. Entre eles podem ser citados dois principais: busca de similaridade e busca de homologia. Os termos similaridade e homologia são muitas vezes usados de forma errônea. O termo similaridade refere-se à presença de locais similares e idênticos em duas seqüências. O termo homologia indica que duas seqüências possuem uma probabilidade alta de compartilharem o mesmo ancestral (GIBAS e JAMBECK, 2001). Em um alinhamento, quando há monômeros iguais em duas ou mais seqüências, diz-se que há match. Quando um monômero não pode ser alinhado a outro igual na outra seqüência, há a substituição por um sinal (por exemplo, um “–“), ou a inserção de um espaço em branco (gap). Na Figura 8, há um exemplo de alinhamento entre duas bases de seqüências. Para cada match, substituição, remoção ou inserção há uma pontuação (score) específica. Uma pontuação maior representa um melhor alinhamento, ou seja, mais similares são as seqüências. O alinhamento pode ser feito entre duas ou mais seqüências. Se o alinhamento é entre duas seqüências, é chamando de alinhamento par-a-par; se forem entre três ou mais seqüências, é chamado de alinhamento múltiplo (GUIMARÃES e MELO, 2003). Há dois tipos de algoritmos para alinhamento par-a-par: alinhamento global e alinhamento local. O primeiro faz o alinhamento de duas seqüências por todo o seu comprimento. O Align é uma ferramenta que se baseia no alinhamento global. O segundo tipo de alinhamento é o local. O alinhamento local é muito utilizado quando não se conhecem as seqüências inteiras a serem alinhadas. Muitas vezes é necessário procurar em outras seqüências disponíveis apenas trechos que sejam iguais (GIBAS e JAMBECK, 2001). Por exemplo, pode-se utilizar o alinhamento local para descobrir a quais seqüências um primer se anela. A principal ferramenta disponível que utiliza alinhamento local é o Blast (Basic Local Alignment Search Tool). Esse tipo de alinhamento será utilizado neste trabalho para verificar a especificidade do primer. 30 Através de interfaces web pode-se alinhar uma determinada seqüência a todas as outras disponíveis em banco de dados biológicos públicos na internet (alinhamento par-a-par). Com a ferramenta Blast, disponível no site do NCBI, pode-se fazer o alinhamento par-a-par da seqüência desejada a todas as outras disponíveis nos repositórios do próprio site. E além disso, o alinhamento é utilizado para outras ferramentas, como análise filogenética. As seqüências de DNA podem ser comparadas (alinhadas) para localizar semelhanças que sugerem uma relação das moléculas pela forma ou função ou ancestralidade comum (GIBAS e JAMBECK, 2001). Na Figura 8 há a ilustração de um alinhamento feito pelo software Blast. Na parte de cima da Figura o software mostra linhas coloridas significando cada umas das seqüências do banco que alinham-se a seqüência procurada. Quando o mouse passa sobre as linhas, vê-se a pontuação do alinhamento dessa seqüência em relação à seqüência procurada. Ao clicar com o mouse sobre as linhas pode-se ver o alinhamento. Na parte de baixo da Figura 8 pode-se ver um alinhamento, destacando um alinhamento perfeito entre duas bases (1), um gap (2) e um não-alinhamento (3) Figura 8. Alinhamento par-a-par entre seqüências realizado pelo Blast Fonte: Blast (2003) 31 Um alinhamento múltiplo é utilizado para estudar grupos de genes ou proteínas relacionados, para verificar relações evolutivas entre os genes e para descobrir padrões que sejam compartilhados entre grupos de seqüências funcional ou estruturalmente relacionadas (ibidem). O programa mais comumente utilizado para alinhamentos múltiplos é o ClustalW. Esse software está disponível em Clustalw (2003). Além de ser acessível por sua interface web disponível gratuitamente, ele também pode ser instalado no computador do usuário, incluindo versão para Linux. Na Figura 9 há a ilustração de um alinhamento feito pelo software ClustalW. Do lado esquerdo da Figura há o identificador das seqüências no GenBank que foram utilizadas no alinhamento. Do lado direito da Figura há o alinhamento, onde destacamos o alinhamento perfeito entre duas bases (1), um gap (2) e um não-alinhamento (3). Pode-se notar que no início do alinhamento há uma extensa faixa com gaps, para melhorar o alinhamento. Figura 9. Alinhamento múltiplo entre seqüências feito pelo ClustalW Fonte: ClustalW (2003) Vários são os algoritmos de pontuação para o alinhamento de seqüências par-a-par. Alinhamento de seqüências de aminoácidos relativamente semelhantes recebem pontuação positiva e não semelhantes recebem pontuação negativa (lembrando que várias seqüências diferentes podem gerar o mesmo aminoácido). Um dos métodos mais utilizado nos últimos anos foi PAM (Point 32 Accepted Mutation). Esse método analisa seqüências que sofreram divergência evolucionária. A pontuação reflete a probabilidade de as seqüências terem sofrido mutações. Outro método utilizado é o BLOSUM (Blocks Substitution Matrix). Ele tem se mostrado superior à matriz PAM para detectar os parentescos biológicos entre seqüências moderadamente divergentes (BONATO, BONATO e PEREIRA, 2003). Para relações mais próximas entre as seqüências é utilizada a matriz BLOSUM62, e para relações mais distantes é utilizada a matriz BLOSUM45 (GIBAS e JAMBECK, 2001). Um algoritmo utilizado para alinhamentos múltiplos é conhecido como SP (Sum-of-Pairs). Cada linha de uma matriz recebe uma das seqüências a serem alinhadas. Este método consiste em atribuir uma pontuação para cada coluna e tomar a soma desses valores como sendo o score do alinhamento. O score de cada coluna é a soma das pontuações de cada par de alinhamentos (GUIMARÃES e MELO, 2003). 3.3. Árvores Filogenéticas Segundo Gibas e Jambeck (2001), “a inferência filogenética é o processo de desenvolver hipóteses sobre a relação evolutiva sobre organismos com base nas suas características observáveis”. Antigamente, a teoria da evolução se baseava em características visíveis dos seres. Lineu classificou os seres em reinos, filos, classes, ... pela simples observância da anatomia de cada um deles e desenhou uma árvore filogenética, que mostra a descendência entre os seres. As árvores filogenéticas mostram a relação de descendência entre os organismos e o tempo que se passou entre o ancestral comum de duas espécies (PROSDOCIMI, 2003). As árvores filogenéticas servem, por exemplo, para, procurar entender a origem do homem ou reconstituir a história epidemiológica da AIDS a partir de dados do genoma do vírus HIV (PROSDOCIMI et al., 2003). Quando se trata de evolução das espécies há dois termos que não podem ser esquecidos: ortólogos e parólogos. Os ortólogos são genes que têm a mesma função e parólogos não possuem o mesmo papel, mas possuem um ancestral em comum. Ortólogos ocorrem em espécies diferentes, e parólogos existem no mesmo genoma mas têm funções diferentes (GIBAS e JAMBECK, 2001). Árvores geralmente são utilizadas para distinguir ortólogos de parólogos (HIGGINS e TAYLOR, 2000). 33 A Figura 10 mostra a árvore filogenética de quatro seqüências de nucleotídeos. Essas são as mesmas seqüências usadas no exemplo de alinhamento múltiplo, da Figura 9. Nota-se que entre a primeira seqüência e a segunda (1) há uma descendência próxima, porque a distância entre elas na arvore é pequena. Mas entre as duas primeiras seqüências e duas últimas, há distância entre elas é maior (2). Logo, o ancestral comum entre a primeira e a segunda seqüência é mais próximo. Figura 10. Árvore Filogenética feita pelo software ClustalW Fonte: ClustalW (2003) Há softwares que geram a árvore filogenética baseada em alinhamentos. O mais utilizado atualmente é o pacote Phylip (PHYLIP, 2003). Ele é um conjunto de 30 programas, executados separadamente, através da linha de comandos. Este pacote de softwares permite a análise de vários tipos de dados, como DNA, proteínas e outros, e gera árvores por vários métodos. Este pacote tem na linha de comandos um menu de opções que facilitam a interação com o pesquisador. O menu do programa DNAPARS, que faz parte do programa Phylip, pode ser visualizado na Figura 11. Figura 11. Menu de opções do pacote de programas Phylip Fonte: Phylip (2003) 34 3.4. Simuladores de Eletroforese Existem softwares disponíveis na web que simulam a eletroforese. Um exemplo, é o Gel Electrophoresis Simulator (COWAN, 2003), que pode ser visto na Figura 12. Ele tem a possibilidade de ter no máximo oito fragmentos de DNA e o gel utilizado é agarose. O maior problema desse simulador é que ele não mostra o tempo de corrida dos fragmentos no gel. Mas podem ser alterados o potencial de eletricidade e a concentração do gel de agarose. Figura 12. Tela do software Gel Electrophoresis Simulator Fonte: Cowan (2003) Outra ferramenta disponível na web é Simulation of Electrophoresis & Sequence Building of DNA (CRAIG, 2003). A tela desse software pode ser vista na Figura 13. 35 Figura 13. Tela do software Simulation of Electrophoresis & Sequence Building of DNA Fonte: Craig (2003) 4 – SISTEMAS PARA WEB Com o desenvolvimento e popularização da Internet, intensificaram-se as tecnologias e ferramentas que auxiliam na criação de sistemas que executam através da Internet, principalmente através de aplicações para web (world wid web). Esse tipo de sistema possui, como vantagens principais, (i) a independência de plataforma de hardware, pois o código correspondente, ou é interpretado, ou executa apenas no servidor; (ii) não há necessidade de instalar o sistema localmente, uma vez que o mesmo é acessado diretamente por um navegador padrão (brownser); (iii) a disponibilidade mundial do sistema; e (iv) a possibilidade de monitorar cada execução do sistema. 36 4.1. Perl Em bioinformática há uma grande variedade de ferramentas e um montante cada vez maior de dados disponíveis em bancos de dados públicos. Uma linguagem muito utilizada para analisar e extrair apenas a informação necessária de grandes quantidades é a Perl (Practical Extraction and Report Language – Linguagem Prática para Extração e Relatórios) (GIBAS e JAMBECK, 2001). Essa linguagem contém inúmeras facilidades para comparação de strings. Ela faz uso intensivo de expressões regulares que são muito úteis em análises de seqüências da DNAs e proteínas, por exemplo. Muitos dos dados biológicos são armazenados em bancos de dados e grandes arquivos de texto. A Perl é mais eficiente para extrair esses dados que outras linguagens, como C ou Java, pelas funcionalidades incluídas em sua sintaxe. Com sua capacidade altamente desenvolvida para detectar padrões em dados, e especialmente seqüências de caracteres em texto, tornou-se a opção mais utilizada para esta tarefa (GIBAS e JAMBECK, 2001). A riqueza de códigos Perl existentes para a bioinformática, a integração sem problemas dos códigos com sistemas baseados em Unix, a portabilidade para várias plataformas e uma comunidade de usuários incrivelmente entusiástica tornam a Perl a linguagem de scripts preferida pelos bioinformatas (ibidem). Outro motivo que leva o uso da Perl é que está disponível gratuitamente para vários sistemas operacionais, incluindo Linux. A Perl está disponível em Christiansen (2003). Em várias versões do Linux, o compilador Perl está presente, sem que haja a necessidade de instalálo (SILVA, 2001b). Outra grande vantagem pertinente à Perl é a possibilidade de se utilizar alguns módulos Perl, como o CGI (Common Gateway Interface), por exemplo, para tarefas específicas. Os módulos são bibliotecas com funções relacionadas entre si. Por exemplo, o módulo DBI (Database Interface) é usado para escrever programas que interagem com bancos de dados relacionais (GIBAS e JAMBECK, 2001). Os módulos Perl estão disponíveis em CPAN (2003). Os módulos são gratuitos e estão divididos em quatro pastas: por autores, por categoria, por módulo e mais recentes. Para a instalação dos módulos estão disponíveis arquivos readme ou install juntamente com os módulos (SIEVER, SPAINHOUR e PATWARDHAN, 1999). 37 Para bioinformatas o módulo mais usado é o BioPerl, do Projeto Bioperl (juntamente com Biopython, Biojava e Bioxml). Este projeto dedica-se à criação de uma biblioteca de código aberto de módulos de pesquisa em bioinformática (GIBAS e JAMBECK, 2001). 4.1.1. Principais Módulos Perl Os principais módulos Perl utilizados em bioinformática são: CGI.pm, LWP, DBI, GD e PDL e BioPerl. No texto a seguir há uma breve descrição dos módulos (com exceção do módulo BioPerl, descrito em 3.1.3), segundo Gibas e Jambeck (2001): • CGI.pm (Simple Common Gateway Interface Class) é um módulo para programação de páginas web interativas. As funções que fornece estão voltadas para a formatação de páginas web, e para a criação e processamento de formulários nos quais os usuários podem digitar informações. Esta biblioteca define objetos CGI, entidades que contêm o valor da string de busca (por exemplo, o endereço URL - Uniform Resource Locator) e outras variáveis de estado. Usando métodos de um objeto CGI, pode-se examinar palavras-chave e parâmetros passados para seu script, e criar formulários que iniciam com valores que vieram dos parâmetros (BIOPERL, 2003) • LWP.pm (Library for Web Programming) Utilizando LWP, os programas Perl podem enviar dados para formulários, recuperar páginas da web e eliminar grande parte do tédio de interagir manualmente com os serviços da web utilizando um navegador. Para recuperar uma página web, pode-se utilizar o módulo LWP::Simple e o comando print get (“http://www.univali.br”);. Este comando retornará o código fonte da página solicitada. • DBI: O módulo DBI (Database Interface) é um módulo para escrever programas que interagem com banco de dados relacionais. Permite escrever programas que colocam dados em bancos de dados, consultam os bancos de dados, e extraem registros de banco de dados, sem prestar atenção ao banco de dados específico que está sendo utilizado. Um script de banco de dados para Oracle, por exemplo, pode ser utilizado em um banco de dados MySQL, sendo necessárias apenas alterações secundárias. Esse módulo define um conjunto de métodos, variáveis e convenções que fornecem uma interface consistente para banco de dados (BIOPERL, 2003). 38 • GD: O módulo GD permite gerar gráficos utilizando programas Perl. É muito utilizado para criar esquemas simples e personalizados em páginas da web, como estatísticas de utilização de servidor da web (GIBAS e JAMBECK, 2001). O GD define três classes: GD::Image, GD::Font e GD::Polygon (BIOPERL, 2003) O Paint-Blast.pm, um módulo que gera representações gráficas de alinhamentos de seqüências a partir de saídas Blast, é um exemplo de aplicativo GD. Está disponível no ScriptCentral do Bioperl. • PDL: O módulo PDL (Perl Data Language) é uma biblioteca para fazer cálculos com matrizes. Em biologia computacional, é muito utilizada para cálculos com microarrays e imagens. Por exemplo, géis bidimensionais que medem a interação entre proteínas são geralmente armazenados como imagens, que nada mais são que matrizes, e métodos de processamento de imagens podem localizar e comparar características dos géis. Sem o módulo PDL, para processar uma matriz de n dimensões, é necessário ter n loops de controle. Para cada dimensão se faz necessário ter um loop para percorrer toda a matriz, indexando linhas, colunas, etc. Se for usado o módulo PDL, o programa Perl interpreta cada matriz como se fosse uma variável escalar, sem a necessidade de identificar a posição da matriz. Por exemplo, para somar duas matrizes e colocar o resultado em uma terceira o comando seria o seguinte: $a = $b + $c. 4.1.2. BioPerl Bioperl é uma coleção de módulos Perl que facilitam o desenvolvimento de programas Perl para aplicações em bioinformática. Ele fornece classes Perl reutilizáveis que facilitam a escrita de scripts. O BioPerl não fornece programas completos, e sim métodos para tarefas comuns em bioinformática, como manipulação de seqüências, acesso à banco de dados usando uma gama de formatos disponíveis dos vários programas de biologia molecular incluindo Blast e ClustalW. O bioinformata é responsável por escrever programas que unam estes módulos (BIOPERL, 2003). O BioPerl está disponível em BioPerl (2003). Juntamente com a instalação do módulo BioPerl está disponível o arquivo de ajuda e manual de instalação para os maiores sistemas operacionais, incluindo Linux e Windows (TISDALL, 2001). 39 O módulo Bio::Perl fornece algumas funções simples, como por exemplo, este script abaixo recupera uma seqüência do banco de dados do SwissProt (SWISS-PROT, 2003) e escreve-a em formato Fasta. use Bio::Perl; # Este script executa apenas em computador conectado internet. $seq_object = get_sequence('swissprot',"ROA1_HUMAN"); write_sequence(">roa1.fasta",'fasta',$seq_object); O Bio::Perl tem inúmeras outras funções para facilitar algumas tarefas, incluindo: • get_sequence – recupera uma seqüência de um banco de dados. • read_sequence – lê uma seqüência de um arquivo. • read_all_sequences – lê todas as seqüências de um arquivo • new_sequence – produz uma seqüência Bioperl de uma string apenas • write_sequence – escreve uma seqüência ou um vetor de seqüências em um arquivo • translate – fornece a tradução de uma seqüência de DNA em proteína • translate_as_string – fornece a tradução de uma seqüência, devolvendo apenas uma string • blast_sequence – faz um alinhamento BLAST (par-a-par) com todas as seqüências do NCBI. • write_blast – escreve um relatório Blast em um arquivo. 4.2. HTML A HTML (HyperText Markup Language) é uma linguagem de marcação: um conjunto de indicadores (chamados de elementos) que definem o texto e os objetos do documento. A HTML marca o documento com notas (conhecidas como tags) que têm o objetivo de informar ao software que está lendo o documento, por exemplo, onde deverá ser iniciado um novo parágrafo ou se determinado texto corresponde ao título de uma seção ou deve ser enfatizado (SAVOLA, WESTENBROEK e HECK, 1997). Não é necessário ter uma plataforma de computador específica para visualizar documentos feitos em HTML, pois ela é uma linguagem portável, que pode ser transportada para qualquer ambiente computacional (ibidem). Essa é uma das maiores facilidades encontradas na HTML. 40 A HTML é utilizada para fazer páginas da web. Ela produz desde textos simples até formulários. Mas com a HTML não é possível fazer páginas web dinâmicas ou fazer páginas que acessem algum banco de dados. Então, para solucionar este problema, geralmente é usada outra linguagem para o acesso a banco de dados, como PHP e ASP (Active Server Pages), por exemplo. Uma vantagem da HTML é que ela pode ser utilizada em conjunto com outras linguagens, como por exemplo, com PHP e Java. Isso quer dizer que o código fonte de uma página web pode ter códigos em PHP, HTML e Java. 4.2. PHP PHP é uma linguagem em forma de script (parte de código HTML que é interpretado pelo Browser ou pelo servidor web) que interage ao lado do servidor para a criação de páginas dinâmicas na web (ANSELMO, 2000). O código PHP é escrito em um documento HTML para conferir-lhe a capacidade de gerar instruções específicas (CASTAGNETTO et al, 2001). O PHP pode ser obtido no site PHP oficial em PHP (2003), gratuitamente (ANSELMO, 2000). O pacote PHP básico é distribuído através de código-fonte e binários pré-compilados. Estes são disponíveis como distribuições RPM (RPM Package Manager – utilitário usado para instalar, desinstalar e atualizar pacotes de software, disponível em Herrold (2003)) para instalações Linux que suportem o formato RPM (CASTAGNETTO et al, 2001). As páginas que contêm código PHP são visualizadas no browser do usuário em formato HTML apenas, preservando o código do programador. O servidor web fica encarregado de executar o código PHP no servidor. Normalmente a saída de um código PHP é HTML, que é apresentada ao usuário. Por exemplo, se uma página web mostra dados de uma tabela do banco de dados, o código para essa tarefa pode ser feito em PHP. Mas o código que é mostrado na página do usuário tem apenas tags HTML com os dados da tabela. Os servidores web mais comuns são: Apache (principalmente para Linux) e IIS (Microsoft Internet Information Server para Windows). No sistema descrito por este trabalho, será usado o servidor Apache juntamente com o sistema operacional Linux. 41 A sintaxe do PHP é muito semelhante à do C e Perl, e de fácil aprendizado. Além disso, outras vantagens que fazem do PHP uma linguagem muito utilizada são: com PHP pode-se criar e alterar cookies (arquivos que determinadas páginas guardam no disco rígido do usuário para obter referência do próprio usuário), autenticações, redirecionar usuários, e principalmente conectividade com os mais variados bancos de dados (ANSELMO, 2000). 4.3. Banco de Dados Em conseqüência da grande quantidade de informações de seqüências de nucleotídeos e de aminoácidos que são produzidas atualmente, principalmente em projetos genoma, transcriptoma e proteoma, o uso dos bancos de dados (BD) vem assumindo uma importância crescente na bioinformática (PROSDOCIMI, 2003b). Um banco de dados é um conjunto de informações manipuláveis de mesma natureza inseridas em um mesmo local, obedecendo a um padrão de armazenamento. Ele é basicamente um sistema de manutenção de informações por computador, capaz de manter as informações organizadas e torná-las disponíveis quando solicitadas, com rapidez e confiabilidade. Existem várias ferramentas para gerenciamento de banco de dados relacionais como MySQL, Oracle e PostGreSQL (SILVA, 2001b). Os modelos de banco de dados podem ser divididos em: modelos lógicos com base em objetos, modelos lógicos com base em registros e modelos físicos. Cada um deles se divide em mais categorias. O modelo lógico com base em registros se divide em: modelo relacional, modelo de rede e modelo hierárquico. Este projeto usará o modelo relacional que é caracterizado pela utilização de um conjunto de tabelas. Elas são usadas para representar tanto os dados como a relação entre eles. Cada tabela possui múltiplas colunas (campos) e cada uma possui um nome único. Cada linha da tabela é chamada de registro e contém os dados da tabela. O SGBD (Sistema Gerenciador de Banco de Dados) é um sistema que tem como objetivo proporcionar um ambiente para a recuperação e armazenamento das informações do banco de dados (SILBERSCHATZ, KORTH e SUDARSHAN, 1999). 42 4.3.1. SQL Para trabalhar com um SGBD, é necessário utilizar uma linguagem de acesso ao banco. A SQL (Structured Query Language) é certamente o padrão para a linguagem de banco de dados relacionais. Ela é usada para consulta em banco de dados, para a definição da estrutura de dados, para a modificação de dados no banco e para especificação de restrições de segurança no banco (SILBERSCHATZ, KORTH e SUDARSHAN, 1999). Os comandos SQL podem ser passados para o SGBD por outro programa (por exemplo, um script que coleta dados em um formulário da web) ou digitados manualmente. É óbvio que a primeira opção é ideal, especialmente para informar grandes quantidades de registros em um banco de dados. Dentro de um código SQL podem ser mencionadas variáveis do Perl. A aplicação acontece de forma bem simples, sem necessidades de concatenação ou combinação de apóstrofo e aspas. Por exemplo, pode ser digitado o seguinte comando no código fonte de programa em Perl: (“SELECT * FROM Ofertas WHERE codi_ofe = $codigo”), onde $codigo é uma variável do Perl (SILVA, 2001b). 4.3.2. MySQL O MySQL é um SGBD relacional simples, bastante fácil de instalar e executar. Ele está disponível no site oficial do MySQL (MySQL, 2003), juntamente com toda a documentação (SILVA, 2001b). Em Anexos I há a instalação do BD MySQL. O MySQL é um SGBD de código aberto. Seu uso é gratuito, exceto na versão Windows ou no uso profissional (lucrativo). Esse gerenciador de banco de dados possui arquitetura clienteservidor (SILVA, 2001b). O MySQL é relativamente fácil de configurar e usar, e está disponível para várias plataformas, entre elas: Linux, Windows, FreeBSD. Sua base de dados pode ser acessada por C, 43 C++, Eiffel, Java, Perl, PHP e Python, sendo o PHP a linguagem mais comum para acessar esse gerenciador de banco de dados (ibidem). O MySQL possui um conjunto pequeno de operações sobre os dados, em comparação com outros bancos encontrados no mercado, como Oracle. É mais indicado para aplicações que gerenciem BD pequenos ou médios, e não para aplicações que fazem uso intensivo de BD ou possuem grandes quantidades de informação. Como o MySQL é um SGBD estritamente relacional, ele é utilizado para armazenar tipos de dados usuais. Para a maioria das aplicações-padrão de banco de dados, inclusive bioinformática, o MySQL é um excelente ponto de partida (GIBAS e JAMBECK, 2001). 4.3.3. PostgreSQL O PostgreSQL é um sofisticado sistema de gerenciamento de banco de dados relacional e orientado a objetos, com mais de 15 anos de desenvolvimento. Ele é considerado objeto-relacional por implementar, além das características de um SGBD relacional, algumas características de orientação a objetos, como herança e tipos personalizados. Suporta quase todas as construções SQL, incluindo subseleções, transações, tipos definidos pelo usuário e funções. É extremamente robusto e confiável, além de ser extremamente flexível e rico em recursos. O PostgreSQL utiliza o modelo cliente-servidor (PROSDOCIMI, 2003b). Pela riqueza de recursos e conformidade com os padrões, ele é um SGBD muito adequado para o estudo universitário do modelo relacional, além de ser uma ótima opção para empresas implementarem soluções de alta confiabilidade sem altos custos de licenciamento. É um programa que possui o seu código fonte disponível e o seu uso livre para aplicações comerciais ou não. Atualmente está disponível seu código fonte, além de binários pré-compilados em diversas plataformas (entre elas Linux) (POSTGRESQL, 2003). A versão atual é PostgreSQL 7.3, lançada em novembro de 2002 (PROSDOCIMI, 2003b). 44 O PostgreSQL é um pouco limitado em sua capacidade de administrar grande quantidade de operações, em comparação com o Oracle e outros SGBD comerciais, mas para banco de dados médio é um produto excelente (GIBAS e JAMBECK, 2001). 4.3.4. Comparação de Bancos de Dados Ambos os SGBDs citados anteriormente são muito utilizados nos sistemas web disponíveis. Para bioinformatas, o BD mais comumente usado é o MySQL. Muitas das ferramentas de bioinformática que utilizam bancos de dados têm sua base instalada em um servidor MySQL. O MySQL tem uma principal vantagem sobre o PostGreSQL, que é a documentação. Há muitos livros e páginas na internet que explicam como integrar MySQL com o servidor Apache e a linguagem PHP. Além disso, existe o software PHPTriad, que instala e configura conjuntamente o BD MySQL, servidor Apache e a linguagem PHP. Como este sistema está disponível na web, é muito importante que seja usado um banco de dados que seja fácil de integrar com linguagens como PHP e Perl, sendo que já existem módulos Perl que fazem a interação com MySQL. A instalação do MySQL é relativamente fácil. Mas o principal ponto que deve ser considerado na hora de escolher entre esses dois SGBDs é que o postgreSQL não é muito utilizado pela dificuldade no seu gerenciamento (PROSDOCIMI, 2003b). III. DESENVOLVIMENTO 1. MODELAGEM DO SISTEMA A funcionalidade do sistema pode ser divida em 3 etapas: a busca de seqüências, a preparação das seqüências e o projeto de primers. Para as duas primeiras etapas foi utilizada a Análise Estruturada, e para a terceira etapa foi utilizada a modelagem Orientada a Objeto, com a linguagem UML. Para a Análise Estruturada são apresentados o diagrama de Contexto, os diagramas de Fluxo de Dados e o Dicionário de Dados. Para a Análise Orientada a Objeto são apresentados o Diagrama de Caso de Uso, o Diagrama de Classes e os Diagramas de Seqüência dos processos mais complexos. Além desses, é apresentado o Diagrama Entidade-Relacionamento, e a descrição das informações das tabelas do banco de dados do diagrama ER. No projeto do sistema é apresentada a especificação dos processos da análise estruturada. As ferramentas utilizadas na modelagem foram: Rational Rose 2000, para a modelagem em UML, PowerDesigner ProcessAnalyst 6.1.0 para a modelagem Estruturada e AllFusion ERwin Data Modeler 4.0 para o diagrama ER. 1.1. Análise do Sistema 1.1.1. Diagrama de Contexto O Diagrama de Contexto é um diagrama de fluxo de dados composto por um único processo que representa todo o sistema. Sua função é apresentar, graficamente, a comunicação do sistema com o ambiente externo. A Figura 14 exibe o diagrama de contexto do sistema descrito nesse trabalho. 46 Esse diagrama mostra os dados que são enviados ao sistema e os dados que o sistema retorna. O usuário insere alguns dados no sistema, esse processa e retorna os resultados para o usuário. O sistema, além de enviar os resultados para o usuário, envia dados para o GenBank e para a classe Primer_Design (classe que projeta os primers). Estas duas entidades externas (simbolizadas com um quadrado na Figura 14) retornam dados para o sistema, e este os apresenta ao usuário. Figura 14. Diagrama de Contexto. 1.1.2. Diagramas de Fluxos de Dados O Diagrama de Fluxo de Dados (DFD) é um elemento de modelagem usada para descrever a transformação dos dados ao longo dos processos realizados pelo sistema. Na Figura 15 pode-se ver o DFD de nível 1 (mais abstrato), com todos os processos e os fluxos associados. Os processos (simbolizados como círculos) transformam as entradas recebidas das entidades externas e de outros procesos e os depósitos de dados (simbolizados como retângulos), e produz novos dados que são enviados a outros processos ou às entidades externas. 47 Figura 15. Diagrama de Fluxo de Dados, nível1. 48 Os processos 1.4, 1.5 e 1.6 são relativamente complexos e foram decompostos em subprocessos. Nas Figuras 16, 17, 18 são exibidos os DFD’s oriundos da decomposição do DFD de nível 1. A Figura 16 mostra os sub-processos oriundos da decomposição do processo 1.4 (Exibir_Resultado_Busca_Sequencia). Este diagrama mostra os dados vindos do processo Exibir_Param_Busca_ou_Primers e enviados para o processo 1.4.1. Este último faz a busca de seqüências no GenBank. Então é executado o processo 1.4.2 que exibe as seqüências do banco e as trazidas do GenBank para o usuário. Cada uma das seqüências contém um checkbox para o usuário marcar se a seqüência deve ser considerada e se a seqüência deve anelar no primer. Figura 16. Diagrama de Fluxo de Dados decomposto do processo 1.4. A Figura 17 mostra os sub-processos oriundos da decomposição do processo 1.5 (Incluir_Seqüências_BD). Este diagrama mostra os dados que saem do processo Exibir_Resultado_Busca_Seqüências e entram no processo 1.5.1. Nesse processo o sistema atualiza o banco de dados com as seqüências selecionadas ou não na tela que exibe as seqüências. Para as seqüências que não estão no banco e foram selecionadas na análise, o sistema acessa o GenBank e traz as informações pertinentes para o processo 1.5.1. 49 Figura 17. Diagrama de Fluxo de Dados decomposto do processo 1.5. A Figura 18 mostra a etapa de preparação das seqüências para o projeto de primers. O processo 1.6.1 acessa o banco de dados, lê as seqüências que devem ser consideradas e coloca-as no arquivo, em formato FASTA. Através do BioPerl, o processo 1.6.2 lê as seqüências do arquivo e gera a fita consenso degenerada e a fita match. O processo 1.6.3 mostra no browser as fitas consenso e match. As fitas consenso são as regiões nas quais os primers devem anelar. 50 Figura 18. Diagrama de Fluxo de Dados decomposto do processo 1.6. 1.1.3. Dicionário de Dados Utilizados na Modelagem do Sistema O dicionário de dados consiste numa lista de todos os dados e fluxos utilizados nos diagramas de Fluxo de Dados e a sua respectiva descrição, para uma melhor compreensão do sistema. Tabela 2. Dicionário de Dados da Modelagem do Sistema. Nome Tipo Descrição Accession Escalar *valor do atributo accession na página do GenBank* Acesso Escalar *atributo do banco de dados* Anelar Escalar *atributo do banco de dados* Ano_Max Escalar {digito} *ano máximo da seqüência * Ano_Min Escalar {digito} *ano mínimo da seqüência * Autor Escalar *autor da seqüência* Buffer Escalar *variável passada entre as telas* Cabecalho Escalar *definição da seqüência no formato fasta* Cbx_Alinhar_GI Escalar *nome do checkbox* 51 Cbx_Alinhar_Num_Seq Escalar *nome do checkbox* Cbx_Considerar_GI Escalar *nome do checkbox* Cbx_Considerar_Num_Seq Escalar *nome do checkbox* Cbx_Padrão_GI Escalar *nome do checkbox* Cbx_Padrão_Num_Seq Escalar *nome do checkbox* Código_HTML Escalar *código HTML que retorna da pagina do GenBank* Com_Palavra_chave Escalar *restriçao para query de busca de seqüências.Keyword* Consenso Escalar *fita consenso gerada pelo alinhador* Count Escalar {digito} *Count contém o numero de sequencias trazidas do GenBank* Definição Escalar *atributo do banco de dados* Definição_BD Escalar *valor da definição que está no BD* Definition Escalar *valor do atributo definition na página do GenBank* Digitada Escalar *atributo do banco de dados* Fonte Escalar *atributo do banco de dados* Gene Escalar *gene da seqüência * GI_atual Escalar *GI da seqüência atual* GI_BD Escalar *Gi que está no BD* GI_Organismo Escalar *GI da sequencia* Ids Array *array que contem os numeros de gi das sequencias trazidas do GenBank* Keyword Escalar *palavra-chave de busca de seqüências* Match Escalar *fita match gerada pelo alinhamento* MeuEndereco Escalar *variável que contem a URL para acessar* Nova_Definicao Escalar *Valor a ser inserido no banco* Nova_Fonte Escalar *Valor a ser inserido no banco* Nova_GI Escalar *Valor a ser inserido no banco* Nova_ID Escalar *Valor a ser inserido no banco* Nova_Seq Escalar *Valor a ser inserido no banco* Num_Sequencia Escalar *Chave primaria do banco de dados* Num_Seqüências_Exibidas Escalar {digito}*Número de seqüências para mostrar na tela de seqüências trazidas do NCBI* 52 Opção Escalar [projeto | analise] Organism Escalar *valor do atributo organism na página do GenBank* Organismo Escalar *organismo da seqüência Origin Escalar *valor do atributo origin na página do GenBank* Parâmetros_primer Escalar *string com os parametros de primer* Parametros_primers_avanca Escalar *string com os parametros internos de primer* Primer_pronto Escalar *primer pronto* Resultados_primer Escalar *resultados do primer para ser mostrado na tela* Selecionada Escalar *atributo do banco de dados* Sem_palavra_chave Escalar *restrição para query de busca de seqüências* Sequence Escalar *sequence para arquivo fasta* Sequencia Escalar *seqüência de DNA* Sequencias Escalar *seqüências de DNA* Source Escalar *valor do atributo source na página do GenBank* Sumario Escalar *sumario das seqüências trazidas do GenBank* Tam_Max Escalar {digito}*tamanho máximo da seqüência * Tam_Min Escalar {digito}*tamanho mínimo da seqüência * Accession Escalar *valor do atributo accession na página do GenBank* Acesso Escalar *atributo do banco de dados* Anelar Escalar *atributo do banco de dados* Ano_Max Escalar {digito} *ano máximo da seqüência * Ano_Min Escalar {digito} *ano mínimo da seqüência * dos Tabela 3. Dicionário de Dados dos Fluxos de Dados. Nome Descrição Buffer_cbx_Selecionados Buffer Buffer_Consenso Buffer Buffer_Opção_Yes_No Buffer Buffer_Par_Avançados Parâmetros_primer_avancados Buffer_Query_Busca Buffer 53 Buffer_Vazio Buffer Código_HTML Código_HTML Consenso_Match Consenso + match Dados_Buscados_Seqüência Definition + accession + source + organism + origin Dados_Para_Análise Seqüências + primer_pronto Dados_Seq_Selecionadas Anelar + Selecionada + Digitada + Num_Sequencia Dados_Seqüência_Digitada Acesso + Definição + Digitada + fonte + GI_Organismo + Selecionada + Sequencia Dados_Seqüência_Selecionadas Acesso + Anelar + Definição + Digitada + fonte + GI_Organismo + fonte + Num_Seqüência + Selecionada + Sequencia GI_Seqüência_Atual GI_Atual Ids_Count Ids + count Linha_Consenso Consenso + match Meu_Endereço_URL MeuEndereço Opção_Principal_Escolhida buffer Opção_Principal_Sistema Opção Parâmetros_Primer Parâmetros_Primers + Parâmetros_primers_avancados Restrições_Busca_Usuário ano_Max + ano_min + Autor + com_palavra_chave + Gene + Num_sequencias_exibidas + Organismo + Keyword + sem_palavra_chave + Tam_Max + Tam_Min Resultado_Final resultados_primer Resultados_Primer resultados_primer Seq_Fasta_Para_Arq Sequence + cabecalho Seqüência_Digitada nova_seq + nova_ID + nova_Definição + nova_GI + nova_Fonte Seqüência_e_Cabeçalho Sequence + cabecalho Sequencia_Primer_Analise Seqüências + primer_pronto Seqüências_Digitadas Definição + GI_Organismo Seqüências_Encontradas Count + ids + sumario + definicao_BD + GI_BD Seqüências_Já_Cadastradas Acesso + Definição + GI_Organismo + Sequencia Seqüências_para_Alinhamento Acesso + Definição + GI_Organismo + Sequencia Seqüências_Selecionadas cbx_Padrao_GI + cbx_Alinhar_GI + cbx_Considerar_GI + 54 cbx_Padrao_Num_Seq + cbx_Alinhar_Num_Seq + cbx_Considerar_Num_Seq Sumário Sumário Ultima_Seqüência_Arquivo sequence URL_GenBank MeuEndereco Usuário_Parâmetros_Primer parametros_primers Após as etapas de busca e preparação das seqüências, é realizado o projeto/análise de primers. A modelagem desta etapa é feita através da orientação a objetos, e inicia com o diagrama de casos de uso. 1.1.4. Diagrama de Casos de Uso Os Casos de Uso ou Use Cases descrevem as ações permitidas ao usuário do sistema. Na Figura 19 são exibidos os use cases Analisa_Primer e Projeta_Primer. Figura 19. Use Cases Abaixo são apresentadas as características dos casos de uso exibidos na Figura 19. No caso da análise, os primers já estão prontos, e deve-se apenas analisar suas características. No caso de projeto, o sistema deve projetar primers cujas características satisfaçam as restrições impostas pelo usuário. 55 Use Case: Analisa_Primer Classe que dispara: Usuário Funcionamento Básico Usuário insere parâmetros para Análise de Primers Sistema exibe resultados de Análise de Primers Use Case: Projeta_Primer Classe que dispara: Usuário Funcionamento Básico Usuário insere parâmetros para Projeto de Primers Sistema exibe resultados de Projeto de Primers 1.1.5. Diagrama de Classes O diagrama de classes mostra as classes do sistema, atributos e métodos pertinentes a cada classe e a relação entre as classes. Na Figura 20 é exibido o diagrama de classes do sistema descrito nesse trabalho. Há quatro classes principais: TPrimerDesign, TPrimer, TPrimerParameters e TBiblioteca. As classes Usuário e Interface são utilizadas na modelagem dos diagramas de seqüência. A classe TPrimerDesign é utilizada para guardar as informações do projeto de primers. Essa classe armazena o a seqüência de DNA, a seqüência de primer, a enzima de restrição, o tipo de primer (amplificação ou seqüenciamento), número de primers rejeitados por cada um dos parâmetros, e os primers aprovados na fita sense e anti-sense. Os métodos dessa classe projetam ou analisam o primer. Os métodos InternalParameters e DesignParameters apenas chamam os métodos de mesmo nome implementados na classe TPrimerParameters. 56 Figura 20. Diagrama de Classes do Sistema A classe TPrimerDesign cria um objeto da classe TPrimer, para que essa armazene as informações do primer que está sendo analisado no método _DesignIndividualPrimers().O único método dessa classe é o método construtor Create. A classe TBiblioteca possui funções para manipulação de string e valores numéricos. Esta classe é utilizada como apoio às outras classes. A classe TPrimerParameters possui os parâmetros de entrada inseridos pelo usuário. 57 1.1.6. Diagramas de Seqüência O diagrama de seqüência mostra a troca de mensagens entre as classes em ordem temporal. Na parte superior do diagrama estão as classes que fazem parte do processo e nas linhas verticais visualiza-se a dimensão tempo. A importância desse tipo de diagrama é a visualização da interação entre as classes e métodos necessários. Na Figura 21 é apresentado o diagrama de seqüência das ações executadas no momento em que o usuário aperta no botão para Projetar Primers da tela de parâmetros de primers. O sistema atribui os parâmetros de projeto à classe TPrimerDesign. Se o usuário escolhe a opção Análise de Primers, é executado o método DesignPrimers(); se o usuário escolhe a opção Projeto de Primers, é executado o método AnalysePrimers(). Figura 21. Diagrama de Seqüência com as ações iniciais do sistema. Na Figura 22 é apresentado o diagrama de seqüência das ações executadas no método DesignPrimers(). Este método executa três outros métodos da própria classe. O método DesignPrimers() é o método público principal da classe. A Figura 23 mostra o diagrama de seqüência do método _DesignIndividualPrimers(). Este método percorre a fita sense e a fita anti-sense (no caso de amplificação), e forma os primers de acordo com as restrições do usuário. No final do método, é criada uma lista com todos os primers aprovados na fita sense e outra lista para os primers aprovados na anti-sense. 58 Figura 22. Diagrama de Seqüência do método DesignPrimers() Figura 23. Diagrama de Seqüência do método _DesignIndividualPrimers() Após o método _DesignIndividualPrimers() formar os primers, o método _DesignPairedPrimers() forma pares entre os primers já selecionados para a fita sense e anti-sense. 59 Os pares são formados analisando a diferença de temperatura de anelamento entre os primers, o tamanho do amplicon, o número de dimmer entre os primers. Se foi formado um par de primers, este é armazenado no atributo aPairs, da classe TPrimer. A Figura 24 mostra o diagrama de seqüência do método _DesignPairedPrimers(). Figura 24. Diagrama de Seqüência do método _DesignPairedPrimers() Se o usuário escolheu a opção inicial “Analisar Primers” ao invés de “Projetar Primers”, o sistema executa o processo _AnalysePrimers(). Este processo mostra para o usuário as características do primer que o usuário inseriu. A Figura 25 exibe o diagrama de seqüência do método _AnalysePrimers(). 60 Figura 25. Diagrama de Seqüência do método _AnalysePrimers() 1.1.7. Diagrama de Navegação do Sistema O usuário inicia sempre a navegação do sistema na tela “Exibir Opções Principais”, e finaliza o sistema na tela “Mostrar Resultados Primer”. Na primeira tela o usuário deve selecionar umas das opções: Análise de Primers ou Projeto de Primers. Dependendo de qual opção o usuário selecionar, a tela apresentada para o usuário será “Mostrar Parâmetros Análise” ou “Mostrar Parâmetros Busca”. A Figura 26 mostra a navegação entre as telas do sistema. 61 Figura 26. Diagrama de Navegação do Sistema 1.1.8. Diagrama Entidade-Relacionamento Para modelar o banco de dados do sistema utilizou-se o Diagrama EntidadeRelacionamento (ER), dividido em modelo lógico (conceitual) e modelo físico. A Figura 27 mostra o modelo lógico do banco de dados. O modelo Físico é apresentado na seção 1.2.2. Várias tabelas que estão presentes na modelagem não foram utilizadas. Elas são necessárias para o cumprimento dos objetivos secundários deste trabalho, não realizados, e permanecem no banco visando a expansão do sistema atual. 62 Figura 27. Diagrama Entidade-Relacionamento, modelo Lógico. 63 1.1.9. Dicionário de Dados das Tabelas As tabelas a seguir mostram o dicionário de dados do diagrama de entidaderelacionamento utilizado no sistema. Em cada tabela está o nome da tabela do banco de dados, o nome de cada campo, o tipo e a descrição do campo. Tabela 4. Tabela Degeneracao Nome: Degeneração Nome do campo Tipo do campo Descrição do campo Id_degeneracao UniqueID Chave primária Letra Varchar (1) Letra que identifica a degeneração Nucleotideo Varchar (6) Nucleotídeos que são identificados por esse degeneração Tabela 5. Tabela Tipo_PCR Nome: Tipo_PCR Nome do campo Tipo do campo Descrição do campo Id_tipo_pcr UniqueID Chave primária Descricao_pcr Varchar (20) Tipo da pcr (seqüenciamento ou amplificacao) Tabela 6. Tabela Projeto_PCR Nome: Projeto_PCR Nome do campo Tipo do campo Descrição do campo Id_projeto_PCR UniqueID Chave primária Nome_projeto Varchar (20) Nome do projeto dado pelo usuário Tabela 7. Tabela Primer_Rejeitado Nome: Primer_Rejeitado Nome do campo Tipo do campo Descrição do campo Id_primer_rejeitado UniqueID Chave primária Reject_Ta Integer Número de primers rejeitados por temp. anelamento 64 Reject_GC Integer Número de primers rejeitados por percentual de GC Reject_CG3L Integer Número de primers rejeitados por percentual CG 3’ Reject_3L Integer Número de primers rejeitados por alinhamento perfeito 3’ Reject_DiffTa Integer Número de primers rejeitados por dif. temp anelam. Reject_Palindr Integer Número de primers rejeitados por palindromes Reject_2ndHairpin Integer Número de primers rejeitados por num. de hairpins Reject_2ndBudges Integer Número de primers rejeitados por num. de budges Reject_2ndDimmer Integer Número de primers rejeitados por num. de dimmers Reject_Degener Integer Número de primers rejeitados por num. degenerações Reject_Degener3L Integer Número de primers rejeitados por num. degenerações 3’ Reject_Amplicon Integer Número de primers rejeitados por tam. amplicon Tabela 8. Tabela Produto_Amplificado Nome: Produto_Amplificado Nome do campo Tipo do campo Descrição do campo Id_produto_amplificado UniqueID Chave primária Tamanho Integer Tamanho do produto amplificado Nome do campo Tipo do campo Descrição do campo Id_corte UniqueID Chave primária Pos_corte Integer Posição do corte da enzima usada no produto Tabela 9. Tabela Corte Nome: Corte amplificado Tabela 10. Tabela Usuario Nome: Usuário Nome do campo Tipo do campo Descrição do campo Id_usuario UniqueID Chave primária Nome_usuário Varchar (20) Nome do usuário Login_usuario Varchar (20) Login do usuário Senha_usuário Varchar (20) Senha do usuário 65 Num_logins_usuário Integer Número de logins efetuados por esse usuário Tabela 11. Tabela Enzima_Usada Nome: Enzima_Usada Nome do campo Tipo do campo Descrição do campo Id_enzima_usada UniqueID Chave primária Nome do campo Tipo do campo Descrição do campo Id_enzima UniqueID Chave primária Nome_enzima Varchar (20) Nome da enzima Sequencia_enzima Varchar (20) Seqüência de bases nucléicas da enzima Pos_corte_enzima Integer Número da posição de corte dessa enzima Tabela 12. Tabela Enzima Nome: Enzima Tabela 13. Tabela Resultado_Alinhamento Nome: Resultado_Alinhamento Nome do campo Tipo do campo Descrição do campo Id_resultado_alinhamento UniqueID Chave primária Seqüência_alinhada Varchar (20) Letras que identificam a seq. Alinhada (por exemplo: agtc---s) onde “s” é uma degeneração e “–“ é um gap Tabela 14. Tabela Organismo Nome: Organismo Nome do campo Tipo do campo Descrição do campo Num_sequencia UniqueID Chave primária Seqüência MediumText Seqüência a ser feita o primer GI_Organismo Varchar (20) Número de gi de identificação no GenBank Anelar Boolean O primer deve ou não anelar a essa seqüência Selecionada Boolean Considerar ou não essa seqüência para fazer o primer Digitada Boolean Seqüência digitada ou buscada no GenBank Acesso Varchar (20) ID acesso do organismo (dado do GenBank) 66 Definição Varchar (20) Definição do organismo (dado do GenBank) Fonte Varchar (20) Fonte do organismo (dado do GenBank) Tabela 15. Tabela Região_Similar Nome: Regiao_Similar Nome do campo Tipo do campo Descrição do campo Id_regiao_similar UniqueID Chave primária Pos_inicio_regiao_similar Integer Posição inicial da região similar Tamanho_região_similar Integer Tamanho da região similar Tabela 16. Tabela Similaridade Nome: Similaridade Nome do campo Tipo do campo Descrição do campo Id_reg1 UniqueID Identificador da primeira região similar Id_reg1 UniqueID Identificador da segunda região similar Tabela 17. Tabela Posição_Anelamento Nome: Posicao_Anelamento Nome do campo Tipo do campo Descrição do campo Id_posicao_anelamento UniqueID Chave primária Sense Boolean Sense ou anti-sense Posicao_anelamento Integer Posição que o primer se anela à seqüência Tabela 18. Tabela Tipo_Est_Secundaria Nome: Tipo_Est_Secundaria Nome do campo Tipo do campo Descrição do campo Id_tipo_est_secundaria UniqueID Chave primária Descricao_est_secundaria Varchar (20) Nome da estrutura secundaria (loop, hairping...) Tabela 19. Tabela Est_Secundaria Nome: Est_Secundaria Nome do campo Tipo do campo Descrição do campo Id_est_secundaria UniqueID Chave primária 67 Seq_est_secundaria Varchar (20) Seqüência da estrutura secundária Tabela 20. Tabela Primer Nome: Primer Nome do campo Tipo do campo Descrição do campo Id_primer UniqueID Chave primária Seqüência_primer Varchar (20) Seqüência do primer Tm Float Temperatura de desnaturação do primer Ta Float Temperatura de anelamento do primer Tabela 21. Tabela Par_Primer Nome: Par_Primer Nome do campo Tipo do campo Descrição do campo Id_par_primer UniqueID Chave primária Par_primer_selecionado Boolean Primer foi selecionado ou não Tabela 22. Tabela Codon Nome: Códon Nome do campo Tipo do campo Descrição do campo Id_codon UniqueID Chave primária Codon Varchar (3) Três letras que identificam o codon (exemplo: atc) Amino Varchar (20) Nome do aminoácido traduzido pelo codon Tabela 23. Tabela Conjuntos_Organismos Nome: Conjuntos_organismos Nome do campo Tipo do campo Descrição do campo Id_conj UniqueID Chave primária Descricao Varchar (20) Nome do conjunto de organismos que contém o codon. O mesmo codon pode traduzir diferentes aminoácidos em diferentes organismos. 68 1.2. Projeto do Sistema 1.2.1. Especificação de Processos A Especificação de Processos determina os passos a serem seguidos para a sua implementação, ou seja, as etapas necessárias para a execução de uma atividade. A seguir são apresentadas as Especificações dos Processos do sistema, descritas em pseudocódigo: Especificação o Processo 1.1, Exibir_Opçoes_Principais. O usuário escolhe uma das opçoes. O usuário clica em "Next". Chama "Exibir_Param_Busca_ou_Primers" Especificação o Processo 1.2, Exibir_Param_Busca_ou_Primers. /*recebe buffer que contém o valor da opção que o usuário escolheu na tela anterior/* SE opção = projeto ENTAO ENCONTRA Seqüência, Acesso, GI_Organismo, Definição EM Organismo ENQUANTO existir registro FACA mostrar tabela com registros FIM ENQUANTO mostra botão “Type Sequences” SE usuario clicar em botão “Type Sequences” ENTAO chama Digitar_Sequencia mostra parâmetros para busca de seqüências mostra botões SE usuário clicar em botao “Next” ENTAO chama Exibir_Resultado_Busca_Sequencias SENAO SE usuário clicar em botao “Back” ENTAO chama Exibir_Opçoes_Principais SENAO mostra parâmetros para analise de primers. mostra botões SE usuário clicar em botão “Next” ENTAO chama Imprimir_Resultados_Primers SENAO SE usuário clicar em botão “Back” ENTAO chama chama Exibir_Opçoes_Principais FIM SE FIM SE Especificação o Processo 1.3, Digitar_Sequencia. dados_sequencias = buffer SE usuário digitou seqüência ENTAO INSERIR Acesso, Definição, GI_Organismo, Fonte, Seqüência, Anelar, Selecionada, Digitada EM Organismo mostra formulário com campos para inserção de seqüências SE usuário clicar em botão Include ENTAO 69 chama este mesmo procedimento FIM SE ENCONTRA Seqüência, Acesso, GI_Organismo, Definição EM Organismo ENQUANTO existir registros FACA mostra registro FIM ENQUANTO SE usuário clicar em botão “Next” ENTAO chama Exibir_Param_Busca_ou_Primers FIM SE Especificação o Processo 1.7, Imprimir_Parametros_Primer. mostra (cabecalho_HTML) mostra (formulario_com_campos_parametros_projeto_primers) */campo para usuário inserir seqüência recebe a linha consenso ou a seqüência de DNA /* SE (usuário clicar em "Next") ENTAO Envia Dados para Classe_Primer chama Imprimir_Resultados_Primers SENAO SE (usuário clicar em "BACK") ENTAO chama Fazer_Mult_Align SENAO SE (usuário clicar em "Clear") ENTAO Limpa os campos da tela FIM SE mostra (formulario_com_botao_parametros_avancados_projeto_primers) SE (usuário clicar em "Others Parameters") ENTAO chama Imprimir_Parameters_Avancados_Primers FIM SE Especificação o Processo 1.8, Imprimir_Parametros_Avancados_Primers. mostra (cabecalho_HTML) mostra (formulario_com_campos_parametros_avancados_projeto_primers) SE (usuário clicar em "BACK") ENTAO Imprimir_Parametros_Primers FIM SE Especificação o Processo 1.9, Imprimir_Resultados_Primers. recebe dados da classe Primer_Design mostra Resultados_Primers mostra botão finalizar SE (usuário clicar em botão “conclude”) ENTAO Apaga as seqüências que estão no banco FIM SE Especificação o Processo 1.4.1, Executar_Busca_GenBank. mostra (cabecalho HTML da Tela) variaveis_de_restricoes = buffer query_string = query_string + variaveis_de_restricoes chama Imprimir_sequencias_encontradas 70 Especificação o Processo 1.4.2, Imprimir_sequencias_encontradas. ESCREVE count /*sequencias digitadas que estão no banco/* ENCONTRAR Num_Sequencia, GI_Organismo, Definicao EM Organismo COM Digitada = 1 LE registro ENQUANTO existir registro FACA mostra registro FIM ENQUANTO */seq que estão no banco, que foram buscadas no GenBank/* ENCONTRAR GI_Organismo EM Organismo COM Digitada = 0 LE registro ENQUANTO existir registro FACA meuendereco = URL base GenBank + registro sumario = HTML da seqüência ids[i] sumario = texto do HTML entre as tags de HTML "<dd>" e "<br></dd>" mostra tabela com registro encontrado e sumario FIM ENQUANTO PARA i DE 0 ATE count FACA ENCONTRAR Num_Sequencia EM Organismo COM GI_Organismo =ids[i] AND Digitada = 0 LE registro SE não existe registro ENTAO meuendereco = URL base GenBank + ids[i] sumario = HTML da seqüência ids[i] sumario = texto do HTML entre as tags "<dd>" e "<br></dd>" mostra tabela com ids[i] e sumario FIM SE FIM PARA mostra (formulario com botões de Back, Next, e Clear) SE (usuário clicar em "Next") ENTAO chama Incluir_Sequencias_BD SENAO SE (usuário clicar em "BACK") ENTAO chama Exibir_Param_Busca_ou_Primers FIM SE Especificação o Processo 1.5.1, Atualizar_BD. mostra (cabecalho HTML da Tela) */buffer é a variavel que vem da tela anterior/* */em buffer há apenas os checkboxes selecionados e outros componentes/* PARA CADA checkbox selecinado na tela anterior ENTAO vetor = nome do checkbox FIM SE PARA i ATE tamanho_vetor FACA SE padrao ESTÁ CONTIDO EM vetor[i] ENTAO SE Digitado ESTÁ CONTIDO EM vetor[i] ENTAO Num_Sequencia_Atual = (numero que é obtido atraves de expressões regulares, a partir do nome do checkbox. O nome do checkbox tem o numero do índice da seqüência no banco) SE considerar ESTÁ CONTIDO EM vetor[i + 1] ENTAO alinhar = (se alinhar ESTÁ CONTIDO EM vetor [i + 2]) ALTERAR (Anelar, Selecionada, Digitada) EM Organismo PARA (0,0,1) COM Num_Sequencia = Num_Sequencia_atual; SENAO 71 ALTERAR (Anelar, Selecionada, Digitada) EM Organismo PARA (Alinhar, 1, 1) COM Num_Sequencia = Num_Sequencia_atual; FIM SE SENAO GI_atual = (numero que é obtido através de expressões regulares, a partir do nome do checkbox. O nome do checkbox tem o numero do GI. SE considerar ESTÁ CONTIDO EM VETOR[I + 1] ENTAO alinhar = (se alinhar ESTÁ CONTIDO EM vetor [i + 2]) ENCONTRA Num_Sequencia EM Organismo COM Digitada = 1 and GI_Organismo = GI_Atual; SE existe registro ENTAO ALTERA (Anelar) EM Organismo PARA (alinhar) COM Num_Seqüência = registro SENAO chama Recuperar_Sequencia INSERIR (Acesso, Definicao, GI_Organismo, Fonte, Sequencia, Anelar, Selecionada, Digitada) EM Organismo VALORES (accession, definition,GI_atual,source,origin,alinhar, 1, 0) FIM SE SENAO ENCONTRA Num_Sequencia EM Organismo COM Digitada = 0 AND GI_Organismo = GI_atual SE (existe registro) ENTAO REMOVER EM Organismo COM Num_Sequencia = registro FIM SE FIM SE FIM SE FIM SE FIM PARA SE (Btn_Yes_No = Yes) ENTAO chama Fazer_Mult_Align SENAO chama Exibir_Resultado_Busca_Sequencias FIM SE Especificação o Processo 1.5.2, Recuperar_Sequencia. meuendereco = URL base do GenBank + gi_atual codigo = HTML da seqüência de numero gi_atual codigo = texto do HTML entre as tags "<pre>" e "</pre>" definition = texto da variavel codigo entre as palavras "DEFINITION" e "ACCESSION" accession = texto da variavel codigo entre as palavras "ACCESSION" e "VERSION" source = texto da variavel codigo entre as palavras "SOURCE" e "ORGANISM" organism = texto da variavel codigo entre as palavras "ORGANISM" e "REFERENCE" origin = texto dda variavel codigo entre as palavras "ORIGIN" e "//" Especificação o Processo 1.6.1, Colocar_Seq_em_Arq. ENCONTRAR GI_Organismo, Acesso, Definicao, Sequencia EM Selecionada = 1 AND Anelar = 1 LE registro ABRE arquivo ENQUANTO existir registro FACA cabecalho = registro[0] + gb + registro[1] + | + registro[2] sequence = registro[3] ESCREVE em arquivo cabecalho e sequence Organismo COM 72 FIM ENQUANTO FECHA arquivo Especificação o Processo 1.6.2, Fazer_Consenso. ENCONTRAR COUNT (num_sequencia) EM Organismo COM Selecionada = 1 AND Anelar = 1 LE count /*numero de registros do banco*/ SE count > 1 ENTAO LE sequencias do arquivo mostra sequencias atraves do BioPerl faz o alinhamento com as sequencias do arquivo atraves do BioPerl gera a fita consenso atraves do BioPerl gera a fita match SENAO SE count > 0 ENTAO consenso = sequence SENAO consenso = ' '; FIM SE Especificação o Processo 1.6.3, Fazer_Match. ESCREVE consenso ESCREVE match SE usuário clica em “Next” ENTAO chama Imprimir_Parametros_Primer SENAO SE usuário clica em “Back” ENTAO chama Exibir_Resultado_Busca_Sequencias FIM SE 1.2.2. Modelo Físico do Banco de Dados A Figura 28 mostra o modelo físico do banco de dados. 73 Figura 28. Diagrama Entidade-Relacionamento, modelo Físico. 74 2. DESCRIÇÃO DO SISTEMA PROPOSTO O sistema descrito nesse trabalho encontra-se disponível no site do grupo de bioinformática da Univali, em http://bioinformatica.cttmar.univali.br/express/TCC_opcoes.html. O usuário do sistema pode optar entre duas opções iniciais. A primeira opção é Projeto de PCR Completo e a segunda opção é Análise de Primers. A primeira opção inclui três etapas. As etapas são Busca e/ou Inclusão de Seqüências, Alinhamento Múltiplo das seqüências a serem analisadas e o Projeto de Primers. Na segunda opção, apenas há a Análise de Primers, que tem como finalidade exibir as características do(s) primer(s) inseridos na análise. A Figura 29 exibe a primeira tela do sistema. Figura 29. Tela de opções principais do sistema. 75 2.1. Busca de Seqüências A busca de seqüências tem como objetivo definir as seqüências que serão submetidas ao experimento de PCR. Pode-se especificar que primers amplifiquem ou não trechos dessas seqüências. Por enquanto nada é realizado com as seqüências com as quais os primers não devem anelar. O usuário pode digitar diretamente as seqüências ou pode simplesmente apresentar palavraschaves e outras restrições, e o sistema irá, automaticamente, acessar bancos de dados públicos e recuperar as seqüências relacionadas a essas palavras. A busca de seqüências é realizada no banco de dados genômicos GenBank. Através de palavras-chaves e outras restrições que o usuário insere, o sistema acessa remotamente o banco de dados GenBank disponível em NCBI (NATIONAL CENTER FOR BIOTECHNOLOGY INFORMATION, 2003). As restrições de busca são: Organismo, Autor, Com as palavras-chaves, Sem as palavras-chaves, Tamanho da seqüência, Nome do Gene, Ano de Publicação da seqüência. A Figura 30 mostra a tela de parâmetros de busca de seqüências. Essas restrições são muito importantes para o usuário, pois minimiza o número de seqüências que não interessam. Se o usuário não deseja fazer busca de seqüências no GenBank, ele pode simplesmente limpar os campos de busca com o botão Limpar e avançar para a próxima tela. 76 Figura 30. Tela de parâmetros de busca de seqüências 77 Após o acesso ao GenBank, o sistema exibe o número de seqüências encontradas e o sumário de cada uma. O sumário contém uma pequena descrição das seqüências e é um link para a descrição completa. Se o resultado não for satisfatório, o usuário pode voltar à busca e alterar seus parâmetros. Para cada uma das seqüências exibidas, existe um campo onde o usuário define se a seqüência deve fazer parte do projeto de primer, e outro campo onde o usuário define se os primers projetados devem anelar na seqüência ou não. Depois que o usuário selecionou as seqüências que devem fazer parte da análise, o sistema acessa novamente o GenBank e traz as seqüências e outras características para serem armazenadas no banco de dados no servidor. As características das seqüências e as próprias seqüências são encontradas na página HTML da seqüência no GenBank e analisadas através de expressões regulares. As características das seqüências armazenadas no banco de dados são: definição, acesso, fonte, organismo e a seqüência. A tabela utilizada nessa etapa do projeto preenche a tabela Organismo. A Figura 31 mostra a relação das seqüências encontradas, de acordo com os parâmetros exibidos na Figura 30. Segundo os parâmetros foram encontradas 68 seqüências no GenBank, mas na Figura 31 está sendo mostradas apenas 3 das seqüências encontradas. A primeira seqüência é uma seqüência que já está cadastrada no banco de dados no servidor. A diferença entre as seqüências digitadas e as trazidas do GenBank é que as seqüências buscadas no GenBank contêm um link para a página do NCBI, e as outras não contêm link nenhum. 78 Figura 31. Tela com o sumário de algumas seqüências encontradas. O usuário do sistema pode digitar as seqüências e informações a respeito das mesmas. Esta característica do sistema permite ao usuário inserir as seqüências com as quais ele costuma trabalhar. As informações que o usuário pode inserir a respeito das seqüências digitadas são: ID, GI, definição e fonte (organismo) da seqüência, como mostra a Figura 32. Para as seqüências digitadas 79 também há a possibilidade do usuário definir a quais delas o primer deve se anelar e quais seqüências devem fazer parte do projeto de PCR. Se as seqüências digitadas não são consideradas no projeto, elas permanecem no banco de dados, para que o usuário possa voltar e considerar a seqüência sem ter que inserí-la no banco novamente. Figura 32. Tela de Digitação de Seqüências 80 Esta característica do sistema de inserir as seqüências possibilita ao usuário definir as seqüências e fazer o projeto de primers, sem a necessidade de utilizar mais que um sistema para o projeto de PCR. Não há a necessidade do usuário procurar as seqüências em uma página web e fazer o projeto de PCR em outro sistema. O acesso ao site do NCBI para a busca de seqüências no banco de dados GenBank é feita através da biblioteca BioPerl. O módulo utilizado é Bio::DB::Query::GenBank. O código abaixo executa a busca de seqüências através das palavras-chave($query_string) e retorna no atributo count o número de seqüências encontradas e no atributo ids os números de gi das seqüências encontradas. my $query = Bio::DB::Query::GenBank->new (-db => 'nucleotide', -query=> $query_string, -mindate=> $ano_min, -maxdate=> $ano_max); my $count = $query->count; #número de seqüências encontradas my @ids = $query->ids; #os números de GI das seqüências encontradas 2.2. Preparação de Seqüências Esta etapa é necessária para o caso de um único primer dever anelar em duas ou mais seqüências (multiplex) ou para o caso do projeto de primers degenerados. Para que um primer amplifique mais de uma seqüência é necessário que o primer projetado seja complementar a todas as seqüências. Nesta etapa é feito um alinhamento múltiplo com todas as seqüências que o primer deve anelar, e o primer será gerado de acordo com a fita consenso do alinhamento. Se houver apenas uma seqüência para a análise, esta etapa não será executada. 81 Figura 33. Tela com o resultado do alinhamento feito pelo software ClustalW. Uma das vantagens desse sistema é permitir projetos de PCR nos quais os primers se anelam a mais de uma seqüência. Isso pode ser útil nos casos de detecção de genes patógenos em 82 qualquer estirpe de organismo. Para que isso ocorra, é necessário encontrar regiões comuns a todas as seqüências as quais o primer deve anelar (seqüências positivas). Além disso, essas regiões não podem ser encontradas nas seqüências em que o primer não deve anelar (seqüências negativas). Para tanto, é realizado o alinhamento múltiplo com as seqüências positivas. Regiões de grande conservação (pouca degeneração) estão identificadas na fita consenso resultante. A fita consenso resultante então é repassada à etapa de projeto de primers e armazenada na tabela Resultado_Alinhamento. Neste projeto não está sendo feito um alinhamento par-a-par com as seqüências nas quais os primers não devem anelar. Por exemplo, o usuário pode requisitar um primer que se anele a todos as seqüências de Papillomavirus (ex: Human papillomavirus type 81, 89, 90) para descobrir se a seqüência contém um determinado gene. Nesse caso é necessário encontrar uma região conservada entre as seqüências para fazer um único primer, se possível. A região mais conservada é aquela que contém um número menor de bases degeneradas. O alinhamento das seqüências para o projeto de primers é feito no software ClustalW para Linux. Este software é acessado através da biblioteca BioPerl. Os módulos utilizados são: Bio::Tools::Run::Alignment::Clustalw, Bio::SimpleAlign, Bio::PrimarySeq e Bio::SeqIO. Os principais parâmetros de entrada utilizados para o ClustalW são: o arquivo contendo as seqüências e a definição da cada uma, a matriz utilizada (BLOSUM) e o arquivo de saída (extensão .aln). O arquivo com extensão “.aln”, contém o alinhamento múltiplo. Depois do arquivo gerado, é utilizado o método Bio::SimpleAlign::consensus_iupac para a geração da fita consenso degenerada. Para a geração de uma segunda fita consenso, chamada de fita “match”, é utilizado o método Bio::SimpleAlign::match_line(). Este método gera uma fita com o símbolo * nas posições onde o alinhamento é perfeito. O pedaço do código utilizado para o alinhamento é exibido abaixo. $str = Bio::SeqIO->new(-file => 'TCC_Sequences.fasta', '-format' => 'Fasta' ); @seq_array = (); while ( my $seq = $str->next_seq() ) { push (@seq_array, $seq) ;} $seq_array = \@seq_array; $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params); @params = ('matrix' =>'BLOSUM', 'OUTFILE' => 'TCC_Sequences.aln' ); $aln = $factory->align($seq_array); $consenso = $aln->consensus_iupac(); $match = $aln->match_line(); 83 A Figura 34 mostra um pedaço do arquivo gerado pelo alinhamento feito pelo ClustalW, com extensão .aln. PileUp MSF: 714 Type: N Name: gi|48374930 oo Name: gi|48374929 oo Check: Len: Len: 714 714 2251 .. Check: Check: 4033 8218 Weight: Weight: 50.0 50.0 // gi|48374930 gi|48374929 .......... ........TG TATGTGCTTG TAAATATTAA GTTGTATGTG TATATGTTTG TATGTGCTTG TATGTGCTTG TAAATATTAA GTTGTATGTG gi|48374930 gi|48374929 TGTTTGTATG TATGGTATAA TAAACACGTG TGTATGTGTT TTTAAATGCT TGTTTGTATG TATGGTATAA TAAACACGTG TGTATGTGTT TTTAAATGCT gi|48374930 gi|48374929 TGTGTAACTA TTGTGTCATG CAACATAAAT AAACTTATTG TTTCAACACC TGTGTAACTA TTGTGTCATG CAACATAAAT AAACTTATTG TTTCAACACC gi|48374930 gi|48374929 TACTAATTGT GTTGTGGTTA TTCATTGTAT ATAAACTATA TTTGCTACAT TACTAATTGT GTTGTGGTTA TTCATTGTAT ATAAACTATA TTTGCTACAT gi|48374930 gi|48374929 CCTGTTTTTG TTTTATATAT ACTATATTTT GTAGCGCCAG TGGCCATTTT CCTGTTTTTG TTTTATATAT ACTATATTTT GTAGCGCCAG CGGCCATTTT gi|48374930 gi|48374929 GTAGCTTCAA CCGAATTCGG TTGCATGCTT TTTGGCACAA AATGTGTTTT GTAGCTTCAA CCGAATTCGG TTGCATGCTT TTTGGCACAA AATGTGTTTT Figura 34. Figura com alinhamento feito pelo software ClustalW 2.3. Projeto de Primers Esta etapa visa projetar um ou mais primers de acordo com a(s) seqüência(s) que o usuário informa ou analisar um ou vários primers prontos fornecidos pelo usuário. Através de uma ou várias seqüências fornecidas pelo usuário e outros parâmetros de entrada o sistema apresenta os primers encontrados que satisfaz as restrições. Se o usuário selecionar apenas uma seqüência, o sistema projetará um primer para a seqüência. Mas se o usuário inserir mais de uma seqüência, o sistema projetará um primer baseado na fita consenso gerada na etapa de preparação das seqüências. 84 As Figuras 35 e 36 mostram as telas de parâmetros de primers. A primeira tela (Figura 35) contém os campos para os parâmetros mais simples, enquanto que a segunda tela (Figura 36), contém os campos para o usuário inserir os parâmetros internos de primers. Figura 35. Tela com os parâmetros de entrada para o projeto de primers. 85 Figura 36. Tela com os parâmetros de entrada internos para o projeto de primers. O usuário pode deixar parâmetros de entrada das características dos primers em branco. O sistema utiliza valores padrão, ou desconsidera o parâmetro, ou em alguns casos, calcula o valor 86 baseado em outros parâmetros. Por exemplo, o sistema calcula o tamanho do primer baseado na percentagem de CG da seqüência e na Tm desejada. O projeto inicia-se definindo os tamanhos mínimo e máximo para o primer, para que o mesmo tenha uma Ta (temperatura de anelamento) compatível com os valores indicados de Ta, %GC e bases na ponta 3’(tail bases). A seguir, a seqüência é percorrida, e para cada base percorrida, de LenMin (tamanho mínimo do primer) até LenMax (tamanho máximo) bases seguintes são analisadas. O princípio é rejeitar o primer assim que alguma restrição não for satisfeita. Inicia-se avaliando as restrições que possam permitir percorrer a seqüência mais rapidamente, economizando tempo de processamento. Exemplificando: o número máximo permitido de seqüências contínuas iguais é maxCont. Se o sistema está buscando primers da posição 1 até a posição 20, e encontra ‘X’ bases contínuas iguais a partir da base 12, então o sistema só começa a procura de novos primers a partir da posição (12 + X – maxCont + 1). Isso elimina a procura de primers em muitas bases. O primer é formado a partir do trecho da seqüência sob análise. No caso da fita sense, o primer é seu complemento e sua ponta 3’ está no início da seqüência. No caso da fita anti-sense, o primer é a própria seqüência sense, e sua ponta 3’ está no final de sua seqüência. A Figura 37 mostra o esquema de uma fita sense e uma fita anti-sense, os primers anelados e o sentido de amplificação das fitas. Figura 37. Fitas sense e anti-sense Uma vez com a seqüência do possível primer determinada, iniciam-se as verificações de cumprimento das demais restrições. Cada restrição pode ser testada ou não, dependendo se o usuário estabelecer limites ou não. As restrições estabelecidas podem ser: • Degenerações: procuram-se bases degeneradas a partir do final do primer. Se o máximo de degenerações for encontrada na posição K do primer, avança-se a busca na seqüência para a 87 posição (posição_atual + K). Considera-se uma degeneração uma base alternativa, assim, S (C ou G) é considerada uma degeneração, B (T ou C ou G) é considerada 2 degenerações e N (A ou T ou C ou G) é considerada 3 degenerações. • Degenerações 3’: esta restrição segue a mesma regra da descrita anteriormente, mas verifica apenas as degenerações na extremidade 3’. As restrições acima permitem avançar a busca de primers na seqüência em várias bases. As próximas restrições apenas rejeitam primers, mas a busca continua a partir da base atual. Exceção para harpin, dimmer e budge que consomem tempo de processamento e são deixadas para o final dos testes de restrição. As próximas restrições são: • %GC 3’: Nessa verificação conta-se o número de bases G e bases C e divide-se pelo tamanho da ponta 3’ (geralmente 7 bases). Bases degeneradas são consideradas da seguinte maneira: C, G ou S (C ou G) = 1; B (C ou G ou T) = 2/3; H (A ou C ou T) = 1/3, etc. • %GC: idem à restrição anterior, mas considera todo o primer. Só verifica-se todo o primer se a restrição %GC 3’ foi satisfeita. • Ta: a temperatura de anelamento do primer é calculada a partir da fórmula: [62,3oC + 0,41 (C + G) – 500/length] – 5oC onde: C + G = número de bases C + número de bases G, incluindo suas degenerações. Length = tamanho da seqüência do primer • Alinhamento 3’: verifica-se se há alinhamento perfeito nas últimas ‘x’ bases. • Hairpins: o procedimento para achar hairpins e budges é o mesmo. O que os diferencia é que os hairpins são buldges nos quais a estrutura secundária inclui as 3 últimas bases da ponta 3’. A Figura 38 apresenta a tela com o resultado do projeto de primers. O resultado é apresentado da mesma forma para a análise e projeto de primers. Para a análise são apresentadas as características dos primers dados pelo usuário. Para o projeto são apresentados os primers aprovados na fita sense e anti-sense, e os pares formados. Para cada primer da fita sense são apresentados os primers compatíveis na fita anti-sense. 88 Figura 38. Tela com os resultados do projeto de primers. Os primers gerados pelo sistema foram avaliados manualmente e verificou-se que todos atendem às restrições importas pelo pesquisador, sendo, em princípio, adequados ao uso estabelecido pelo mesmo. IV – CONCLUSÕES O Sistema Web para Projeto e Análise de Primers é um sistema disponibilizado na Web para auxílio à preparação de experimentos de PCR. Através desse sistema o pesquisador pode fazer a análise de primers já projetados ou projetar novos primers a partir de uma série de restrições (parâmetros de projetos) e seqüências genônicas inseridas pelo pesquisador ou trazidas de bancos de dados públicos automaticamente pelo sistema Esse sistema deve ser de grande utilidade para os pesquisadores da área de biologia molecular, pois diminui o tempo para o projeto de primers, e tende a melhorar a qualidade dos primers projetados em relação aos softwares existentes. Normalmente o pesquisador acessa o banco de dados público (GenBank), recupera as seqüências genômicas de interesse, e se for necessário, executa o alinhamento múltiplo em outra ferramenta, e por fim, faz o projeto de primers numa terceira ferramenta. Uma vantagem adicional desse sistema é possibilitar ao pesquisador utilizar todas essas ferramentas em único ambiente, e algumas vezes de forma transparente. A etapa de projeto de primers provê primers para seqüenciamento ou amplificação. Os primers projetados podem ainda ser de vários tipos: degenerados, primers para anelarem em mais de uma seqüência, primers com inserção de trechos específicos na ponta 3’ (que podem ser enzimas de restrição ou trechos para mutação sítio-dirigida). Uma análise manual dos primers projetados verificou que todos eles satisfazem todas as restrições impostas pelo pesquisador, sendo primers consistentes. Entretanto, validação final dos primers depende de sua confecção por uma indústria farmacêutica e de seu uso em experimentos de PCR reais, realizado em laboratório de biologia molecular com os equipamentoe e reagentes necessários, o que envolve aspectos que extrapolam o âmbito deste trabalho. Porém, os objetivos principais propostos neste trabalho, no âmbito computacional, foram atingidos. O desenvolvimento desse sistema apresentou uma série de dificuldades, entre elas: (i) Pouco conhecimento inicial na área de biologia molecular, não pertencente à ciência da computação; (ii) Problemas inesperados na configuração e administração de ambiente Linux e mesmo na instalação de módulos e programas necessários, como Perl, MySQL, BioPerl, ClustalW e Blast. O Sistema Operacional Linux exigiu tempo e esforço adicionais não dimensionados inicialmente; e (iii) A 90 linguagem de programação Perl, como outras para desenvolvimento de sistemas para Web, não possui recursos para depuração do código, o que demonstrou ser um grande limitador. Destacam-se ainda alguns avanços e melhorias necessários ao sistema para seu uso eficaz: (i) A inclusão de verificação de similaridade entre a fita concenso das seqüências selecionadas para anelamento dos primers com as seqüências selecionadas para o não anelamento dos primers, com o objetivo de eliminar da fita concenso regiões não específicas, onde os primers não deveriam anelarse; (ii) Após o projeto dos primers, fazer um alinhamento par-a-par dos mesmos com as seqüências existentes no GenBank. Essas melhorias devem prover uma análise de especificidade muito ampla; (iii) Na análise das características dos primers, alterar as fórmulas de cálculo para que representem a estabilidade química das moléculas através da entropia e entalpia das mesmas; (iv) Incluir mecanismos (ou acesso a ferramentas já existentes) para tradução de proteína para DNA, de forma a permitir também o projeto de primers concenso; e (v) Aumentar a abrangência desse sistema, realizando também a análise do produto amplificado pela PCR, cortes por enzimas de restrição e a simulação do gel de eletroforese, apresentando os resultados finais da PCR. Deste modo, o sistema poderia ser usado em praticamente todas as etapas da PCR. Além dessas melhorias, sugere-se que futuros trabalhos nessa área considerem também os seguintes pontos cruciais: (i) Sistemas para bioinformática envolvem, normalmente, uma quantidade de dados realmente muito grande, então sugere-se (a) o uso de estruturas de dados criadas especificamente para facilitar o acesso a esses dados e (b) o uso intensivo de processamento paralelo; (ii) Atividades em bioinformática requerem, normalmente, a execução de inúmeras subatividades para as quais normalmente também já existem sistemas desenvolvidos, então sugere-se: (c) o conhecimento dos sistemas existentes e de sua inter-relação, o que facilitaria o desenvolvimento de atividades de mais alto nível; e (d) o conhecimento do funcionamento interno (algoritmo) desses sistemas e os pressupostos biológicos envolvidos, para que não lhes seja dado um uso inapropriado. 91 BIBLIOGRAFIA ACCESS Excellence. DNA - A More Detailed Description. Disponível em: <http://www.accessexcellence.org/AB/GG/dna2.html>. Acesso em: 14 out. 2003. AFSETH, Guy. PCR Primer: Strategies to Improve Results. Given at Northwestern University, 9 jun. 1997. Disponível em: < http://www.biotechlab.nwu.edu/pe/>. Acesso em: 18 nov. 2003. AGENCIA EFE. Cientistas identificam dois genes vinculados à asma. Quinta, 8 de abril de 2004, 17h29. Disponível em: < http://noticias.terra.com.br/ciencia/interna/0,,OI291089-EI296,00.html >. Acesso em 08 abr. 2004. ALKAMI Biosystems. Alkami Quick Guide for PCR. 1. ed. United States of America: Guanabara Koogan, 1999. ANSELMO, Fernando. PHP e MySQL para Windows. Florianópolis: Visual Books, 2000. 144p. BACALTCHUK, Benami. A Percepção Social Nacional e Internacional Frente à Biotecnologia no Contexto Agropecuário. Disponível em: <http://www.cnpt.embrapa.br/livros/biotecnologia/bio1.htm>. Acesso em: 03 set. 2003. BIOMANIA. Disponível em: <http://www.biomania.com.br/biotecnologia/enzima_rest.php>. Acesso em: 15 set. 2003. BIOPERL. Disponível em: < http://www.bioperl.org/>. Acesso em: 11 set. 2003. BLAST. Disponível em: <http://www.ncbi.nlm.nih.gov/BLAST/Blast.cgi>. Acesso em: 22 nov. 2003. BONATO, Chris; BONATO, Cezar e PEREIRA, Maria do Socorro Vieira. Biologia na Web. Disponível em: <http://www.biologianaweb.com/genomica/multi.html>. Acesso em: 16 nov. 2003. 92 BROWN, T. A.. Genética: Um Enfoque Molecular. 3. ed. Rio de Janeiro: Guanabara Koogan, 1999. 336 p. Título Original: A Molecular Approach. CASTAGNETTO, Jesus et al. Professional PHP Programando. São Paulo: Makron Books do Brasil, 2001. 770 p. CHRISTIANSEN, Tom. Perl.com. Disponível em: <http://www.perl.com/>. Acesso em: 15 set. 2003. CLASSIC Experiments in DNA Replication. Disponível em: <http://www.blc.arizona.edu/marty/411/Modules/classic.html>. Acesso em: 18 nov. 2003. CLUSTALW. Disponível em: <http://www.ebi.ac.uk/clustalw/>. Acesso em: 22 nov. 2003. COWAN, John. Gel Electrophoresis Simulator. Disponível em: <http://webphysics.davidson.edu/applets/biogel/biogel.html>. Acesso em: 23 nov. 2003. CPAN: Comprehensive Perl Archive Network. Disponível em: <http://www.perl.com/cpan/>. Acesso em: 18 set. 2003. CRAIG, Paul. Simulation of Electrophoresis & Sequence Building of DNA. Disponível em: <http://www.rit.edu/~pac8612/electro/dna/DNA.html#>. Acesso em: 23 nov. 2003. DAWKINS, R. O gene egoísta. Belo Horizonte: Ed. Itatiaia, 1979. 230 p. DE ROBERTIS, E. M. F., HIB, Jose. Bases da Biologia Molecular e Celular. 3. ed. Rio de Janeiro: Guanabara Koogan, 2001. 418 p. GENE RUNNER for Windows. Disponível em: <http://www.generunner.com>. Acesso em: 20 set. 2003. GIBAS, Cynthia, JAMBECK, Per. Desenvolvendo Bioinformática: ferramentas de software para aplicações em biologia. Rio de Janeiro: Campus, 2001. 440 p. 93 GRIFFITHS, A. et al. Introdução a Genética. 7. ed. Rio de Janeiro: Guanabara Koogan, 2002. GUIMARÃES, Kátia Silva; MELO, Jeane Cecília Bezerra de. Uma Introdução à Análise de Seqüências e Estruturas Biológicas. In: JAI’03 – XXII Jornadas de Atualização em Informática, Capítulo 1, ago. 2003. HIGGINS, Des e TAYLOR, Willie. Bioinformatics: Sequence, Structure and Databanks. New York: Oxford University, 2000. 249p. HILBERS, Peter. Bioinformatics. Disponível em: <http://wwwpa.win.tue.nl/hilbers/d.ogo2.1inf11sept2001/node19.html#SECTION00019000000000 0000000>. Acesso em: 05 out. 2003. INNIS, Michael A. et al. PCR Protocols: A Guide to Methods and Applications. United States: Academic Press, 1990. 482 p. INTRODUÇÃO às Expressões Regulares. Disponível em: <http://www.helpscribble.com.br/webhelp/navbar/hs30000.htm>. Acesso em: 29 out. 2003. JONGENEEL, C. Victor. Transcription - types d'ARN. Disponível em: <http://ludwigsun1.unil.ch/~vjongene/molbio/chapt_7.htm>. Acesso em: 24 out. 2003. KAISER, Gary E. Tutorial – DNA, DNA Replication, and RNA. Atualizado em: 07 jan. 2003. Disponível em: <http://www.cat.cc.md.us/~gkaiser/goshp.html>. Acesso em: 14 out. 2003. LIFE TECHNOLOGY. PCR/RT-PCR Applications Guide. Induslab. [S.I. : s.n.], [ca. 2000] 29 p. MySQL. Disponível em: <www.mysql.com>. Acesso em: 18 set. 2003. NATIONAL CENTER FOR BIOTECHNOLOGY INFORMATION. Disponível em: <http://www.ncbi.nlm.nih.gov>. Acesso em: 22 set. 2003. 94 PANDOLFI, Valesca. Estruturas protéicas envolvidas nos processos biológicos. Disponível em: <http://www.cnpt.embrapa.br/livros/biotecnologia/bio18.htm>. Acesso em: 03 set. 2003. PHP. Disponível em: <http://www.php.net>. Acesso em: 16 set. 2003. PHYLIP. Disponível em: <http://evolution.genetics.washington.edu/phylip.html>. Acesso em: 14 nov. 2003. POSTGRESQL. Disponível em: <http://www.postgresql.org/>. Acesso em: 18 set. 2003. PROJETO POSTGRESQL BRASIL. Disponível em: <http://pgsqlbr.querencialivre.rs.gov.br/>. Acesso em: 28 set. 2003. PROSDOCIMI, Francisco. Chico On Line. Disponível em: <http://www.icb.ufmg.br/~franc/cool/index.htm>. Acesso em: nov. 2003. PROSDOCIMI, Francisco et al. Bioinformática: Manual do Usuário. Disponível em: <http://www.biotecnologia.com.br/bio29/bioinfo.html>. Acesso em: 14 set. 2003. Atualizado em: 15/06/03. QUEIROZ, Alexandre. Apostila de Introdução à Bioinformática. Disciplina de Bioinformática. Universidade Federal do Rio Grande do Norte. Fevereiro de 2002. SAVOLA, Tom; WESTENBROEK, Alan; HECK, Joseph. Usando HTML. Rio de Janeiro: Editora Campus LTDA, 1997. 681p. SCHWARTZ, Randal L.. Learning Perl. United States of America: O´Reilly & Associates, Inc, 1994. 246 p. SIEVER, Ellen; SPAINHOUR, Stephen; PATWARDHAN, Nathan. Perl – Guia completo. Rio de Janeiro: Ciência Moderna, 1999. 698p. 95 SILBERSCHATZ, Abraham; KORTH, Henry F. e SUDARSHAN, S. Sistema de Banco de Dados. 3 ed. São Paulo: Makron Books, 1999. SILVA, Flávio Henrique (Resp.). Módulo: Biologia Molecular. I Escola Brasileira de Inteligência Artificial e Bioinformática – InBio - São Carlos: [s.n.], 2001a. SILVA, Luciano Carlos da. Banco de Dados para Web do Planejamento à Implementação. São Paulo: Érica, 2001b. 240 p. SINGH, Vinay K. e KUMAR, Anil. PCR Primer Design. Bioinformatics Sub-centre, School of Biotechnology, Devi Ahilya University, Índia. Disponível em: <http://faculty.fullerton.edu/rmc89/bioinformatics/PCR_PrimerDesign.htm>. Acesso em: 19 nov. 2003. SWISS-PROT Database Access. Disponível em: <http://www.ebi.ac.uk/swissprot/access.html>. Acesso em: 16 set. 2003. TASSO, E.B. et al. Genética. Universidade Federal De São Paulo. Escola Paulista de Medicina. Disponível em: <http://www.virtual.epm.br/cursos/genetica/htm/base.htm>. Acesso em: 15 nov. 2003. THOMPSON, M., MCINNES, R., WILLARD, H. Genética Médica. Rio de Janeiro: GUANABARA KOOGAN, 1998. p. 23-25. THRELFALL, E. John et al. Application of Pulsed-Field Gel Electrophoresis to an international Outbreak of Salmonella agona. Laboratory of Enteric Pathogens, Central Public Health Laboratory, London, United Kingdom. Abr-jun 1996. Disponível em: <http://www.cdc.gov/ncidod/eid/vol2no2/threlfal.htm>. Acesso em: 16 dez. 2003. TISDALL, James D.. Beginning Perl for Bioinformatics. United States of America: O´Reilly & Associates, Inc, 2001. 368 p. TRIUNFOL, Márcia L. O DNA vai à escola. Disponível em: <http://www.odnavaiaescola.com/>. Acesso em: 24 out 2003. 96 VALTAS, Marco. Genética Molecular e Tecnologia do DNA Recombinante. Disponível em: <http://morpheus.fmrp.usp.br/td/>. Acesso em: 14 ago. 2003. WEB PRIMER: DNA and Purpose Entry. Disponível em: <http://seq.yeastgenome.org/cgibin/SGD/web-primer>. Acesso em: 14 nov. 2003. ZAHA, Arnaldo (Coord). Biologia Molecular Básica. 1. ed. Porto Alegre: Mercado Aberto, 1996. 336p. (Série Ciência XXI). GLOSSÁRIO Árvore filogenética mostra a relação de descendência entre os organismos e o tempo que se passou entre o ancestral comum de duas espécies Códon uma trinca de nucleotídeos que codifica um aminoácido Contig um conjunto contíguo de seqüencias superpostas de DNA DNA Ácido desoxirribonucléico, o material genético Eletroforese separação de moléculas com base em sua carga elétrica total Exons uma das regiões codificantes de um gene descontínuo Gene o gene corresponde a uma seqüência particular de DNA, codificadora de uma informação Homologia indica que duas seqüências possuem uma probabilidade alta de compartilharem o mesmo ancestral Introns em um gene descontínuo, um dos segmentos que não contém informação biológica Ortólogos genes que têm a mesma função Parólogos genes que não possuem o mesmo papel, mas possuem um ancestral em comum PCR técnica que possibilita a reprodução de milhares de cópias de um determinado fragmento de DNA Primer pequena cadeia de DNA de fita simples, onde, a partir da posição 3’, a enzima DNA polimerase iniciará a incorporação de nucleotídeos, formando a fita dupla do DNA. Score pontuação Shotguns pequenas seqüências de DNA para formar uma única seqüência Similaridade refere-se à presença de locais similares e idênticos em duas seqüências trechos conservados