Скачать только часть файла 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, а только словарь с идентификатором в качестве ключа и таксономией и органеллой в качестве значений?