Criando e trabalhando suas sequências

A primeira coisa que você precisa saber é como criar suas seqüências. Você faz isso utilizando a classe Seq. Essa, tem como principais atributos, os seguintes:

data
como o nome indica, armazena a seqüência própriamente dita. É uma string convencional, e, portanto, imutável.
alphabet
É um objeto que identifica quais caracteres compoem essa string e como ela deve ser interpretada, isto é, se é uma seqüência protéica, de DNA ou RNA; além, indica que tipo de codificação está usando. Os "alfabetos" atualmente disponíveis estão no modulo Bio/Alphabet.
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> sequencia = Seq("ATGGCAGTCAAGTACGTTG", IUPAC.unambiguous_dna)
>>> print sequencia
Seq('ATGGCAGTCAAGTACGTTG', IUPACUnambiguousDNA())

O atributo "data" de Seq, que contém a seqüência propriamente dita, é uma string, mas a instância de Seq não. Dessa forma, os métodos de strings não são automáticamente válidos para instâncias da classe Seq; entretanto, seus métodos são muito similares e vale a pena tentar o que lhe vem a cabeça baseado em seus conhecimentos de python.
Por exemplo, para pegar uma fatia da seqüência, a notação é a mesma.

>>>sequencia[4:8]
Seq('CAGT', IUPACUnambiguousDNA())

Assim como strings convencionais, o primeiro elemento de uma seqüência é referido por 0, o primeiro item da notação é incluído no intervalo e o último não. Dessa forma, a notação [4:8] inclui o intervalo com os elementos 5,6,7,8 e mantém o alfabeto original. Por sinal, em todas as operações o alfabeto é mantido.
A notação, seq1 + seq2 concatena ambas as seqüências, desde que ambas estejam codificadas com mesmo alfabeto.

Como Seq.data é uma string, por padrão, ela é imutável.

>>>sequencia[5] = "G"
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: Seq instance has no attribute '__setitem__'

Mas caso você queira trabalhar com seqüências mutáveis:

>>> sequencia_mutavel = sequencia.tomutable()
>>> print sequencia_mutavel
MutableSeq('ATGGCAGTCAAGTACGTTG', IUPACUnambiguousDNA())
>>> sequencia_mutavel[5] = "G"
>>> print sequencia_mutavel
MutableSeq('ATGGCGGTCAAGTACGTTG', IUPACUnambiguousDNA())

Ok. Já entendemos mais ou menos como as instâncias da classe Seq funcionam. Mas e o que podemos fazer com elas?

O diretório Bio contém módulos para transcrever e traduzir seqüências.
Para transcrever sua seqüência:

>>> from Bio import Transcribe
>>> rna = Transcribe.unambiguous_transcriber.transcribe(sequencia)
>>> print rna
Seq('AUGGCAGUCAAGUACGUUG', IUPACUnambiguousRNA())

Para traduzir sua seqüência:

>>> from Bio import Translate
>>> tradutor_padrao = Translate.unambiguous_dna_by_id[1]
>>> tradutor_mitocondrial = Translate.unambiguous_dna_by_id[2]
>>> sequencia = Seq("ATGCATCTGTTATGGTGAAGGGTCAAGCG", IUPAC.unambiguous_dna)
>>> print sequencia
Seq('ATGCATCTGTTATGGTGAAGGGTCAAGCG', IUPACUnambiguousDNA())
>>> tradutor_padrao.translate(sequencia)
Seq('MHLLW*RVK', HasStopCodon(IUPACProtein(), '*'))
>>> tradutor_mitocondrial.translate(sequencia)
Seq('MHLLWW*VK', HasStopCodon(IUPACProtein(), '*'))

Caso você queira sua seqüência traduzida apenas até o primeiro codon finalizador:

>>> tradutor_padrao.translate_to_stop(sequencia)
Seq('MHLLW', IUPACProtein())

Se lhe for de interesse, é possível também fazer o processo inverso: dado uma seqüência protéica, obter uma possível seqüência de DNA codificante.

>>> proteina = tradutor_padrao.translate_to_stop(sequencia)
>>> print proteina
Seq('MHLLW', IUPACProtein())
>>> dna = tradutor_padrao.back_translate(proteina)
>>> print dna
Seq('ATGCATTTGTTGTGG', IUPACUnambiguousDNA())
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License