我正在尝试使用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
我没有改变代码中的任何内容,所以我不明白发生了什么。 可能是什么问题?
谢谢!
答案 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,这解决了我的问题,希望对你有所帮助。