Как автоматически сохранить полный текст PMC на диск через BioPython?

Есть ли способ загрузить и сохранить XML-файлы, которые модуль Entrez возвращает на локальный диск? Что я сейчас делаю:

fetch = Entrez.efetch(db='pmc',
                     resetmode='xml',
                     id=ids,
                     rettype='full')
article =  fetch.read()

Затем сохраните article, который является объектом str, в виде файла xml с помощью функции записи Python.

Предоставляет ли BioPython способ автоматической загрузки файлов на диск?


person HMK    schedule 11.04.2017    source источник
comment
Почему бы вам просто не запросить efetch напрямую? например eutils.ncbi.nlm .nih.gov / entrez / eutils /   -  person Chris_Rands    schedule 11.04.2017
comment
Я хочу загрузить большое количество документов PMC, и в NCBI есть некоторые правила обработки массовых запросов API, которые у меня нет времени реализовать. BioPython уже реализовал их, поэтому я хотел узнать, есть ли у BioPython функция загрузки.   -  person HMK    schedule 11.04.2017
comment
Я думаю, что resetmode должен быть retmode.   -  person Nicholas Morley    schedule 29.03.2018


Ответы (1)


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

fetch = Entrez.efetch(db='pmc',
                 resetmode='xml',
                 id=ids,
                 rettype='full')

with open('fileNameToSave.xml', 'w') as f:
    f.write(fetch.read())

Альтернативный подход, как указывает Chris_Rands в своем комментарии, состоит в том, чтобы получить файл напрямую через URL-адрес:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=protein&id=15718680
person nbryans    schedule 11.04.2017
comment
Спасибо, это именно то, что я сделал. Мне понадобился объект str в более позднем анализе, поэтому я сначала сохранил его в строке. - person HMK; 11.04.2017