2. MetaPhlAn 安装与配置:从零搭好分析环境
安装 MetaPhlAn,说简单也简单,说折腾也折腾。我刚开始做宏基因组时,光装这个工具就卡了两天——不是 conda 环境冲突,就是 Python 版本不对。后来摸清楚了门道,才发现其实就几条路可走。
这一节我把两种主流安装方式(conda 和 PyPI)的细节、依赖管理的坑、环境变量该怎么配,全给你捋一遍。你照着做,基本不会出问题。
2.1 为啥安装这一步容易翻车?
MetaPhlAn 依赖的科学计算库很多:numpy、scipy、pandas、biopython,还有 Bowtie2、BLAST+ 这类比对工具。这些包对版本很敏感。我曾经在服务器上装了个 Python 3.11,结果 conda 里找不到兼容的 MetaPhlAn 预编译包,折腾半天才发现官方只支持到 3.10。
所以安装前的第一件事:确认 Python 版本。
| Python 版本 | MetaPhlAn 4 支持? | 我的建议 |
|---|---|---|
| 3.8 | ✅ 支持 | 可以用,但部分新功能可能不支持 |
| 3.9 | ✅ 支持 | 最稳定,我主力环境就是 3.9 |
| 3.10 | ✅ 支持 | 推荐,conda 默认拉的就是这个 |
| 3.11 | ⚠️ 部分兼容 | 别用,很多依赖还没适配 |
| 3.12 | ❌ 不兼容 | 装上去直接报错 |
2.2 conda 安装:最省心的路
如果你不想手动解决依赖冲突,conda 是首选。特别是用 Miniconda,轻量又好管理。我个人习惯给每个项目建独立环境,免得互相污染。
mamba 替代 conda 解决依赖,速度快 10 倍,而且在依赖求解上不容易卡死。
安装命令很简单:
conda create -n metaphlan_env python=3.10
conda activate metaphlan_env
# 用 mamba 装更快
mamba install -c conda-forge -c bioconda metaphlan
这里要提一个我踩过的坑——bioconda 和 conda-forge 的 channel 顺序。如果你先配了 conda-forge 再配 bioconda,有时候会拉错版本。正确的 channel 优先级应该是:
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
装完后验证一下:
metaphlan --version
# 正常应该输出类似:MetaPhlAn version 4.0.6 (6 Mar 2024)
如果版本号没出来,大概率是 PATH 没对,或者 conda 环境没激活。
2.3 PyPI 安装:灵活但容易出幺蛾子
如果你不想装 conda,或者 Docker 环境里不方便,可以用 pip 直接从 PyPI 安装。MetaPhlAn 在 PyPI 上叫 MetaPhlAn,注意大小写。
pip install MetaPhlAn
但——这里有个大坑。PyPI 上的包不会自动装 Bowtie2 这些系统级工具。你还需要手动装一下:
# Ubuntu/Debian
sudo apt install bowtie2 ncbi-blast+
# macOS (Homebrew)
brew install bowtie2 blast
我曾经在 Docker 里用 pip 装完 MetaPhlAn,一跑就报 bowtie2: command not found。查了半天才发现少了这一步。嗯,所以用 PyPI 的话,记得把这些依赖补上。
pip install MetaPhlAn==4.0.6
2.4 依赖管理:那些你容易忽略的库
MetaPhlAn 的依赖树有两层:
- Python 库:numpy、scipy、pandas、biopython、h5py、pysam、matplotlib(画图用)
- 系统工具:Bowtie2、BLAST+(nt 比对)、trnascan-se(tRNA 鉴定)
用 conda 装的话,这些都会自动解决。但用 PyPI 装,你得手动检查。我习惯装完后跑一下:
python -c "import numpy; import scipy; import pandas; import Bio; import pysam; print('All OK')"
如果报 ImportError,就 pip install 缺失的那个。
| 依赖 | 必需? | 说明 |
|---|---|---|
| numpy + scipy | 是 | 基础数学运算 |
| pandas | 是 | 读表、写表、数据操作 |
| biopython | 是 | 序列处理,GC 含量、翻译 |
| pysam | 是 | BAM/SAM 文件操作 |
| matplotlib | 画图时需要 | 生成物种丰度热图等 |
| Bowtie2 | 是 | 比对短读序列到 marker 数据库 |
| BLAST+ | 部分功能需要 | nt 库比对、taxonomy 扩展 |
2.5 环境变量配置:让 MetaPhlAn 找到数据库
MetaPhlAn 装完之后,还需要一个数据库。数据库默认会下载到 ~/.metaphlan4 下。你也可以自定义路径,通过环境变量 METAPHLAN_DATA_DIR 指定。
我在项目里踩过一个坑:服务器上家目录空间有限,数据库下载到一半就满了。所以建议一开始就配好:
export METAPHLAN_DATA_DIR=/data/databases/metaphlan4
metaphlan --install
然后把这个 export 写进 ~/.bashrc 或 ~/.bash_profile,否则每次登录都要重新配。
另外,如果你用了不同的 conda 环境,记得在激活环境后检查一下 PATH 里 metaplhan 的路径对不对:
which metaphlan
# 应该输出 conda 环境下的路径,比如 ~/miniconda3/envs/metaphlan_env/bin/metaphlan
如果路径没更新,手动加一下:
export PATH=$HOME/miniconda3/envs/metaphlan_env/bin:$PATH
2.6 一张图看懂安装流程
下面这张 SVG 把咱们刚才讲的核心过程串起来了——从环境准备到最终验证,箭头标明了依赖方向。
2.7 避坑总结
- 在 root 环境里直接
pip install MetaPhlAn,后头运行其他项目时版本冲突,整个 Python 炸了。一定要用虚拟环境! - conda 安装时没加
--channel顺序,结果装了个旧版。我后来习惯先配好 channel 再装,再也没出过问题。 - 数据库路径设到家目录下,磁盘不够导致下载失败。现在一律放
/data或项目目录下。
mamba create -n metaphlan_env python=3.10 metaphlan -c conda-forge -c bioconda,一行搞定,然后 metaphlan --install 下载数据库。10 分钟搭好环境。
到这步,你的 MetaPhlAn 应该已经可以跑了。下一件事……不对,我们先把安装讲完。最后检查一下:运行 metaphlan -h 能看到帮助信息,就说明万事俱备了。