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_v20 | 2.0–2.9 | ~1 万 | 较旧,不推荐新项目用 |
| mpa_v30 | 3.0–3.8 | ~1.7 万 | 稳定版,我常用的版本 |
| mpa_v31 | 3.0–3.8 | ~2.4 万 | 覆盖更全,建议优先用这个 |
| mpa_vJun23_CHOCOPhlAnSGB_202307 | 4.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/,但实际工作中我们经常要把数据库放在共享存储上,或者同时管理多个版本。这时就要自定义路径。两种方式:
- 环境变量:设置
MPA_DIR - 命令行参数:指定
--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 --help,看输出中是否出现你设定的数据库路径。或者直接跑一个小样本,看能不能正常出 profile。
好了,数据库下载与更新这部分就这些。核心记住三点:版本要对、路径要准、磁盘要够。我每次搭建新环境都会先跑一遍下载流程,确保整个链路通顺再放样本。不然跑了一半报找不到索引,那才叫崩溃。你按这个流程走,基本不会踩什么坑。