鸟枪法宏基因组分析工具mOTUs安装报错Errno 111与解决方法

文章讲述了使用mOTUsprofiler进行生信分析时遇到的ConnectionRefused错误,通过替换下载数据库的URL为本地文件路径解决了这个问题。同时提到了qiime2插件安装时类似问题的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mOTUs profiler 是一个生信分析工具,使用宏基因组鸟枪法测序数据估计已知和当前未知微生物群落成员的相对分类丰度。(Github https://github.com/motu-tool/mOTUs

按照Github提供的安装流程使用conda进行安装:

# Install in the base environment
conda install motus

# OR, create a new environment
conda create -n motu-env motus
conda activate motu-env

或使用pip进行安装:

# Download and install mOTUs
pip install motu-profiler

在安装完成后需要构建数据库,官方步骤为:

# Download the mOTUs database
motus downloadDB

但运行时会出现URL连接报错Errorno 111 connection refused错误:

$ motus downloadDB
 ------------------------------------------------------------------------------
|                              SETUP MOTUS TOOL                                |
 ------------------------------------------------------------------------------
Download the compressed motus database (~3.5Gb)
Traceback (most recent call last):
  File "/path/to/lib/python3.8/urllib/request.py", line 1354, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "/path/to/lib/python3.8/http/client.py", line 1256, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/path/to/lib/python3.8/http/client.py", line 1302, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/path/to/lib/python3.8/http/client.py", line 1251, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/path/to/lib/python3.8/http/client.py", line 1011, in _send_output
    self.send(msg)
  File "/path/to/lib/python3.8/http/client.py", line 951, in send
    self.connect()
  File "/path/to/lib/python3.8/http/client.py", line 1418, in connect
    super().connect()
  File "/path/to/lib/python3.8/http/client.py", line 922, in connect
    self.sock = self._create_connection(
  File "/path/to/lib/python3.8/socket.py", line 808, in create_connection
    raise err
  File "/path/to/lib/python3.8/socket.py", line 796, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/path/to/bin/motus", line 7, in <module>
    from motus.motus import main
  File "/path/to/lib/python3.8/site-packages/motus/motus.py", line 77, in <module>
    motus.downloadDB.main()
  File "/path/to/lib/python3.8/site-packages/motus/downloadDB.py", line 83, in main
    save_f(link_db, db_name)
  File "/path/to/lib/python3.8/site-packages/motus/downloadDB.py", line 45, in save_f
    urllib.request.urlretrieve(url, filename, reporthook)
  File "/path/to/lib/python3.8/urllib/request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "/path/to/lib/python3.8/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/path/to/lib/python3.8/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/path/to/lib/python3.8/urllib/request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/path/to/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/path/to/lib/python3.8/urllib/request.py", line 1397, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "/path/to/lib/python3.8/urllib/request.py", line 1357, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 111] Connection refused>

解决方法:

找到 downloadDB.py 代码,发现其中有这么几行:

motus_version = "3.1.0"
link_db = "https://zenodo.org/record/7778108/files/db_mOTU_v3.1.0.tar.gz"
md5_db = "f841c36150025af837f7a9a358c9a3c3"
DOI_db = "10.5281/zenodo.7778108"

其中link_db的这一链接可以直接访问并下载

也可以通过官网找到Database所在链接 https://zenodo.org/records/7778108

只要预先将db_mOTU_v3.1.0.tar.gz文件下载到本地,并修改link_db的路径到本地文件,就能够避免connection refused报错了。

如将db_mOTU_v3.1.0.tar.gz存储到 /path/to/db_mOTU_v3.1.0.tar.gz

修改downloadDB.py 代码中link_db的值:

motus_version = "3.1.0"
# link_db = "https://zenodo.org/record/7778108/files/db_mOTU_v3.1.0.tar.gz"
link_db = "file:///path/to/db_mOTU_v3.1.0.tar.gz"
md5_db = "f841c36150025af837f7a9a358c9a3c3"
DOI_db = "10.5281/zenodo.7778108"

再次运行motus downloadDB:

$ motus downloadDB
 ------------------------------------------------------------------------------
|                              SETUP MOTUS TOOL                                |
 ------------------------------------------------------------------------------
Download the compressed motus database (~3.5Gb)
 100%, 2968 MB, 275349 KB/s, 11 seconds passed

Check md5: MD5 verified
Extract files from the archive...done
Remove zipped file...done
Add version file...done

发现已经成功了

qiime2的motus插件安装时也有同样的问题,可以尝试同样方法解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值