跳转至

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 扩增子的标准分析流程