Ошибка при использовании NCBIWWW из биопитона

Я пытаюсь взорвать последовательность нуклеотидов, используя NCBIWWW

from Bio.Blast import NCBIWWW
my_query = "TGCGTGCCGTGCAATGTGCGT"
result_handle = NCBIWWW.qblast("blastn", "nt", my_query)
blast_result = open("my_blast.xml", "w") 
blast_result.write(result_handle.read())
blast_result.close()
result_handle.close()

Это работало хорошо в первый раз, но когда я попытался запустить его через несколько дней, я получил сообщение об ошибке:

>     result_handle = NCBIWWW.qblast("blastn", "nt", my_query)   File "/usr/local/lib/python2.7/dist-packages/biopython-1.63-py2.7-linux-x86_64.egg/Bio/Blast/NCBIWWW.py", line 123, in qblast
>     handle = _urlopen(request)   File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
>     return _opener.open(url, data, timeout)   File "/usr/lib/python2.7/urllib2.py", line 410, in open
>     response = meth(req, response)   File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
>     'http', request, response, code, msg, hdrs)   File "/usr/lib/python2.7/urllib2.py", line 448, in error
>     return self._call_chain(*args)   File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
>     result = func(*args)   File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
>     raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden

Я ничего не менял в коде, поэтому не понимаю, что произошло. В чем может быть проблема?

Спасибо!


person reut    schedule 15.11.2016    source источник
comment
Вы случайно не запускали его с python3 в первый раз, но на этот раз с python2?   -  person Eli Sadoff    schedule 15.11.2016
comment
К сожалению, я не могу воспроизвести вашу проблему с помощью предоставленного вами кода с использованием BioPython 1.68 в Windows 10 с Python 3.5.2 или 2.7.12. Используете ли вы разные версии Biopython с 3 и 2? Вы пробовали снова недавно, чтобы увидеть, работает ли он сейчас?   -  person MattDMo    schedule 16.11.2016
comment
Оба раза я использовал Python 2.7.6. С тех пор я запускаю его несколько раз и все еще не работаю...   -  person reut    schedule 17.11.2016


Ответы (2)


Недавно я получил точно такое же сообщение об ошибке, когда пытался использовать qblast в базе данных белков.

Исправление:

Я пошел на гитхаб Biopython и получил исходный код модуля qblast.

https://github.com/biopython/biopython/blob/master/Bio/Blast/NCBIWWW.py

Я открыл его в текстовом редакторе и добавил в конец простой скрипт

fasta_string = open("test500.fasta").read()

result_handle = qblast(
"blastp",
"swissprot",
fasta_string,
)
save_file = open("out.xml", "w")

save_file.write(result_handle.read())

save_file.close()

result_handle.close()

Затем я запустил всю программу и получил результаты, которые получил ранее. Обратите внимание, что вам больше не нужны операторы импорта. На самом деле, это не сработает, если они у вас есть. Теперь вы определяете функцию в своем скрипте.

Я не уверен, почему это проблема сейчас, но NCBI недавно внес некоторые изменения в форматирование, так что это может быть связано с этим. Буду признателен за любые разъяснения, поскольку я знаю, что это скорее работа над сценарием, чем решение.

person Wiley Quixotey    schedule 18.11.2016

У меня была такая же ошибка при использовании blastn. Похоже, что NCBI перешел с http на https (https://www.ncbi.nlm.nih.gov/home/develop/https-guidance.shtml). Если вы перейдете по ссылке, вы увидите, что вам нужен Biopython версии 1.67 или выше, чтобы использовать NCBIWWW прямо сейчас. Я только что обновился до biopython 1.68, и это решило мою проблему, надеюсь, это поможет и вам.

person user3732664    schedule 11.12.2016