MetaPhlAn 数据库下载与更新

数据库是 MetaPhlAn 的灵魂。你想想看,没有参考基因集,拿什么去比对?版本选择对不对,直接影响物种分类的准确度。我刚开始用 MetaPhlAn 时,随手装了个旧版数据库,结果分析结果和同事对不上,查了半天才发现是版本不一致。嗯,这节课咱们就把数据库这块彻底理清楚。

核心原则:同一项目的所有样本必须使用同一版本数据库,否则结果不可比。

3.1 数据库版本选择

MetaPhlAn 的数据库命名规则长这样:mpa_vXXX_CHOCOPhlAn_YYY。其中 XXX 是 MetaPhlAn 主版本号,YYY 是 CHOCOPhlAn 标记物版本号。比如 mpa_v31_CHOCOPhlAn_201901 就是 MetaPhlAn 3.1 对应的数据库,标记物更新到 2019 年 1 月。

我个人习惯是:新项目优先用 MetaPhlAn 官方推荐的最新版。但有个前提 — 先确认你安装的 MetaPhlAn 版本和数据库版本兼容。MetaPhlAn 4 的数据库不能用于 MetaPhlAn 3,反过来也不行。怎么查?运行 metaphlan --version 看版本号,再去官网 (这里不贴链接,你自己搜一下) 看对应关系。

数据库版本MetaPhlAn 版本标记物数量备注
mpa_v202.0–2.9~1 万较旧,不推荐新项目用
mpa_v303.0–3.8~1.7 万稳定版,我常用的版本
mpa_v313.0–3.8~2.4 万覆盖更全,建议优先用这个
mpa_vJun23_CHOCOPhlAnSGB_2023074.0+~3.2 万最新版,支持种级基因组(SGB)

避坑提醒:我曾经用错版本号,明明下载了 v31 却设置成 v30,运行时报错找不到索引文件。后来养成了习惯 — 下载完先看一眼文件名,确认版本号一致再配置路径。

3.2 自动下载

MetaPhlAn 提供了傻瓜式命令,一行搞定:

metaphlan --install

它会自动下载最新版数据库,放到默认路径 ~/.metaphlan/ 下。如果你想指定版本,加个参数:

metaphlan --install --index mpa_v31_CHOCOPhlAn_201901

自动下载很方便,但有个坑 — 网络连接。数据库文件通常 3–5 GB,下载容易超时。我有一回在服务器上跑 --install,等了一个小时卡在 80%,最后超时报错。怎么办?两个办法:

  • 重试一次,有时候是临时网络抖动
  • 换成手动下载(下面讲)

小技巧:如果自动下载失败频繁,可以先手动下载压缩包,再通过 --install --index your_local_file 指定本地文件。不过这个功能在旧版本中可能不支持,建议更新到 MetaPhlAn 4。

3.3 手动下载

手动下载虽然步骤多一点,但可控性强。你直接去官网或镜像站获取数据库压缩包,然后解压到目标目录。

我一般用 wget:

wget https://github.com/biobakery/MetaPhlAn/raw/master/metaphlan/data/mpa_v31_CHOCOPhlAn_201901.tar.bz2

注意:上面的 URL 是示例,实际地址随版本变化。下载后:

tar -xjf mpa_v31_CHOCOPhlAn_201901.tar.bz2 -C ~/.metaphlan/

解压后的目录结构大概是这样:

~/.metaphlan/
├── mpa_v31_CHOCOPhlAn_201901.py
├── mpa_v31_CHOCOPhlAn_201901.fasta
├── mpa_v31_CHOCOPhlAn_201901.bt2
└── ... (索引文件)

我曾经踩过什么坑?有一次我手动下载了数据库,解压后忘了把文件名中的版本号改成和配置文件一致,结果程序还是找不到。后来我干脆把数据库目录名和文件名保持严格一致,再也不出这种低级错误。

3.4 自定义数据库路径

默认路径是 ~/.metaphlan/,但实际工作中我们经常要把数据库放在共享存储上,或者同时管理多个版本。这时就要自定义路径。两种方式:

  1. 环境变量:设置 MPA_DIR
  2. 命令行参数:指定 --bowtie2db

先说环境变量。在 ~/.bashrc 或 ~/.bash_profile 里加一行:

export MPA_DIR=/data/databases/metaphlan

然后 source ~/.bashrc 生效。之后所有 MetaPhlAn 命令会自动去这个目录找数据库。

再说命令行参数。如果你只是临时用一下别的版本,可以这样:

metaphlan sample.fastq --bowtie2db /data/databases/metaphlan_v31 --input_type fastq > profile.txt

优先级规则:命令行参数 > 环境变量 > 默认路径。我在项目中常用的是环境变量 + 软链接管理多个版本,比如:

mkdir -p /data/databases/metaphlan
cd /data/databases/metaphlan
ln -s ../mpa_v31 mpa_current
export MPA_DIR=/data/databases/metaphlan/mpa_current

这样切换版本只需要改一下软链接,不用改环境变量。非常实用。

注意磁盘空间:每个数据库约 3–10 GB,解压后可能更大。我以前在 /home 分区下载,结果撑爆了磁盘,导致作业全部失败。建议把数据库放在 /data 或 /work 这类大分区,并用 df -h 提前检查。

MetaPhlAn 数据库下载与更新流程 1. 选择数据库版本 2a. 自动下载 (--install) 2b. 手动下载 (wget + tar) 3. 配置数据库路径 (MPA_DIR / --bowtie2db) 4. 验证 → 运行 metaphlan 💡 建议使用软链接管理多版本,切换时只需改链接,不必重复设置环境变量

快速检查数据库是否可用:运行 metaphlan --help,看输出中是否出现你设定的数据库路径。或者直接跑一个小样本,看能不能正常出 profile。

好了,数据库下载与更新这部分就这些。核心记住三点:版本要对、路径要准、磁盘要够。我每次搭建新环境都会先跑一遍下载流程,确保整个链路通顺再放样本。不然跑了一半报找不到索引,那才叫崩溃。你按这个流程走,基本不会踩什么坑。