Скачать только часть файла genbank с биопионом

Я новичок в Biopython и у меня проблемы с производительностью при разборе файлов genbank.

Я должен разобрать много файлов ГБ, из которых у меня есть номера доступа. После разбора я хочу только изучить таксономию и органеллу файла. Прямо сейчас у меня есть этот код:

from Bio import SeqIO
from Bio import Entrez
gb_acc1 = Entrez.efetch(db='nucleotide', id=access1, rettype='gb', retmode='text')   #Where access1 contents the accession number
rec = SeqIO.read(gb_acc1, 'genbank')
cache[access1] = rec   #where cache is just a dictionary where saving the gb files already downloaded
feat = cache[access1].features[0]   
if 'organelle' in feat.qualifiers.keys(): #And the code goes on

Для поиска таксономии у меня есть:

gi_h = Entrez.efetch(db='nucleotide', id=access, rettype='gb', retmode='text')
    gi_rec = SeqIO.read(gi_h, 'genbank')
    cache[access]=gi_rec
    if cache[access].annotations['taxonomy'][1] == 'Fungi':
                                fungi += 1 #And the code goes on

Это (весь сценарий) работает отлично. Моя проблема в том, что я загружаю весь файл gb (который иногда бывает огромным), чтобы посмотреть на эти 2 функции: органеллу и таксономию. Если бы я мог только загрузить эту часть файла gb, мой сценарий был бы намного быстрее, но я не понял, возможно ли это.

Кто-нибудь знает, можно ли это сделать, и если да, то как? Заранее большое спасибо

1 ответ

Вы можете использовать seq_start и seq_stop, чтобы обрезать вашу последовательность, а затем проанализировать ее, как раньше, например

gb_acc1 = Entrez.efetch(db='nuccore', id=access1, rettype='gb', retmode='xml', seq_start=1, seq_stop=1)

Возможно, вам даже не нужно хранить весь файл GenBank, а только словарь с идентификатором в качестве ключа и таксономией и органеллой в качестве значений?

Другие вопросы по тегам