Passando suas seqüências de arquivos Genbank para arquivos Fasta

Vou dar um exemplo aqui de como o Biopython pode ser útil para transportar dados de um formato de arquivo para outro.

Vou usá-lo de forma meio burra, para deixar bem claro como funciona. Porém, obviamente, quando estiver trabalhando com um grande número de seqüências, você deve fazer pequenas otimizações…. e, para essas, deixo que você utilize sua criatividade.

Estou partindo do seguinte: Tenho três arquivos (tmllg1.gb, tmllg2.gb, tmllg3.gb), cada um, uma seqüência de cDNA e informações sobre elas disponíveis no GenBank, armazenadas no formato "genbank". Para fazer uma análise comparativa dessas seqüências, na maioria dos programas, você precisa tê-las todas em um único arquivo. Geralmente, os programas aceitam o formato fasta, então, vou passar todas as seqüências de DNA e seus rótulos para um arquivo e suas respectivas traduções em aminoácidos e rótulos para outro.

Veja o código comentado abaixo.

##Importa o módulo de I/O (input/output) de seqüências
>>> from Bio import SeqIO
## Carrega os arquivos no formato "genbank"  
>>> tmllg1 = list(SeqIO.parse(open("tmllg1.gb"), "genbank"))
>>> tmllg2 = list(SeqIO.parse(open("tmllg2.gb"), "genbank"))
>>> tmllg3 = list(SeqIO.parse(open("tmllg3.gb"), "genbank"))
>>> tmllg1
[SeqRecord(seq=Seq('GTAGCAAA.....', IUPACAmbiguousDNA( )), id='AB098615.1',  name='AB098615', description='Tenebrio molitor tm-llg1 mRNA  for hypothetical protein, complete cds.', dbxrefs=[])]
## criando um arquivo no qual as seqüências de DNA serão salvas
>>> seqs_dna = open("tenebrio_dna.fas", "w")
## Checando a estrutura dos nossos objetos com os dados dos arquivos .gb
>>> print tmllg1[0]
ID: AB098615.1
Name: AB098615
Desription: Tenebrio molitor tm-llg1 mRNA for hypothetical protein, complete cds.
/source=Tenebrio molitor (yellow mealworm)
/taxonomy=['Eukaryota', 'Metazoa', 'Arthropoda', 'Hexapoda', 'Insecta', 'Pterygota', 'Neoptera', 'Endopterygota', 'Coleoptera', 'Polyphaga', 'Cucujiformia', 'Tenebrionidae', 'Tenebrio']
/keywords=['']
/references=[<Bio.SeqFeature.Reference instance at 0xb7d35f8c>, <Bio.SeqFeature.Reference instance at 0xb7d35d6c>]
/data_file_division=INV
/date=09-JUN-2006
/organism=Tenebrio molitor
/gi=108755449
Seq('GTAGCAAAGAAGTAACATGGGTGAAGACAACTCATTTATCATTGCGGGACCACCACCACT ...', IUPACAmbiguousDNA())
>>> tmllg1[0].description
'Tenebrio molitor tm-llg1 mRNA for hypothetical protein, complete cds.'
>>> tmllg1[0].seq.data
'GTAGCAAAGAAGTAA...AACACAGAACAGGTGCAATGTTGG'
## Achamos o que queríamos, a seqüência propriamente dita e um rótulo para ela.
## Agora salvamos os dados no arquivo "tenebrio_dna.fas" conforme o formato fasta
>>> seqs_dna.write(">"+tmllg1[0].description + "\n" + tmllg1[0].seq.data + "\n")
>>> seqs_dna.write(">"+tmllg2[0].description + "\n" + tmllg2[0].seq.data + "\n")
>>> seqs_dna.write(">"+tmllg3[0].description + "\n" + tmllg3[0].seq.data + "\n")
## Fechando o arquivo
>>> seqs_dna.close()
## Checando as demais informações e suas estruturas nos nosso objetos com as informações
>>> print tmllg1[0].features[0]
type: source
location: [0:1719]
ref: None:None
strand: 1
qualifiers:
        Key: db_xref, Value: ['taxon:7067']
        Key: mol_type, Value: ['mRNA']
        Key: organism, Value: ['Tenebrio molitor']
 
>>> print tmllg1[0].features[1]
type: gene
location: [0:1719]
ref: None:None
strand: 1
qualifiers:
        Key: gene, Value: ['tm-llg1']
 
>>> print tmllg1[0].features[2]
type: CDS
location: [16:1651]
ref: None:None
strand: 1
qualifiers:
        Key: codon_start, Value: ['1']
        Key: db_xref, Value: ['GI:108755450']
        Key: gene, Value: ['tm-llg1']
        Key: product, Value: ['hypothetical protein']
        Key: protein_id, Value: ['BAE95689.1']
        Key: translation, Value: ['MGEDNSFIIAGPPPL....VIFTTAIPKNPSGKILRRELRQLLRKNKSKL']
 
>>> print tmllg1[0].features[2].qualifiers
{'product': ['hypothetical protein'], 'codon_start': ['1'], 'db_xref': ['GI:108755450'], 'translation': ['MGEDNSFIIAGPPPLQPIPDTSLGKLIYEKLLESLDKSDALVDAVTGQSLSYKEILAATCSLANSLIKSGYGRNTIVTICSENCKQFFIPVIAALYIGAVIAPINHNYTKTEMIHCLNISKPTVVFCSRQVCGKFIDLKKKLEFIDRIITIDGDSRVGEVESLDSLIKNCLRGSTSSYECPMAEVPIGEQVAFIMCSSGTTGLPKGVMITHLNVIAKFMQNNDPRYQNQQGGRCTFGVLPFYHSYGMFVSLNSIYRKIKIVVVKRFEENVFLSTIEKYRITSLSLVPPLAVFLAKSPLVKDYDLSSVTEVSCGAAPLSKNIEEILKNKLKIKSVRQAYGLTETTIGVVGMPLGCEKFGSSGKVLPYMLCKIRNPDTGESLGPNQIGELCFKGPVIMKGYYDNEQATRESFTPDGWLLTGDLAYYDNEEYFYVVDRLKELIKYKGFQVAPAELEALLLTNPKIRDAAVVGVPDENAGELPLAFVVTDSGAVLTEVEVKQFIEGRVSSPKRLRGGVIFTTAIPKNPSGKILRRELRQLLRKNKSKL'], 'gene': ['tm-llg1'], 'protein_id': ['BAE95689.1']}
>>> print tmllg1[0].features[2].qualifiers["translation"]
['MGEDNSFIIAGPPPLQPIPDTS....RRELRQLLRKNKSKL']
 
>>> print tmllg1[0].features[2].qualifiers["translation"][0]
MGEDNSFIIAGP....TTAIPKNPSGKILRRELRQLLRKNKSKL
>>> print type(tmllg1[0].features[2].qualifiers["translation"][0])
<type 'str'>
## Achamos o que queríamos: o caminho para a seqüência traduzida.
## Agora vamos escrever, no arquivo "tenebrio_prot.fas", nossas seqüências traduzidas.
>>> tenebrio_prot = open("tenebrio_prot.fas", "w")
>>> tenebrio_prot.write(">"+tmllg1[0].description + "\n" + tmllg1[0].features[2].qualifiers["translation"][0] + "\n")
>>> tenebrio_prot.write(">"+tmllg2[0].description + "\n" + tmllg2[0].features[2].qualifiers["translation"][0] + "\n")
>>> tenebrio_prot.write(">"+tmllg3[0].description + "\n" + tmllg3[0].features[2].qualifiers["translation"][0] + "\n")
>>> tenebrio_prot.close()

Feito! Confira os arquivos!

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