1. MetaPhlAn 简介与安装:从零认识这个工具

我第一次接触 MetaPhlAn 是在 2015 年,当时一个肠道菌群项目需要从宏基因组里快速识别物种组成。用 BLAST 对每个 reads 去比对,跑了三天还没结束。后来师兄甩给我一行命令:metaphlan2.py input.fastq --bowtie2db ~/db_v20 --output profile.txt。十五分钟出结果,我当时就惊了。

MetaPhlAn 到底是什么?说白了,它是一款基于标记基因(marker gene)的宏基因组物种 profiling 工具。它不比对整个基因组,而是挑出每个物种特有的、单拷贝的、保守的基因片段作为“指纹”。然后拿你的测序 reads 去匹配这些指纹。

1.1 发展历史:从 v1 到 v4 的进化

这个工具最早是 Curtis Huttenhower 团队在 2012 年发布的。我简单梳理一下主要版本变迁:

版本 发布时间 核心变化
v1.0 2012 基于 4 个 marker 基因,只能识别约 400 种细菌
v2.0 2015 扩充到约 5000 个 marker 基因,覆盖细菌、古菌、真菌
v3.0 2019 引入 Bowtie2 比对速度优化,支持 profiling 病毒
v4.0 2023 数据库升级到 SGB(物种级基因桶),物种数突破 2 万
💡 我的一点经验:如果你做的是肠道菌群常规分析,v3 的数据库已经足够。但如果涉及新环境样本(土壤、海洋),建议直接上 v4,物种覆盖更全。

1.2 主要应用场景

在我接触过的项目中,MetaPhlAn 最常用在以下几个地方:

  • 疾病队列研究:比如 IBD、糖尿病、结直肠癌患者 vs 健康人的菌群差异分析
  • 环境微生物群落:土壤、水体、污水处理厂等样本的物种组成评估
  • 宿主-微生物互作:分析同一宿主不同部位的微生物定殖情况
  • 时序追踪:纵向采样看菌群演替规律(我做过一个抗生素干预的时间序列项目)
⚠️ 注意:MetaPhlAn 只做物种层面的 profiling,不做功能注释。你需要功能数据的话,后面可以用 HUMAnN 接上。

1.3 Conda 安装与版本选择

安装 MetaPhlAn 最简单的方式就是 Conda。我个人习惯新建一个独立环境,避免依赖冲突。

conda create -n metaphlan_env python=3.9
conda activate metaphlan_env
conda install -c bioconda metaphlan

这样装的是最新稳定版(目前是 v4.1.1)。如果你需要特定版本,可以在包名后加版本号:

conda install -c bioconda metaphlan=4.0.6

版本选择原则:

  • 新项目、新数据 → 直接上 v4
  • 需要兼容旧项目结果 → 选 v3.0 或 v2.0
  • 内存受限(比如云服务器只有 8GB) → v3 的数据库更小,适合入门

我曾经踩过一个坑:在 CentOS 7 上用 conda 安装后,运行报错说 glibc 版本太低。解决办法很简单——升级 Conda 或者改用 Docker 镜像。

# 如果还是报错,试试 docker
docker pull biobakery/metaphlan:4.1.1
docker run -it --rm -v $(pwd):/data biobakery/metaphlan:4.1.1 metaphlan /data/input.fastq --input_type fastq -o /data/profile.txt

1.4 MetaPhlAn 工作流概览

安装完之后,我们来看看它到底怎么工作的。下面这张图是我自己总结的核心流程:

MetaPhlAn v4 核心工作流 输入 FASTQ / FASTA Bowtie2 比对 vs 标记基因库 匹配到每个物种的 unique marker 基因 归一化 & 相对丰度计算 物种丰度表 (profile.txt) 数据库位置: ~/metaphlan_databases/ 默认数据库: mpa_vJun23_CHOCOPhlAnSGB

为什么这个流程能跑这么快?因为标记基因库比全基因组数据库小了两个数量级。你想想看,人类肠道菌群已知的物种大概一两千个,每个物种只保留几十个基因片段,总数据量才几百 MB。比对时 Bowtie2 只需要加载这些 marker 序列,内存占用极低。

1.5 数据库下载与管理

安装完 MetaPhlAn 之后,别忘了下载数据库。别问我怎么知道的——我第一次装完直接跑,报错说找不到数据库,查文档才知道还要手动下载。

# 下载默认数据库(v30,约 2.5GB)
metaphlan --install

# 如果你要指定数据库版本,可以用 --bowtie2db 参数指定路径
metaphlan input.fastq --bowtie2db /path/to/mpa_vJun23_CHOCOPhlAnSGB --input_type fastq -o profile.txt

数据库文件位置:Windows 下默认在 C:\Users\用户名\.metaphlan_databases,Linux/macOS 在 ~/.metaphlan_databases。

1.6 检查安装是否成功

跑一个最小测试,验证一切正常:

# 查看版本
metaphlan --version

# 用内置测试数据跑一遍
metaphlan --test

# 如果看到类似下面的输出,说明安装成功
# Sample: test.fastq
# Clade            Relative abundance (%)
# Bacteroides      45.23
# Faecalibacterium 12.56
# ...

嗯,到这里你就把 MetaPhlAn 装好并且跑通了。记住这个基础流程,后面所有参数调优都是在这个框架上的改进。

🔧 小技巧:每次跑新项目之前,先用 metaphlan --install 更新一下数据库,因为 MetaPhlAn 团队会不时发布新的 marker 集合。