QIIME2 微生物组分析¶
彭文强 | 2026届 | 生信分析工程师求职
1. 一句话说明¶
QIIME2 是 16S/18S/ITS 扩增子测序数据分析的"官方标准流水线"——你用 Kraken2 做的是鸟枪法宏基因组(所有 DNA 一起测),而 QIIME2 处理的是只测了细菌"身份证基因"(16S rRNA)的数据,从原始 fastq 到物种组成、多样性分析、差异检验一站式搞定。
2. 为什么要学¶
2.1 你已有的技能(鸟枪法宏基因组)¶
你的 T2D 项目用 Kraken2 + Bracken 做物种分类,走的是鸟枪法(shotgun metagenomics)路线: - 把所有微生物的所有 DNA 打碎测序 - 靠 k-mer 比对到参考数据库来定物种 - 优点:能看功能基因、不限于细菌 - 缺点:贵、数据量大、需要较高的测序深度
2.2 16S 扩增子是另一条主流路线¶
| 对比维度 | 鸟枪法(你做过的) | 16S 扩增子(QIIME2 擅长的) |
|---|---|---|
| 测什么 | 所有微生物的所有 DNA | 只测 16S rRNA 这一个基因 |
| 成本 | 高(每样本几百~上千元) | 低(每样本几十~一百元) |
| 物种分辨率 | 菌株级别(strain) | 属~种级别(genus/species) |
| 能否做功能分析 | 能,直接注释基因 | 不能直接做,需要 PICRUSt2 预测 |
| 主流工具 | Kraken2, MetaPhlAn, HUMAnN | QIIME2, mothur |
| 适用场景 | 需要功能信息、预算充足 | 大批量样本、快速看菌群结构 |
| 文献占比 | 肠道微生物研究约 40% | 肠道微生物研究约 60% |
2.3 面试为什么会问¶
面试官内心:
"这个候选人做过宏基因组,但 16S 扩增子更常见、文献更多。
如果他连 16S 的标准工具 QIIME2 都不了解,说明知识面窄。"
你学了之后的回答:
"我的 T2D 项目用的是鸟枪法宏基因组,用 Kraken2 做物种分类。
但我也了解 16S 扩增子路线,知道 QIIME2 的 DADA2 降噪、
ASV 概念、Alpha/Beta 多样性分析流程。两条路线的优缺点
我都清楚,可以根据实验设计推荐合适的方案。"
白话总结:你做过鸟枪法,再懂 16S 扩增子,就覆盖了微生物组分析的两条主线。面试时被问到"你了解 16S 分析吗?"不至于卡壳。
3. 核心概念白话版¶
3.1 16S rRNA 基因——细菌的"身份证"¶
16S rRNA 基因是几乎所有细菌都有的一个基因(~1500bp)。
它的特点是:
1. 普遍存在:99.9% 的细菌都有这个基因
2. 保守区 + 可变区交替排列:
- 保守区(C1~C9):所有细菌几乎一样 → 用来设计通用引物,"钓"出所有细菌
- 可变区(V1~V9):不同菌之间有差异 → 用来区分"你是谁"
3. 常用区段:V3-V4 区(~460bp)是最常测的
白话类比:
所有中国公民都有身份证(保守区),但每个人的身份证号不同(可变区)。
16S 测序就是"用身份证的统一格式把所有人抓来,再看号码区分是谁"。
3.2 ASV vs OTU——"精确身份"vs"大概分组"¶
这是面试高频考点:
| 对比 | OTU(旧方法) | ASV(新方法,QIIME2 默认) |
|---|---|---|
| 全称 | Operational Taxonomic Unit(操作分类单元) | Amplicon Sequence Variant(扩增子序列变体) |
| 原理 | 序列相似度 ≥97% 的聚在一起算一个 OTU | 通过去噪算法(DADA2)推断真实的生物序列 |
| 精度 | 糊一点,97% 相似的不同菌被合并了 | 精确到单碱基差异 |
| 可比性 | 不同实验的 OTU 编号不通用 | ASV 序列全球一致,不同实验可以直接比 |
| 白话 | "姓张的都算一家人" | "张三是张三,张四是张四" |
| 当前趋势 | 逐渐被淘汰 | 主流,QIIME2 默认用 DADA2 产生 ASV |
3.3 QIIME2 的文件格式——.qza 和 .qzv¶
QIIME2 不用普通的 txt/csv,而是用自己的打包格式:
.qza(QIIME2 Artifact):
- 本质上是一个 zip 压缩包
- 里面装着数据 + 元数据 + 分析来源记录(provenance)
- 白话:就像一个"档案袋",里面有数据文件,还有一张"从哪里来、经过了什么处理"的记录单
- 你可以 unzip xxx.qza 解压出里面的真实数据
.qzv(QIIME2 Visualization):
- 也是 zip,但里面是可视化结果(HTML 网页)
- 上传到 https://view.qiime2.org 就能在浏览器里交互查看
- 白话:就像一个自带看图软件的"图片包"
为什么这么设计?
- 每一步分析都有来源追踪(provenance),你能查到这个结果是怎么一步步算出来的
- 防止你搞混文件——QIIME2 会检查输入的 .qza 类型对不对
3.4 Metadata(样本元数据)¶
就是一张表,记录每个样本的"背景信息":
#SampleID Group Age BMI Sex
T2D_001 T2D 55 28.3 M
T2D_002 T2D 60 30.1 F
Ctrl_001 Control 52 22.5 M
Ctrl_002 Control 58 23.1 F
白话:这就是你的"分组信息表",跟你用 Kraken2 时的样本信息表是一个意思。
格式要求:第一列必须叫 SampleID(或 #SampleID),用 tab 分隔,保存为 .tsv。
4. 安装配置(conda)¶
# ============================================================
# QIIME2 安装(以 2024.5 版本为例)
# 官方推荐用 conda/mamba,单独建一个环境避免冲突
# ============================================================
# 第一步:下载 QIIME2 的 conda 环境配置文件
wget https://data.qiime2.org/distro/amplicon/qiime2-amplicon-2024.5-py38-linux-conda.yml
# 第二步:用 conda 创建环境(名字叫 qiime2-amplicon-2024.5)
# 这一步会安装约 200 个包,耗时 10~30 分钟,耐心等
conda env create -n qiime2-amplicon-2024.5 \
--file qiime2-amplicon-2024.5-py38-linux-conda.yml
# 第三步:激活环境
conda activate qiime2-amplicon-2024.5
# 第四步:验证安装是否成功
qiime --version
# 应该输出类似:q2cli version 2024.5.0
# 第五步:测试插件是否正常加载
qiime info
# 会列出所有已安装的 QIIME2 插件,确认没有报错即可
# ============================================================
# 如果 conda 太慢,可以用 mamba 加速
# ============================================================
# 安装 mamba(如果还没装)
conda install -n base -c conda-forge mamba
# 用 mamba 代替 conda 创建环境(速度快 5~10 倍)
mamba env create -n qiime2-amplicon-2024.5 \
--file qiime2-amplicon-2024.5-py38-linux-conda.yml
5. 完整 16S 分析流程¶
下面用一个完整的例子走一遍标准流程。假设你拿到了 T2D 患者和健康对照的 16S V3-V4 区双端测序数据。
5.1 准备工作:组织数据¶
# ============================================================
# 项目目录结构
# ============================================================
mkdir -p qiime2_tutorial/{raw_data,results,metadata}
# raw_data/ 下放原始 fastq 文件,命名格式必须符合 Casava 1.8:
# SampleID_S1_L001_R1_001.fastq.gz (正向 reads)
# SampleID_S1_L001_R2_001.fastq.gz (反向 reads)
# 例如:
# T2D_001_S1_L001_R1_001.fastq.gz
# T2D_001_S1_L001_R2_001.fastq.gz
# metadata/ 下放样本元数据表 sample-metadata.tsv
5.2 Step 1:导入数据¶
# ============================================================
# 把 fastq 文件导入成 QIIME2 的 .qza 格式
# 这一步就是把普通文件"打包"成 QIIME2 能识别的档案袋
# ============================================================
qiime tools import \
--type 'SampleData[PairedEndSequencesWithQuality]' \ # 数据类型:双端带质量值
--input-path raw_data/ \ # 输入目录(放 fastq 的文件夹)
--input-format CasavaOneEightSingleLanePerSampleDirFmt \ # 文件命名格式
--output-path results/demux-paired-end.qza # 输出的 .qza 文件
# 查看导入结果的质量概况(生成 .qzv 可视化文件)
qiime demux summarize \
--i-data results/demux-paired-end.qza \ # 输入:刚导入的数据
--o-visualization results/demux-summary.qzv # 输出:质量分布图
# 把 .qzv 文件上传到 https://view.qiime2.org 查看
# 重点看:每个位置的质量分值(Q score),决定后续修剪参数
5.3 Step 2:DADA2 降噪(核心步骤)¶
# ============================================================
# DADA2 降噪:去除测序噪音,生成精确的 ASV
# 这是整个流程最核心的一步!
#
# DADA2 做了三件事:
# 1. 质量过滤:根据你设的截断长度,去掉低质量尾巴
# 2. 去噪(denoise):用统计模型区分"真实的生物变异"和"测序错误"
# 3. 去嵌合体(chimera removal):去掉 PCR 过程中拼错的假序列
# ============================================================
qiime dada2 denoise-paired \
--i-demultiplexed-seqs results/demux-paired-end.qza \ # 输入:导入的原始数据
--p-trunc-len-f 280 \ # 正向 reads 截断到 280bp(根据质量图决定,Q>20 的位置)
--p-trunc-len-r 220 \ # 反向 reads 截断到 220bp(反向质量通常比正向差)
--p-trim-left-f 0 \ # 正向 reads 左端修剪 0bp(如果引物没去掉就设引物长度)
--p-trim-left-r 0 \ # 反向 reads 左端修剪 0bp
--p-n-threads 8 \ # 使用 8 个 CPU 核心,加速计算
--o-table results/feature-table.qza \ # 输出1:ASV 丰度表(样本×ASV 矩阵)
--o-representative-sequences results/rep-seqs.qza \ # 输出2:每个 ASV 的代表序列
--o-denoising-stats results/dada2-stats.qza # 输出3:每个样本的过滤统计
# ---------- 查看降噪统计 ----------
# 看每个样本有多少 reads 通过了过滤、去噪、去嵌合体
qiime metadata tabulate \
--m-input-file results/dada2-stats.qza \
--o-visualization results/dada2-stats.qzv
# ---------- 查看 ASV 丰度表概况 ----------
qiime feature-table summarize \
--i-table results/feature-table.qza \ # 输入:ASV 丰度表
--m-sample-metadata-file metadata/sample-metadata.tsv \ # 样本分组信息
--o-visualization results/feature-table-summary.qzv # 输出:表格概况
# ---------- 查看代表序列 ----------
qiime feature-table tabulate-seqs \
--i-data results/rep-seqs.qza \
--o-visualization results/rep-seqs.qzv
重要参数怎么选?
trunc-len-f / trunc-len-r(截断长度):
打开 demux-summary.qzv,看正向/反向 reads 的质量图
找到质量分值开始掉到 Q20 以下的位置,在那里截断
例如:正向 280bp 处质量开始变差 → --p-trunc-len-f 280
注意:截断后正向+反向要有足够的重叠区(overlap ≥ 20bp)才能合并
V3-V4 区约 460bp → 280 + 220 - 460 = 40bp 重叠,OK
白话:DADA2 就像一个"照片修复师"——把模糊的尾巴剪掉,把噪点去掉,
把拼贴错的假照片丢掉,最后只留下清晰真实的照片(ASV)。
5.4 Step 3:物种注释(Taxonomy Classification)¶
# ============================================================
# 给每个 ASV 标注"这是什么菌"
# 需要一个预训练好的分类器(基于参考数据库 + 机器学习)
# 常用数据库:Silva 138、Greengenes2
# ============================================================
# 下载预训练的 Silva 138 分类器(约 400MB)
# 注意:这是全长 16S 的通用分类器,也可以用于 V3-V4 区
# 如果想要更高精度,可以自己训练针对 V3-V4 区段的分类器:
# qiime feature-classifier extract-reads → fit-classifier-naive-bayes
wget https://data.qiime2.org/2024.5/common/silva-138-99-nb-classifier.qza \
-O results/silva-138-classifier.qza
# 对 ASV 代表序列进行物种注释
qiime feature-classifier classify-sklearn \
--i-classifier results/silva-138-classifier.qza \ # 预训练分类器
--i-reads results/rep-seqs.qza \ # 输入:ASV 代表序列
--p-n-jobs 8 \ # 并行线程数
--o-classification results/taxonomy.qza # 输出:物种注释结果
# 查看注释结果
qiime metadata tabulate \
--m-input-file results/taxonomy.qza \
--o-visualization results/taxonomy.qzv
# ---------- 生成物种组成柱状图 ----------
qiime taxa barplot \
--i-table results/feature-table.qza \ # ASV 丰度表
--i-taxonomy results/taxonomy.qza \ # 物种注释
--m-sample-metadata-file metadata/sample-metadata.tsv \ # 分组信息
--o-visualization results/taxa-barplot.qzv # 输出:交互式物种组成柱状图
# 这个 taxa-barplot.qzv 非常实用!
# 上传到 view.qiime2.org 后可以:
# - 按分组(T2D vs Control)显示
# - 切换分类级别(门/纲/目/科/属/种)
# - 交互式筛选和排序
5.5 Step 4:构建系统发育树¶
# ============================================================
# 为什么要建树?
# 后续的 UniFrac 多样性指标需要知道 ASV 之间的进化关系
# UniFrac 考虑的不只是"有没有这个菌",还考虑"这些菌在进化上近不近"
# 白话:两个样本都缺了大肠杆菌,但一个补上了沙门氏菌(近亲),
# 另一个补上了乳酸杆菌(远亲),UniFrac 认为前者差异更小
# ============================================================
# QIIME2 提供一键建树流程:多序列比对 → 过滤 → 建树 → 有根树
qiime phylogeny align-to-tree-mafft-fasttree \
--i-sequences results/rep-seqs.qza \ # 输入:ASV 代表序列
--o-alignment results/aligned-rep-seqs.qza \ # 输出1:多序列比对结果
--o-masked-alignment results/masked-aligned.qza \ # 输出2:去掉高变异位点的比对
--o-tree results/unrooted-tree.qza \ # 输出3:无根树
--o-rooted-tree results/rooted-tree.qza # 输出4:有根树(后续分析用这个)
# 内部做了四步:
# 1. mafft 多序列比对:把所有 ASV 序列排排坐对齐
# 2. mask:去掉比对中噪音太大的位点
# 3. FastTree 建树:用近似最大似然法建进化树
# 4. midpoint rooting:在树的中点加根,变成有根树
5.6 Step 5:Alpha 多样性分析¶
# ============================================================
# Alpha 多样性 = 一个样本内部的多样性("这碗汤里有多少种料?")
#
# 常用指标:
# Shannon 指数:考虑物种数 + 均匀度(种类多且分布均匀 → 值高)
# Observed Features:单纯数有多少个 ASV
# Faith's PD:基于系统发育树的多样性(进化距离越远越多样)
# Pielou's Evenness:均匀度(是不是一种菌独大?)
# ============================================================
# 先做稀释(rarefaction)——把所有样本抽到相同的 reads 数
# 为什么?不同样本测序深度不同,直接比不公平
# 抽样深度怎么选?看 feature-table-summary.qzv 里的最小样本量
qiime diversity core-metrics-phylogenetic \
--i-phylogeny results/rooted-tree.qza \ # 有根系统发育树
--i-table results/feature-table.qza \ # ASV 丰度表
--p-sampling-depth 10000 \ # 稀释深度(每样本抽 10000 条 reads)
--m-metadata-file metadata/sample-metadata.tsv \ # 样本分组信息
--output-dir results/core-metrics # 输出目录(生成一大堆结果)
# 这个命令会一次性算出:
# Alpha 多样性:shannon, observed_features, faith_pd, evenness
# Beta 多样性:bray_curtis, jaccard, weighted_unifrac, unweighted_unifrac
# 以及对应的 PCoA 结果
# ---------- Alpha 多样性组间比较(T2D vs Control 有没有显著差异?)----------
qiime diversity alpha-group-significance \
--i-alpha-diversity results/core-metrics/shannon_vector.qza \ # Shannon 指数
--m-metadata-file metadata/sample-metadata.tsv \
--o-visualization results/alpha-shannon-significance.qzv
# 同理可以对 faith_pd、observed_features 等做显著性检验
qiime diversity alpha-group-significance \
--i-alpha-diversity results/core-metrics/faith_pd_vector.qza \
--m-metadata-file metadata/sample-metadata.tsv \
--o-visualization results/alpha-faith-significance.qzv
# ---------- 稀释曲线(看测序深度够不够)----------
qiime diversity alpha-rarefaction \
--i-table results/feature-table.qza \
--i-phylogeny results/rooted-tree.qza \
--p-max-depth 20000 \ # 最大抽样深度
--m-metadata-file metadata/sample-metadata.tsv \
--o-visualization results/alpha-rarefaction.qzv
# 看图:曲线趋于平坦 → 测序深度足够
# 白话:就像钓鱼,一开始每次都能钓到新鱼种,后来钓来钓去都是重复的 → 饱和了
5.7 Step 6:Beta 多样性分析¶
# ============================================================
# Beta 多样性 = 样本之间的差异("这两碗汤的配方差多少?")
#
# 常用指标:
# Bray-Curtis:基于丰度的差异(考虑"有多少")
# Jaccard:基于有无的差异(只考虑"有没有")
# Weighted UniFrac:考虑进化关系 + 丰度(最常用!)
# Unweighted UniFrac:考虑进化关系,不考虑丰度
#
# 分析方法:PCoA 降维 + PERMANOVA 统计检验
# ============================================================
# core-metrics 已经算好了 PCoA,直接看 emperor 图:
# results/core-metrics/weighted_unifrac_emperor.qzv
# 上传到 view.qiime2.org → 3D 交互散点图,看 T2D 和 Control 是否分开
# ---------- PERMANOVA 检验(T2D vs Control 的菌群结构是否显著不同?)----------
qiime diversity beta-group-significance \
--i-distance-matrix results/core-metrics/weighted_unifrac_distance_matrix.qza \
--m-metadata-file metadata/sample-metadata.tsv \
--m-metadata-column Group \ # 按哪一列分组比较
--p-method permanova \ # 统计方法:PERMANOVA
--p-pairwise \ # 做两两比较
--o-visualization results/beta-weighted-unifrac-significance.qzv
# PERMANOVA 结果怎么看?
# p-value < 0.05 → T2D 和 Control 的菌群结构有显著差异
# test statistic (pseudo-F) 越大 → 差异越明显
#
# 白话:PERMANOVA 就是问"这两组人的肠道菌谱地图有没有系统性差别?"
# 不是看某一种菌,而是看整体格局。
5.8 Step 7:差异物种分析(ANCOM-BC)¶
# ============================================================
# 找出 T2D 和 Control 之间哪些菌有显著差异
#
# QIIME2 推荐 ANCOM-BC(Analysis of Compositions of Microbiomes
# with Bias Correction):
# - 专为微生物组数据设计(组成型数据,加起来 = 100%)
# - 考虑了组成偏差(compositional bias)
# - 比简单的 Wilcoxon 检验更合理
# ============================================================
# 先按属(genus)级别合并 ASV 丰度表
qiime taxa collapse \
--i-table results/feature-table.qza \ # 原始 ASV 丰度表
--i-taxonomy results/taxonomy.qza \ # 物种注释
--p-level 6 \ # 级别6 = 属(genus)
--o-collapsed-table results/genus-table.qza # 输出:属级别丰度表
# 过滤掉低丰度的菌(减少多重检验负担)
qiime feature-table filter-features \
--i-table results/genus-table.qza \
--p-min-frequency 10 \ # 至少出现 10 次
--p-min-samples 2 \ # 至少在 2 个样本中出现
--o-filtered-table results/genus-table-filtered.qza
# 运行 ANCOM-BC 差异分析
qiime composition ancombc \
--i-table results/genus-table-filtered.qza \ # 属级别丰度表
--m-metadata-file metadata/sample-metadata.tsv \
--p-formula Group \ # 比较变量(T2D vs Control)
--o-differentials results/ancombc-results.qza # 输出:差异分析结果
# 可视化差异物种
qiime composition da-barplot \
--i-data results/ancombc-results.qza \
--o-visualization results/ancombc-barplot.qzv
# 结果解读:
# lfc(log fold change)> 0 → 在 T2D 中富集
# lfc < 0 → 在 Control 中富集
# q-value < 0.05 → 统计显著
5.9 Step 8:导出结果用于下游分析¶
# ============================================================
# 有时你需要把 QIIME2 的结果导出到 R 或 Python 里做自定义分析
# ============================================================
# 导出 ASV 丰度表(biom 格式 → tsv 格式)
qiime tools export \
--input-path results/feature-table.qza \
--output-path results/exported/
# biom 转 tsv(人能读的纯文本表格)
biom convert \
-i results/exported/feature-table.biom \ # 输入:biom 格式
-o results/exported/feature-table.tsv \ # 输出:tsv 格式
--to-tsv # 转成制表符分隔文本
# 导出物种注释
qiime tools export \
--input-path results/taxonomy.qza \
--output-path results/exported/
# 导出系统发育树(Newick 格式,可用 iTOL 或 ggtree 可视化)
qiime tools export \
--input-path results/rooted-tree.qza \
--output-path results/exported/
6. 完整流程总结图¶
原始 fastq 文件
│
▼
[Step 1] qiime tools import → demux-paired-end.qza
│
▼
[Step 2] qiime dada2 denoise-paired → feature-table.qza + rep-seqs.qza
│ (ASV 丰度表 + 代表序列)
├─────────────────┐
▼ ▼
[Step 3] 物种注释 [Step 4] 建树
taxonomy.qza rooted-tree.qza
│ │
▼ ▼
[Step 5/6] Alpha + Beta 多样性分析 ← 需要:丰度表 + 树 + 元数据
│
▼
[Step 7] 差异物种分析(ANCOM-BC)
│
▼
[Step 8] 导出结果 → R/Python 自定义分析
7. QIIME2 vs mothur 对比¶
| 对比维度 | QIIME2 | mothur |
|---|---|---|
| 开发语言 | Python(插件化架构) | C++(单体程序) |
| 安装方式 | conda 一键安装 | 下载二进制或编译 |
| 命令风格 | 每步一条长命令 + 参数 | 交互式或批处理脚本 |
| 文件格式 | .qza/.qzv(有 provenance) | 普通 txt/fasta/shared |
| 默认去噪 | DADA2(ASV) | 自带去噪流程(也支持 ASV) |
| 可视化 | view.qiime2.org 交互式 | 自带简单画图 |
| 插件生态 | 丰富,社区活跃 | 功能也全,但扩展性弱 |
| 学习曲线 | 中等(概念多、命令长) | 偏高(文档较老) |
| 文献引用数 | 极高(>20000 引用) | 极高(>20000 引用) |
| 适合谁 | 新手到高级用户 | 有一定经验的用户 |
| 社区支持 | forum.qiime2.org 非常活跃 | mothur.org 论坛 |
| 当前趋势 | 主流首选,更新活跃 | 逐渐被 QIIME2 超越 |
白话总结:两者都是 16S 分析的经典工具。现在新项目基本首选 QIIME2,面试时说"我了解 QIIME2,也知道 mothur"就够了。
8. 常见报错与解决¶
报错 1:Plugin error from dada2 - No reads passed the filter¶
原因:DADA2 截断长度设得太狠,所有 reads 被过滤掉了
解决:
1. 重新看 demux-summary.qzv 的质量图
2. 放宽截断参数(比如 --p-trunc-len-f 从 280 降到 250)
3. 确保截断后正反向 reads 有 ≥20bp 重叠
白话:你把照片剪得只剩一个角了,当然看不清——少剪一点
报错 2:Missing one or more files for CasavaOneEightSingleLanePerSampleDirFmt¶
原因:fastq 文件命名格式不对,QIIME2 识别不了
解决:
文件名必须是:SampleID_Sxx_L001_R1_001.fastq.gz
常见错误:
- 文件名有空格或中文字符
- 缺少 _S[数字]_ 部分
- R1/R2 写成了 _1/_2
快速修复:用 qiime tools import 的 Manifest 格式代替
白话:QIIME2 是个认死理的门卫,名字格式不对就不让进门
报错 3:Artifact ... is not a(n) FeatureTable[Frequency]¶
原因:输入的 .qza 类型不对(比如把 taxonomy.qza 当作 feature-table.qza 用了)
解决:
1. 用 qiime tools peek xxx.qza 查看 artifact 的类型
2. 确认命令要求的输入类型,用对文件
白话:就像银行柜台要你出示身份证,你递了一张公交卡——类型不对
报错 4:MemoryError(内存不足)¶
原因:样本太多或 reads 太多,DADA2 吃不下
解决:
1. 增加机器内存(建议 ≥16GB)
2. 减少 --p-n-threads(线程越多内存占用越大)
3. 分批处理再合并
4. 用 --p-min-fold-parent-over-abundance 参数放宽嵌合体检测
白话:碗太小装不下这么多汤——换个大碗或者分几次盛
报错 5:No taxonomy results - classifier mismatch¶
原因:分类器和你的数据不匹配
解决:
1. 确认分类器是为你的目标区段训练的(V3-V4 的分类器不能用于 V1-V2)
2. 确认 QIIME2 版本和分类器版本一致(2024.5 的分类器不能在 2023.9 里用)
3. 如果没有现成的分类器,自己训练:
qiime feature-classifier fit-classifier-naive-bayes
白话:你拿了一本英语字典去查日语单词——当然查不到,要用对字典
报错 6:The subsampled table contains fewer samples than expected¶
原因:core-metrics 的 --p-sampling-depth 设太高,有些样本 reads 不够被丢弃了
解决:
1. 看 feature-table-summary.qzv 里每个样本的 reads 数
2. 选一个合理的深度(通常选最小样本量,或丢弃 reads 极少的离群样本后的最小值)
3. 权衡:深度高 → 信息多但丢样本;深度低 → 保留样本多但信息少
白话:全班跑 1000 米,你要求所有人都跑完——体力差的同学直接被淘汰了
降低标准到 800 米,就能多留几个人
9. 速查表¶
9.1 常用命令速查¶
| 任务 | 命令 | 说明 |
|---|---|---|
| 导入数据 | qiime tools import |
fastq → .qza |
| 质量概况 | qiime demux summarize |
看 reads 质量分布 |
| DADA2 降噪 | qiime dada2 denoise-paired |
生成 ASV 表 + 代表序列 |
| 物种注释 | qiime feature-classifier classify-sklearn |
ASV → 物种名 |
| 建树 | qiime phylogeny align-to-tree-mafft-fasttree |
系统发育树 |
| 多样性全家桶 | qiime diversity core-metrics-phylogenetic |
Alpha + Beta 一键出 |
| Alpha 显著性 | qiime diversity alpha-group-significance |
组间 Alpha 比较 |
| Beta 显著性 | qiime diversity beta-group-significance |
PERMANOVA 检验 |
| 差异物种 | qiime composition ancombc |
ANCOM-BC 差异分析 |
| 物种柱状图 | qiime taxa barplot |
交互式物种组成图 |
| 查看 artifact | qiime tools peek xxx.qza |
查看 .qza 类型和 UUID |
| 导出数据 | qiime tools export |
.qza → 普通文件 |
| 查看版本 | qiime --version |
确认 QIIME2 版本 |
9.2 分类级别对照¶
| level 参数 | 分类级别 | 英文 | 例子 |
|---|---|---|---|
| 1 | 域 | Kingdom/Domain | Bacteria |
| 2 | 门 | Phylum | Firmicutes |
| 3 | 纲 | Class | Clostridia |
| 4 | 目 | Order | Clostridiales |
| 5 | 科 | Family | Lachnospiraceae |
| 6 | 属 | Genus | Blautia |
| 7 | 种 | Species | Blautia obeum |
9.3 Alpha 多样性指标对照¶
| 指标 | 考虑什么 | 白话 |
|---|---|---|
| Observed Features | 物种数量 | 碗里有几种料? |
| Shannon | 数量 + 均匀度 | 料多且分布均匀? |
| Faith's PD | 进化距离 | 料的种类跨度大不大?(蔬菜+肉+海鲜 > 三种蔬菜) |
| Pielou's Evenness | 均匀度 | 有没有一种料独占 90%? |
9.4 Beta 多样性指标对照¶
| 指标 | 考虑什么 | 适用场景 |
|---|---|---|
| Jaccard | 有无(二元) | 只关心"有没有这个菌" |
| Bray-Curtis | 丰度 | 关心"每个菌有多少" |
| Unweighted UniFrac | 进化关系 + 有无 | 关心"有没有"且考虑进化 |
| Weighted UniFrac | 进化关系 + 丰度 | 最常用,综合考虑最全面 |
9.5 与你的 T2D 项目的对照表¶
| 分析步骤 | 你的鸟枪法流程 | QIIME2 16S 流程 |
|---|---|---|
| 质控 | fastp/Trimmomatic | DADA2 内置质控 |
| 去宿主 | Bowtie2 比对人基因组 | 不需要(16S 引物只扩增细菌) |
| 物种分类 | Kraken2 + Bracken | feature-classifier(Naive Bayes) |
| 分类数据库 | 标准 Kraken2 数据库 | Silva 138 / Greengenes2 |
| 结果格式 | Bracken 丰度表(.txt) | feature-table.qza(.biom) |
| 多样性分析 | 自己用 R/Python 算 | QIIME2 内置,一键搞定 |
| 功能分析 | HUMAnN3 / eggNOG-mapper | PICRUSt2 预测(精度不如鸟枪法) |
| 差异分析 | LEfSe / DESeq2 / MaAsLin2 | ANCOM-BC(QIIME2 内置) |
10. 延伸资源¶
10.1 官方资源¶
- QIIME2 官方文档:https://docs.qiime2.org — 最权威的参考
- QIIME2 官方教程:Moving Pictures Tutorial — 入门必做的经典教程
- QIIME2 论坛:https://forum.qiime2.org — 报错搜这里,基本都有答案
- QIIME2 View:https://view.qiime2.org — 在线查看 .qzv 文件
10.2 参考数据库¶
- Silva:https://www.arb-silva.de — 最全的 rRNA 数据库,QIIME2 首选
- Greengenes2:https://greengenes2.ucsd.edu — 与 QIIME2 深度集成的新版本
- UNITE:https://unite.ut.ee — 真菌 ITS 数据库
10.3 推荐学习路径¶
第一步(1天):跑通官方 Moving Pictures Tutorial
→ 理解每一步在做什么,对照本文的概念解释
第二步(1天):用 QIIME2 自带的 Atacama Soils 教程练习
→ 更大数据集,练习参数调整
第三步(选做):用自己的数据或公开的 16S 数据跑一遍
→ 推荐 NCBI SRA 上搜 "16S gut microbiome T2D"
面试够用标准:
✓ 能说清楚 QIIME2 的完整 16S 分析流程
✓ 知道 ASV vs OTU 的区别
✓ 理解 Alpha/Beta 多样性的含义和常用指标
✓ 能对比鸟枪法和 16S 扩增子的优缺点
10.4 面试常考问题¶
Q: 16S 扩增子和鸟枪法宏基因组有什么区别?
A: 16S 只测一个标记基因,便宜、快,但只能看物种组成;
鸟枪法测所有 DNA,能看功能,但贵且数据量大。
Q: ASV 和 OTU 有什么区别?为什么现在推荐 ASV?
A: OTU 按 97% 相似度聚类,会合并不同的菌;
ASV 通过去噪得到精确序列,精度高且跨实验可比。
Q: Weighted UniFrac 和 Bray-Curtis 有什么区别?
A: 都衡量样本间差异,但 Weighted UniFrac 额外考虑了
物种之间的进化关系,对微生物数据更合理。
Q: PERMANOVA 是做什么的?
A: 检验两组样本的整体菌群结构是否有显著差异,
类似 ANOVA 但用于距离矩阵数据。
Q: 为什么 16S 扩增子数据不能直接用 t 检验比较物种丰度?
A: 因为微生物丰度是组成型数据(加起来 = 100%),
一个菌增多必然导致其他菌的相对丰度下降,
所以需要 ANCOM-BC 等组成型数据专用方法。
最后更新:2026-05 | 基于 QIIME2 2024.5 版本 本文定位:帮助有鸟枪法宏基因组经验的你快速理解 16S 扩增子的标准分析流程