2016-11-15 20 views
2

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

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 

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

Спасибо!

+1

Вы случайно запустили его с python3 в первый раз, но python2 на этот раз? –

+1

Извините, я не могу реплицировать вашу проблему, используя код, который вы предоставили, используя BioPython 1.68 на Windows 10 с Python 3.5.2 или 2.7.12. Используете ли вы разные версии Biopython с 3 и 2? Вы недавно попробовали посмотреть, работает ли он сейчас? – MattDMo

+0

Я использовал Python 2.7.6 в оба раза. Я запустил его несколько раз с тех пор и не работал ... – reut

ответ

1

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

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

Я пошел в GitHub 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 сделал некоторые изменения форматирования в последнее время, поэтому это может быть связано с этим. Любое разъяснение было бы оценено, поскольку я знаю, что это больше работает с скриптом-кидди, чем с решением.

+0

Спасибо, это сработало! – reut

0

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