Carregando O Formato Genbank

O formato Genbank é considerado um dos mais padronizados formatos de armazenamento e descrição de dados de biologia molecular. Para carregar os dados desse formato, assim como foi feit para o formato FASTA, use a função "parse" do módulo SeqIO.

>>> from Bio import SeqIO 
>>> arquivo = open("sequences_lucs.gb") #especifica o arquivo que contém os dados
>>> dados = list(SeqIO.parse(arquivo, "genbank")) #carrega o "arquivo" formato "genbank"
>>> arquivo.close()
>>> type(dados)
<type 'list'>

Como esperado, você tem agora uma lista com todos os dados do arquivo "sequences_lucs.gb". Vamos ver o que de fato essa variável "dados" contém. Não esqueça de "fechar" seu "arquivo", pois a classe parse o esvazia.

>>> dados
[SeqRecord(seq=Seq('CAACTCCGTAGTCCCTAAACGGTAGAGGAAAAGTTTTTGAAAAATGGAAATGGAAAAGG....', IUPACAmbiguousDNA()), id='L39929.1', name='HOTLUCI', description='Hotaria parvula (clone pB-Hp) luciferase mRNA, complete cds.', dbxrefs=[]), SeqRecord(seq=Seq('CAAGAATGGAAGATGATAGTAAACATATTATGCATGGCCACCGCCATTCTATCCTTTGGGAGGATGGAACTGCCGGA....', IUPACAmbiguousDNA()), id='L39928.1', name='PIBLUCIF', description='Pyrocoelia miyako (clone pB-PmL41) luciferase mRNA, complete cds.', dbxrefs=[]), SeqRecord(seq=Seq('TCAGTGCAAGACTTTAGGGATCAAAATGGAAGAAGAAAACATTAGGCATGGAGAGCGTCCTCGTGATATAGTCCATCC....', IUPACAmbiguousDNA()), id='AF139644.1', name='AF139644', description='Phrixothrix vivianii luciferase mRNA, complete cds.', dbxrefs=[]), SeqRecord(seq=Seq('GTGACAGTTTAGTTCAGTAGAAGATTTTTTTGAGATCAAAATGGAAGAAGAAAACGTTGTGAATGGAGATCGTCCTCG....', IUPACAmbiguousDNA()), id='AF139645.1', name='AF139645', description='Phrixothrix hirtus red-bioluminescence eliciting luciferase mRNA, complete cds.', dbxrefs=[])]

>>> print dados[1]
ID: L39928.1
Name: PIBLUCIF
Desription: Pyrocoelia miyako (clone pB-PmL41) luciferase mRNA, complete cds.
/comment=Original source text: Pyrocoelia miyako (clone pB-PmL41) whole body
cDNA to mRNA.
/source=Pyrocoelia miyako
/taxonomy=['Eukaryota', 'Metazoa', 'Arthropoda', 'Hexapoda', 'Insecta', 'Pterygota', 'Neoptera', 'Endopterygota', 'Coleoptera', 'Polyphaga', 'Elateriformia', 'Elateroidea', 'Lampyridae', 'Lampyrinae', 'Pyrocoelia']
/keywords=['luciferase']
/references=[<Bio.SeqFeature.Reference instance at 0xb7775eec>]
/data_file_division=INV
/date=05-DEC-1995
/organism=Pyrocoelia miyako
/gi=695386
Seq('CAAGAATGGAAGATGATAGTAAACATATTATGCATGGCCACCGCCATTCTATCCTTTGGG ...', IUPACAmbiguousDNA())

Acho que fica bem claro pelo exemplo o que está acontecendo. Cada item dessa lista corresponde a uma seqüência e suas anotações. Agora, você pode facilmente navegar pelos dados, veja:

>>> dir(dados[1])
['__doc__', '__init__', '__module__', '__repr__', '__str__', 'annotations', 'dbxrefs', 'description', 'features', 'id', 'name', 'seq']
>>> print dados[1].annotations
{'comment': 'Original source text: Pyrocoelia miyako (clone pB-PmL41) whole body\ncDNA to mRNA.', 'source': 'Pyrocoelia miyako', 'taxonomy': ['Eukaryota', 'Metazoa', 'Arthropoda', 'Hexapoda', 'Insecta', 'Pterygota', 'Neoptera', 'Endopterygota', 'Coleoptera', 'Polyphaga', 'Elateriformia', 'Elateroidea', 'Lampyridae', 'Lampyrinae', 'Pyrocoelia'], 'keywords': ['luciferase'], 'references': [<Bio.SeqFeature.Reference instance at 0xb771d44c>], 'data_file_division': 'INV', 'date': '05-DEC-1995', 'organism': 'Pyrocoelia miyako', 'gi': '695386'}
>>> print dados[1].annotations["taxonomy"]
['Eukaryota', 'Metazoa', 'Arthropoda', 'Hexapoda', 'Insecta', 'Pterygota', 'Neoptera', 'Endopterygota', 'Coleoptera', 'Polyphaga', 'Elateriformia', 'Elateroidea', 'Lampyridae', 'Lampyrinae', 'Pyrocoelia']
>>> print dados[1].annotations["organism"]
Pyrocoelia miyako
>>> print dados[1].description
Pyrocoelia miyako (clone pB-PmL41) luciferase mRNA, complete cds.
>>> print dados[1].id
L39928.1
>>> print dados[1].name
PIBLUCIF
>>> print dados[1].seq
Seq('CAAGAATGGAAGATGATAGTAAACATATTATGCATGGCCACCGCCATTCTATCCTTTGGG ...', IUPACAmbiguousDNA())

Sem grandes complicações! Se você tem conhecimentos prévios de python, fica intuitivo. É possível também pode obter seus dados na forma de um iterador, veja:

>>> arquivo = open("sequences_lucs.gb")
>>> dados_it = SeqIO.parse(arquivo, "genbank")
>>> arquivo.close()
>>> type(dados_it)
<type 'generator'> # já não é mais uma lista
>>> dir(dados_it)
['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'gi_frame', 'gi_running', 'next'] # e você não tem mais todas aquelas informações.

Só que agora, para ter acesso a seus dados você precisa ir iterando a variável dados_it, veja:

>>> dado1 = dados_it.next()
>>> dado1
SeqRecord(seq=Seq('CAACTCCGTAGTCCCTAAACGGTA....TTGTT', IUPACAmbiguousDNA()), id='L39929.1', name='HOTLUCI', description='Hotaria parvula (clone pB-Hp) luciferase mRNA, complete cds.', dbxrefs=[])
>>> dado1.annotations
{'comment': 'Original source text: Hotaria parvula cDNA to mRNA.', 'source': 'Hotaria parvula', 'taxonomy': ['Eukaryota', 'Metazoa', 'Arthropoda', 'Hexapoda', 'Insecta', 'Pterygota', 'Neoptera', 'Endopterygota', 'Coleoptera', 'Polyphaga', 'Elateriformia', 'Elateroidea', 'Lampyridae', 'Luciolinae', 'Hotaria'], 'keywords': ['luciferase'], 'references': [<Bio.SeqFeature.Reference instance at 0xb788588c>], 'data_file_division': 'INV', 'date': '05-DEC-1995', 'organism': 'Hotaria parvula', 'gi': '671717'}

Outra coisa que é também possível fazer é carregar seus dados em um dicionário. Esse método leva como argumento um iterador ou uma lista com as seqüências. Por padrão, a chave do dicionário é o "id" do dado.

>>> arquivo = open("sequences_lucs.gb", "rU")
>>> dados_dic = SeqIO.to_dict(SeqIO.parse(arquivo, "genbank")) #um iterador como argumento.

E para acessar um dado específico, use seu "id" para busca-lo.

>>> dados_dic["L39929.1"]
SeqRecord(seq=Seq('CAACTCCGTAGTCCCTAAACGGTAGAGGAA....ATTGTT', IUPACAmbiguousDNA()), id='L39929.1', name='HOTLUCI', description='Hotaria parvula (clone pB-Hp) luciferase mRNA, complete cds.', dbxrefs=[])

Bom, acredito que isso é o suficiente para dar o ponta pé inicial sobre como carregar dados em determinados formatos.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License