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


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

谢谢!

最佳答案

最近,当我尝试在蛋白质数据库上使用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()


然后,我运行了整个程序,并得到了以前得到的结果。请注意,您不再需要导入语句。实际上,如果您有它们,它将无法正常工作。您现在正在脚本中定义函数。

我不确定为什么现在是一个问题,但是NCBI最近确实做了一些格式更改,因此可能与此有关。任何澄清将不胜感激,因为我知道这更多是围绕脚本的工作而不是解决方案。

关于python - 使用biopython的NCBIWWW时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40611577/

10-12 18:24