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.
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:
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