Categorias
Introdução à Programação para Bioinformática com Perl

Prefácio

Este conteúdo faz parte do livro “Introdução à Programação para Bioinformática com Perl“. Você pode adquirir a versão impressa desse livro aqui ou a versão para Kindle aqui. Para nos citar, consulte este link.

“There’s More Than One Way To Do It”. 

(Perl, philosophy)

Se você acaba de entrar no mundo da Bioinformática, provavelmente a primeira linguagem de programação que ouvirá falar é Perl. Talvez isso se deva à forte ligação que Perl e a Bioinformática criaram durante o Projeto Genoma Humano. Perl foi fortemente utilizada para gerenciamento e manipulação dos dados do Projeto Genoma Humano devido a sua versatilidade em lidar com grandes quantidades de texto. Ou talvez pelo fato de Perl ser uma linguagem simples e flexível, que pode ser aprendida rapidamente. Se você tem um problema e precisa resolvê-lo com Perl “existe mais de uma maneira de fazer isso”. Eis o mantra do Perl!

Apesar da palavra Perl não ter uma definição específica, Larry Wall, seu autor, passou a adotar o acrônimo Practical Extraction and Report Language ou, na tradução literal para o português, Linguagem Prática de Extração e Relatório.

Neste livro abordaremos também a biblioteca BioPerl. BioPerl contém uma série de códigos para lidar com dados biológicos. Todavia, podemos considerar que as principais vantagens em se utilizar a Perl são as funções nativas da linguagem, como por exemplo, os comandos para lidar com expressões regulares, que serão abordados com profundidade durante este manuscrito. Por esse motivo optamos por destacar a própria linguagem Perl no título deste livro, e não a biblioteca BioPerl, em contradição ao primeiro livro da série em que demos destaque à biblioteca Biopython.

Nos próximos capítulos você verá como Perl pode facilmente domar o big data. Se você ainda não conhece nenhuma linguagem de programação poderá rapidamente aprender a desenvolver alguns scripts em Perl. Se você já tem algum conhecimento em programação irá poder dominar essa linguagem em pouco tempo, e assim, compreender o verdadeiro significado de uma linguagem de programação de aprendizado rápido. Por fim, acreditamos que você verá como Perl é uma linguagem fantástica!

A quem se destina este livro?

Este livro se destina a profissionais de diversas formações que aspiram se tornar bioinformatas, como biólogos, geneticistas, biomédicos, microbiologistas, físicos, químicos e até mesmo a profissionais de tecnologia da informação. Esse livro se destina a todo aquele que quer se aventurar no universo da Bioinformática e deseja ter um guia para seus primeiros passos na programação para Bioinformática utilizando a linguagem Perl.

Assim, tentaremos explicar de maneira simples e didática os princípios básicos de programação através da linguagem Perl. Em seguida, aprenderemos o básico do uso da biblioteca BioPerl para análise de dados biológicos.

Como este livro está organizado?

Na primeira parte apresentaremos os conceitos básicos da linguagem Perl. Sugerimos que se atente ao capítulo 8, em que será apresentado o conceito de expressões regulares. Na segunda parte, apresentaremos a biblioteca BioPerl e demonstraremos algumas funções básicas, como: manipulação de sequências de proteínas e DNA, análise de resultados de BLAST e de arquivos de estruturas de proteína no formato PDB.

Se você leu o primeiro livro da série, Introdução a programação para Bioinformática com Biopython, talvez já possa pular para o capítulo 1, mas caso este seja o primeiro livro da série que está lendo, veja a seguir alguns conceitos fundamentais.

Por que aprender a programar na Bioinformática?

Programar ajuda a aperfeiçoar o raciocínio lógico, as habilidades analíticas e, acima de tudo, programar é muito divertido! Você pode não achar isso uma verdade agora, mas vamos ver se sua opinião não mudará após desenvolver um programa que resolva um problema.

Bom, se você ainda não se convenceu de que programar é importante, lembre-se que uma das razões para o surgimento da Bioinformática é a grande quantidade de dados produzidos pelos equipamentos modernos, como Sequenciadores de Próxima-Geração. Analisar esses dados manualmente demandaria um grande tempo.

Alguns autores da área acreditam que os conhecimentos em programação não são fundamentais para bioinformatas, afinal há uma grande gama de programas para Bioinformática já desenvolvidos, cabendo ao bioinformata apenas saber utilizá-los. Em parte, discordamos disso! Saber como programar é importante, mas acreditamos que talvez não seja necessário ter um conhecimento avançado da área. Muitas vezes o bioinformata enfrentará problemas em que um simples script que ordena dados ou que busca um padrão específico poderá resolver. Saber como desenvolver esse script pode ser a chave para resolver o problema rapidamente.

Lembre-se que a Bioinformática é uma área vinculada tanto a Ciência da Computação quanto a Biologia, logo cabe ao bioinformata ter conhecimentos em ambas as áreas. E dominar uma linguagem de programação com precisão é um recurso que pode ser determinante para explicar ou não um problema biológico.]

Por fim, se você espera encontrar dicas avançadas de programação, este talvez não seja um livro indicado para você. Mas se quer um livro que lhe indique um caminho para a programação na Bioinformática –  pegue uma xícara de café e seus fones de ouvido, escolha uma música que lhe dê concentração, abra seu editor de textos e divirta-se codificando. Vamos lá?

O que são programas de computadores?

Programas de computadores (software) são conjuntos de instruções escritos através de uma linguagem de programação, que serão executadas ou interpretadas por um processador ou máquina virtual para realização de uma determinada tarefa.

Como exemplo de algumas funcionalidades básicas que programas devem realizar podemos citar: (i) entrada de dados: o programa deve receber dados do teclado, de arquivos ou de algum outro dispositivo de entrada; (ii) saída de dados: o programa deve mostrar dados na tela (imprimir) ou enviar dados para um arquivo ou algum outro dispositivo de saída; (iii) realizar cálculos: um programa deve poder executar operações matemáticas, como adição, divisão, subtração e multiplicação; (iv) executar comandos condicionais: um programa deve poder executar certos trechos do código apenas se eles se adequarem a determinadas condições descritas também no código; e (v) repetição: um programa deve poder executar determinadas ações repetidamente, podendo também aplicar variações às ações executadas.

Processadores (CPU) executam programas em linguagem binária: uma linguagem composta unicamente dos números 0 e 1. Entretanto, acredito que seria impossível ou pelo menos improdutivo (nunca diga “impossível”) escrevermos programas em binário, por isso utilizamos as chamadas linguagens de alto nível para codificar.

Linguagens de programação de alto nível, como PHP, C, C++, C#, Java, JavaScript (não é a mesma coisa do que Java), Python e Perl possuem uma sintaxe próxima da nossa linguagem natural, em geral, na língua inglesa. Um exemplo é o comando “print“, encontrado em quase todas as linguagens de programação. O comando “print” imprime na tela alguma mensagem especificada pelo programador.

Muitas funções são similares em diversas linguagens. Assim, se você já conhece uma determinada linguagem e começa a desenvolver em outra, você conseguirá facilmente escrever alguns programas, mesmo nunca tendo escrito nenhum código naquela linguagem. Linguagens de programação são como idiomas. Se você fala português, provavelmente conseguirá entender algumas palavras em espanhol, mesmo sem nunca ter escutado essa língua, e poderá até mesmo arriscar algumas frases, que apesar de você não ter a fluência da língua, poderão ser entendidas por um cidadão nativo de um país que fala a espanhol. Entretanto, o mesmo não ocorrerá se você tentar falar chinês. Há linguagens bastante parecidas, mas também há linguagens com grandes diferenças.

A seguir, alguns conceitos básicos que você provavelmente irá ler neste livro.

Conceitos básicos

Algoritmo: define-se como uma série de passos para que se possa resolver um problema computacionalmente tratável em tempo finito.

Hardware: é a parte física de um computador: placas, processadores e componentes eletrônicos em geral.

Software: é a parte lógica de um computador, um programa de computador que segue um determinado algoritmo, e que pode ser executável ou interpretável.

Script: conjunto de comandos organizados em um arquivo de texto e que será analisado por um interpretador ou por um compilador. Perl será executado neste livro através de scripts.

Função: como o próprio nome já diz é um trecho do código que tem uma função específica, podendo receber variáveis e retornar informações processadas. Linguagens de programação já possuem funções nativas, o que permite que o programador execute ações sem ter que escrever o algoritmo básico. Entretanto, programadores podem construir suas próprias funções, o que auxilia na organização do código. Em Perl, funções são conhecidas como sub-rotinas.

Sub-rotinas: em Perl são funções. Podem ser criadas pelo usuário utilizando a palavra reservada sub.

Interpretador: constitui num programa de computador que recebe um comando único ou script e os converte em linguagem de máquina para que possam sem processados pela CPU (unidade central de processamento, ou simplesmente processador).

Paradigmas: representação de um padrão; metodologia.

Iteração: sinônimo de repetição.

Indentação: estruturação e organização do código. Derivada do inglês indent.

Diretório: sinônimo a pasta.

Abstração: na computação pode-se compreender abstração como uma representação simples que explique todo um processo.

Programação estruturada (PE): método de programação em que o código é estruturado de maneira simples em três partes: sequência, decisão e iteração. A PE pode ser vista como uma programação linear, uma vez que os códigos são executados sequencialmente.

Programação orientada a objetos (POO): na programação orientada a objetos, o código é organizado por classes, que instanciam objetos.

Bloco: define-se bloco como um trecho de código, quase sempre delimitado por chaves “{ }”, a qual todo conteúdo está vinculado ao comando inicial.

sub exemplo_de_bloco {
    # Comandos que pertencem a uma sub-rotina
}

Conseguindo um editor de textos/IDES

Se você leu o livro anterior desta série sabe que para programar precisará de uma IDE ou de pelo menos um editor de textos. Usuários do Linux podem utilizar o editor nativo (gedit), que apresenta bons recursos. Para Windows, a documentação oficial do Perl recomenda o uso e instalação do software Padre.

Recomendamos o software Sublime text por ser simples, robusto e leve. Se escolher esse editor, sugerimos que experimente o esquema de cores “monokai“. Esse padrão de cores permite que você programe por horas sem cansar sua visão. Sublime text é compatível com Windows, Linux e MacOS. Sublime text 2 foi utilizado para desenvolvimento dos scripts deste livro.

Onde conseguir: http://www.sublimetext.com

Material suplementar

Todos os scripts e exemplos preparados neste livro foram disponibilizados em: <https://github.com/dcbmariano/perl>. Antes de começar a leitura do próximo capítulo, acesse o diretório e faça download dos dados contidos nesse repositório (clique em Download Zip).

Padrão de nomeação dos scripts:

  • cX_sY.pl

Como por exemplo, no script c1_s1.pl:

  • c1 indica que o script é exibido no capítulo 1;
  • s1 indica que se trata do primeiro script exibido no capítulo.

Alguns scripts apresentados neste livro poderão resolver de maneiras diferentes uma mesma tarefa. Isso foi feito propositalmente para que você possa aprender que Perl permite que um problema seja resolvido de diversas formas. Perl dá ao programador uma grande liberdade para decidir como construir seus scripts sem considerar se essa forma é certa ou errada. Entretanto, é importante que programadores não se esqueçam de boas práticas de programação, como inserção de comentários e indentação de código.

Quer aprender mais? Conheça nossos cursos profissionalizantes à partir de R$19,99:

Nota do autor
Prefácio

Capítulo 1
Introdução ao Perl

Capítulo 2
Comandos condicionais

Capítulo 3
Strings

Capítulo 4
Arrays

Capítulo 5
Laços de repetição

Capítulo 6
Manipulando arquivos

Capítulo 7
Sub-rotinas

Capítulo 8
“O guia de sobrevivência para expressões regulares em Perl”

Capítulo 9
Introdução ao BioPerl

Capítulo 10
Sequências

Capítulo 11
BLAST

Capítulo 12
Estruturas de proteínas

Capítulo 13
Hierarquia do BioPerl

Epílogo
Referências bibliográficas
Sobre os autores

Por favor, nos cite:

MARIANO, DIEGO CÉSAR BATISTA; de MELO-MINARDI, R. C. . Introdução à Programação para Bioinformática com Perl. 1. ed. North Charleston, SC (EUA): CreateSpace Independent Publishing Platform, 2016. v. 2. 200p .

Por Diego Mariano

Doutor em Bioinformática pela Universidade Federal de Minas Gerais com atuação na área de ciência de dados e aprendizado de máquina aplicados ao aperfeiçoamento de enzimas usadas na produção de biocombustíveis. Mestre em Bioinformática, também pela UFMG, atuando na área de desenvolvimento de sistemas Web para montagem de genomas. Atualmente realiza estágio pós-doutoral no Departamento de Ciência da Computação da UFMG com foco em desenvolvimento de sistemas Web para Bioinformática, análise exploratória e visualização de dados. Tem conhecimentos nas linguagens: PHP, JavaScript, Python, R, Perl, HTML, CSS e SQL.