从biopython使用NCBIWWW时出错

时间:2016-11-15 13:52:53

标签: python biopython blast ncbi

我正在尝试使用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

我没有改变代码中的任何内容,所以我不明白发生了什么。 可能是什么问题?

谢谢!

2 个答案:

答案 0 :(得分:1)

当我尝试在蛋白质数据库上使用qblast时,我得到了完全相同的错误消息。

修复:

我去了Biopython github并获得了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()

然后我运行了整个程序,并得到了我之前得到的结果。请注意,您不再需要import语句。事实上,如果你拥有它们将不起作用。您现在正在脚本中定义该功能。

我不确定为什么现在这是一个问题,但NCBI最近确实做了一些格式更改,所以它可能与此有关。任何澄清都会受到赞赏,因为我知道这更多是脚本小子的工作而非解决方案。

答案 1 :(得分:0)

我使用blastn出现了同样的错误。 看起来NCBI已从http转移到https(https://www.ncbi.nlm.nih.gov/home/develop/https-guidance.shtml)。如果您点击链接,您将看到需要Biopython版本1.67或更高版本才能立即使用NCBIWWW。我刚刚升级到了biopython 1.68,这解决了我的问题,希望对你有所帮助。