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

Introdução ao Biopython

Capítulo 9

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

Biopython é uma biblioteca ou uma coleção de ferramentas para facilitar o desenvolvimento de aplicações para a Bioinformática utilizando a linguagem de programação Python.

Biopython faz parte dos chamados Bio* projects: projetos para o desenvolvimento de ferramentas para biologia molecular computacional em diversas linguagens de programação, como BioDAS, BioJava, BioMOBY, BioPerl, BioPipe, BioRuby, BioPHP e BioSQL. O Projeto Biopython é mantido por uma associação internacional de desenvolvedores, e é disponibilizado gratuitamente.

Logo oficial do Biopython. Copyright © 2017 Patrick Kunzmann

Biopython apresenta um conjunto de pacotes, módulos e classes para análises e anotações de sequências biológicas. Também fornece métodos para acessar bancos de dados biológicos online, como por exemplo, os bancos mantidos pelo NCBI (National Center for Biotechnology Information). Além de tudo isso, Biopython apresenta diversos módulos separados que permitem análises de alinhamentos de sequências, estruturas de proteínas, genética de populações, filogenia, visualização de dados biológicos, regiões motivos em sequências e, até mesmo, o uso de aprendizagem de máquina.

Dentre as principais funcionalidades do Biopython estão os métodos para análises de arquivos obtidos em diversos programas e formatos, como por exemplo:

  • Resultados de BLAST – local ou online
  • Clustalw
  • FASTA
  • GenBank
  • PubMed and Medline
  • ExPASy
  • SCOP
  • UniGene
  • SwissProt

Confira a lista de pacotes, módulos e classes do Biopython no capítulo Hierarquia do Biopython.

Como instalar o Byopython?

A instalação do Biopython é simples e rápida. Para isso faça o download da última versão em http://biopython.org/wiki/Download. Biopython possui suporte para diversos sistemas operacionais, que incluem: (i) Windows; (ii) Linux; e (iii) MacOS. Para Windows, um arquivo executável instalará todos os componentes. Para Linux é necessário fazer o download do arquivo compactado, extrair os dados e executar as seguintes linhas de comando no terminal:

python setup.py build
python setup.py test
sudo python setup.py install 

Você pode conferir outros métodos de instalação na documentação oficial: <http://biopython.org/DIST/docs/install/Installation.pdf>.

Hello World” do Biopython

Aprendemos nos primeiros capítulos a executar uma linha de comando básica em Python e imprimir na tela “Hello World”. Em Biopython, podemos considerar leitura de sequências primárias como o equivalente a um primeiro passo.

Em um arquivo de texto, insira o código abaixo:

from Bio.Seq import Seq
minha_sequencia = Seq("AGTACACTGGT")
print(minha_sequencia)

Na primeira linha declaramos o uso da biblioteca Biopython, a qual declaramos que do módulo Bio.Seq será importada a classe Seq. Na segunda linha, declaramos a sequência “AGTACACTGGT”. Observe que a sequência é declarada não como uma string, mas como um objeto de Seq. O construtor da classe recebe como argumentos uma sequência (string) e opcionalmente um objeto do tipo alfabeto, que determinará quando necessário o tipo da sequência. Ao imprimir a variável minha_sequencia será impressa a sequência enviada.

Complementar e reverso complementar de uma sequência

Outra função básica do Biopython é impressão de sequências complementares e reverso complementares. Em Bioinformática, nucleotídeos presentes em sequências de DNA são representados pelos caracteres A, T, C e G (adenina, timina, citosina e guanina). Assim, define-se como sequência complementar a sequência formada por bases que pareiam com bases de outra fita de DNA, ou seja, bases que realizam ligações de hidrogênio na formação da dupla hélice do DNA. Logo, A pareia com T, pois adenina realiza uma ligação de hidrogênio com timina, assim como C pareia com G, devido a ligação entre citosina e guanina.

A classe Seq fornece métodos para determinação dessas sequências.

# Exibindo a sequencia complementar com Biopython
from Bio.Seq import Seq

minha_sequencia = Seq("AGTACACTGGT")
print(minha_sequencia.complement())

Ao objeto da classe Seq anteriormente criado foi aplicado o método complement( ), que gera a sequência complementar. Ao executar esse script será impresso na tela “TCATGTGACCA”, pois essa é a sequência complementar de “AGTACACTGGT”. Se o conteúdo da variável minha_sequencia fosse uma simples string, e não um objeto da classe Seq, o método complement( ) não poderia ter sido aplicado, e o interpretador Python retornaria um erro informando que um objeto str não tem nenhum atributo complement.

Além disso, como a transcrição em genomas de dupla hélice de DNA corre em sentidos opostos, pode-se considerar relevante não apenas conhecer a sequência complementar, mas também o reverso da sequência complementar.

# Exibindo a sequencia reverso complementar com 
# Biopython

from Bio.Seq import Seq
minha_sequencia = Seq("AGTACACTGGT")

print(minha_sequencia.reverse_complement())
# ACCAGTGTACT

O método reverse_complement( ) gera a sequência reversa complementar de um objeto de Seq.

Transcrição

O processo de transcrição permite a formação do RNA mensageiro com base na região codificante do DNA. Computacionalmente falando podemos analisar a transcrição como um processo de modificações em strings.

Fita de DNA (região codificante)

5’

ATGGCCATTCGCAAGGGTGCCCGATAG

3’

3’

CTATCGGGCACCCTTGCGAATGGCCAT

5’

Fita de DNA reversa complementar

|

Transcrição

5’

AUGGCCAUUCGCAAGGGUGCCCGAUAG

3’

RNA mensageiro

Vamos reproduzir o exemplo acima com a função transcribe( ) do Biopython:

from Bio.Seq import Seq
from Bio.Alphabet import IUPAC

dna = Seq("ATGGCCATTCGCAAGGGTGCCCGATAG", \
IUPAC.unambiguous_dna)
print("DNA: "+dna)
# DNA: ATGGCCATTCGCAAGGGTGCCCGATAG

rna = dna.transcribe()
print("RNA: "+rna)
#RNA: AUGGCCAUUCGCAAGGGUGCCCGAUAG

dna2 = rna.back_transcribe()
print("DNA: "+dna2)
#DNA: ATGGCCATTCGCAAGGGTGCCCGATAG

Dessa vez optamos em declarar que iremos trabalhar com uma sequência de DNA. Para isso foi necessário declarar que do pacote Bio.Alphabet, usado em objetos Seq para sequências que contém um número finito de palavras similares, seria usado o módulo IUPAC, que define padrões de alfabetos para nucleotídeos e proteínas definidos pela International Union of Pure and Applied Chemistry.

Em nosso exemplo, a variável dna recebe uma sequência cujo dicionário é declarado como unambiguous_dna, ou seja, apenas as letras GATC são permitidas nas sequências. Observe que aplicando dna.transcribe( ) à variável rna, a string presente no objeto Seq em dna é transcrita e armazenada. Para retorná-la a forma original é possível aplicar o método back_transcribe( ) a varíavel rna.

Tradução

No processo de tradução, a sequência de RNA mensageiro será utilizada como molde para a junção dos aminoácidos, e assim, a formação da proteína.

5’

AUGGCCAUUCGCAAGGGUGCCCGAUAG

3’

RNA mensageiro

|

Tradução

MAIRKGAR

Proteína

Inicialmente vamos simular o processo de tradução com base em uma sequência de RNA:

from Bio.Seq import Seq
from Bio.Alphabet import IUPAC

rna = Seq("AUGGCCAUUCGCAAGGGUGCCCGAUAG", \
IUPAC.unambiguous_rna)

proteina_rna = rna.translate()

print(proteina_rna)
# MAIRKGAR*

O método translate( ) permite converter uma sequência de RNA mensageiro em uma sequência de aminoácidos. Observe que no exemplo impresso há um caractere * ao final da sequência. Esse caractere representa o stop codon. Codons são sequências de três bases de nucleotídeos que ao serem lidos durante o processo de tradução representam um determinado aminoácido, ou no caso do stop codon, uma sequência que avisa a maquinaria celular que a tradução chegou ao fim.

A função translate( ) também pode ser utilizada para traduzir diretamente sequências de DNA, sem necessidade de simular o processo de transcrição.

from Bio.Seq import Seq
from Bio.Alphabet import IUPAC

dna = Seq("ATGGCCATTCGCAAGGGTGCCCGATAG", \
IUPAC.unambiguous_dna)

proteina_dna = dna.translate()

print(proteina_dna)
# MAIRKGAR*

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

Livro Introdução à Programação para Bioinformática com Biopython

Capítulo 1
Introdução ao Python

Capítulo 2
Comandos condicionais

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

Capítulo 4
Trabalhando com strings

Capítulo 5
Listas

Capítulo 6
Manipulando arquivos

Capítulo 7
Funções

Capítulo 8
Princípios da orientação a objetos

Capítulo 9
Introdução ao Biopython

Capítulo 10
Sequências

Capítulo 11
BLAST

Capítulo 12
PDB

Capítulo 13
Visualização de dados em Python

Capítulo 14
Outras coisas interessantes que se pode fazer com Biopython

Capítulo 15
Hierarquia do Biopython

Por favor, nos cite:

MARIANO, D. C. B.; BARROSO, J. R. P. M. ; CORREIA, T. S. ; de MELO-MINARDI, R. C. . Introdução à Programação para Bioinformática com Biopython. 3. ed. North Charleston, SC (EUA): CreateSpace Independent Publishing Platform, 2015. v. 1. 230p .

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.