MicroSnake:可重复的微生物组分析工作流¶
概述¶
MicroSnake 是一个基于 Snakemake 构建的可重复生物信息学工作流,专为微生物组数据的标准化分析而设计。该工作流同时支持 16S rRNA 扩增子测序 和 鸟枪法宏基因组 两种主流技术路线,能够在一个统一的配置文件中完成从原始序列到物种组成、功能通路丰度、以及生态多样性统计的全部分析,并自动生成发表级别的图表与综合 HTML 报告。
作为系列高质量生物信息学工具中的第三个项目,MicroSnake 兼具多项功能:它既是面向期刊投稿的科学工作流实现,也是专业 GitHub 作品集的一部分,同时可用作实习或博士申请中的生信能力展示,还可通过 DOI 进行学术引用。整个工作流在 MIT 许可证下开源,配有持续集成测试、Docker 容器化支持以及 Conda 环境锁定,确保分析的可重复性和跨平台一致性。
| 项目 | 描述 |
|---|---|
| rnaseq-toolkit | RNA-seq 差异表达分析流程(PyPI 包) |
| qsar-benchmark | 基于 EGFR 抑制剂的 QSAR/机器学习基准 |
| MicroSnake (本仓库) | 微生物组分析一体化工作流 |
通过 MicroSnake,研究人员可以快速获得去噪后的扩增子序列变体(ASV)、物种分类表、Alpha 与 Beta 多样性结果、差异丰度统计,或针对宏基因组数据获得 MetaPhlAn4 物种组成和 HUMAnN3 功能通路丰度矩阵。所有中间文件均可追溯,图表可直接用于报告或论文。
核心知识点¶
1. 工作流架构¶
MicroSnake 采用模块化 Snakemake 规则设计,主要分析路径如下图所示:
graph TD
A[原始 FASTQ 读段] --> B(质量控制: fastp + FastQC)
B --> K(MultiQC 聚合报告)
B --> C{数据类型}
C -->|16S rRNA 扩增子| D(DADA2 ASV 去噪)
D --> E(物种分类: SILVA 参考数据库)
E --> F(Alpha 多样性: Shannon, Simpson, Chao1)
E --> G(Beta 多样性: Bray-Curtis PCoA)
F --> H(差异丰度分析: DESeq2)
C -->|鸟枪法宏基因组| I(MetaPhlAn4 物种组成分析)
I --> J(HUMAnN3 功能通路丰度)
H --> L(统一 HTML 报告)
G --> L
J --> L
K --> L
模块分工: - rules/qc.smk:执行 fastp 去接头、质控过滤,FastQC 生成质量报告,MultiQC 汇总所有样本。 - rules/amplicon.smk:利用 DADA2 进行扩增子去噪、生成 ASV 特征表和代表序列。 - rules/shotgun.smk:运行 MetaPhlAn4 估计物种相对丰度,HUMAnN3 获取 UniRef90 基因家族和 MetaCyc 通路丰度。 - rules/diversity.smk:计算 Alpha 多样性指数(Shannon、Simpson、Chao1),基于 Bray-Curtis 距离的主坐标分析(PCoA)。 - rules/report.smk:汇总所有图表与统计结果,渲染为独立 HTML 报告。
2. 关键分析流程与原理¶
2.1 16S rRNA 扩增子分析¶
- DADA2 去噪:通过构建错误模型将测序读段解析为精确的 Amplicon Sequence Variants (ASV),相比传统 OTU 聚类具有单核苷酸精度。MicroSnake 内嵌了质量过滤、序列拼接(双端)、嵌合体去除和 ASV 推断的完整流程。
- 物种注释:使用 SILVA 数据库(默认版本)对 ASV 代表序列进行比对,输出界、门、纲、目、科、属水平的分类信息。
- 多样性分析:Alpha 多样性(群内多样性)采用 Shannon、Simpson 和 Chao1 指数量化;Beta 多样性(群间差异)基于 Bray-Curtis 距离矩阵,通过 PCoA 降维可视化。
- 差异丰度检验:使用 DESeq2 模型对不同分组间 ASV 或更高分类层级进行差异丰度分析,输出 log₂ 倍率变化(log₂FC)和校正 p 值。
2.2 鸟枪法宏基因组分析¶
- MetaPhlAn4:利用一组进化枝特异性标记基因进行物种组成估计,可精确到种水平,并直接输出相对丰度表格。
- HUMAnN3:将测序读段映射至 ChocoPhlAn pangenome 数据库,获得基因家族(UniRef90)丰度,再通过 MetaCyc 通路数据库重建群落功能通路轮廓,支持分层级的功能丰度分析。
2.3 可重复性设计¶
工作流完全由 Conda 环境文件和 Docker 镜像管理依赖,Snakemake 的规则系统保证并行执行和断点续跑。config/config.yaml 集中控制所有参数,包括数据库路径、线程数、质控阈值等。样本信息通过制表符分隔的 samples.tsv 文件导入,支持灵活的实验设计。
3. 结果解读:基准数据集性能¶
在包含 4 个模拟样本(2 个肠道、2 个皮肤,每个样本 500 条读段)的基准测试中,MicroSnake 生成以下核心指标:
| 指标 | 数值 |
|---|---|
| 分析样本数 | 4 (肠道 2, 皮肤 2) |
| 总输入读段数 | 2,000 |
| fastp 平均读段存活率 | 95.6% |
| DADA2 去噪后 ASV 数 | 15 |
| 肠道平均 Shannon 指数 | 2.31 ± 0.06 |
| 皮肤平均 Shannon 指数 | 2.13 ± 0.08 |
| Bray-Curtis 距离(肠道组内) | 0.120 |
| Bray-Curtis 距离(皮肤组内) | 0.168 |
| Bray-Curtis 距离(组间) | 0.854 |
| 显著差异 ASV 数(padj < 0.05) | 12 / 15 |
| 肠道最富集属 | Prevotella (log₂FC = 5.74) |
| 皮肤最富集属 | Staphylococcus (log₂FC = −3.67) |
| MetaPhlAn4 最高丰度通路 | 脂肪酸生物合成(Fatty Acid Biosynthesis) |
这些结果展示了工作流从质控到统计推断的完整能力:较高的读段存活率反映质控策略的有效性,组间 Bray-Curtis 距离远大于组内距离,符合预期生物学差异,DESeq2 成功识别出与宿主环境显著关联的微生物属。
代码实操¶
1. 环境安装与依赖¶
前提条件: - Conda (Miniconda3 或 Anaconda 推荐) - Snakemake >= 7.0
创建独立环境并安装 Snakemake(如尚未安装):
conda create -n microsnake python=3.9
conda activate microsnake
conda install -c bioconda -c conda-forge snakemake
克隆仓库并进入目录:
2. 配置工作流¶
编辑样本表 config/samples.tsv,格式如下,每一行代表一个样本,至少包含 sample、group 和 FASTQ 文件路径列(支持单端与双端):
# sample group fq1 fq2
sample1 gut data/sample1_R1.fastq.gz data/sample1_R2.fastq.gz
sample2 gut data/sample2_R1.fastq.gz data/sample2_R2.fastq.gz
sample3 skin data/sample3_R1.fastq.gz data/sample3_R2.fastq.gz
sample4 skin data/sample4_R1.fastq.gz data/sample4_R2.fastq.gz
主要参数调整在 config/config.yaml 中,关键选项包括:
# 分析类型:可同时启用或单独设置
analysis_type:
amplicon: true # 16S rRNA 扩增子分析
shotgun: false # 宏基因组分析(若有对应的参考数据库)
# 参考数据库路径
references:
silva: "/path/to/silva_nr_v138_train_set.fa.gz"
silva_species: "/path/to/silva_species_assignment_v138.fa.gz"
metaphlan_db: "/path/to/metaphlan_databases"
humann_db: "/path/to/humann_databases"
# 质控参数
qc:
fastp:
qualified_quality_phred: 20
min_length: 100
adapter_trimming: true
对于宏基因组分析,确保系统已下载 MetaPhlAn4 和 HUMAnN3 的数据库,并在配置文件中指定正确路径。工作流会自动调用对应规则。
3. 运行工作流¶
基本执行(使用 Conda 环境)¶
首次运行会构建 Conda 环境,耗时可能较长。之后仅执行任务图中需要更新的步骤。若要强制执行全部步骤,可添加 -F 参数:
生成运行报告¶
流程完成后,Snakemake 可自动生成分析过程的汇总报告:
此报告包含使用的规则、输入输出文件列表、运行统计等,对审计和分享有益。
使用 Docker 运行¶
MicroSnake 提供 Dockerfile,可在隔离容器中执行,完全避免环境冲突:
# 构建镜像
docker build -t microsnake .
# 运行流水线,将当前目录挂载至容器的 /app,数据路径需相对 /app 配置
docker run -v $(pwd):/app microsnake snakemake --cores 4
4. 结果文件说明¶
成功运行后,results/ 目录将包含以下主要输出:
results/qc/:fastp 过滤后 FASTQ、FastQC 报告、MultiQC 整合报告。results/amplicon/:DADA2 输出的 ASV 序列文件 (asv_seqs.fasta)、ASV 计数表 (asv_table.tsv)、分类注释表 (taxonomy.tsv)。results/shotgun/:MetaPhlAn4 物种丰度表 (merged_metaphlan_table.txt),HUMAnN3 通路丰度表 (pathabundance.tsv) 及基因家族丰度。results/diversity/:Alpha 多样性指标 CSV 文件,Beta 多样性距离矩阵,PCoA 坐标文件及可视化图 (pcoa_bray_curtis.pdf)。results/diff_abundance/:差异 ASV 分析结果表 (deseq2_results.csv),火山图 PDF。results/report/:最终 HTML 报告,集成关键图表和统计信息。
常见问题¶
Q1: 如何切换分析类型(仅运行扩增子或宏基因组)?¶
通过 config/config.yaml 的 analysis_type 选项即可控制。Snakemake 的规则会动态判断是否需要执行对应步骤。未启用的类型不会调用其依赖规则,也不要求对应的数据库路径。
Q2: 运行时报错“MissingInputException in rule ...”¶
这通常是由于样本表 samples.tsv 中指定的 FASTQ 文件路径不正确或文件不存在。请检查路径是否相对 Snakefile 所在目录正确,以及文件名是否与样本表完全匹配。对于双端测序,务必同时提供 fq1 和 fq2 两列。
Q3: DADA2 分析需要多少内存?¶
DADA2 错误模型学习步骤对内存要求较高,特别是样本量较大或数据深时。建议至少为每个核心分配 4-8 GB 内存。可通过 Snakemake 的 --resources mem_mb=... 限制内存使用,并在规则中指定 threads 和 mem_mb 参数。
Q4: 如何添加自定义 R 或 Python 脚本?¶
MicroSnake 的 scripts/ 目录包含各分析模块的脚本。您可以修改现有脚本,或新增脚本,并在对应的 .smk 规则文件中定义新规则。Snakemake 允许在 shell 或 script 指令中直接调用 R/Python。
Q5: 16S 和宏基因组数据同时分析时,物种名称是否统一?¶
扩增子分析使用 SILVA 分类体系,宏基因组分析使用 MetaPhlAn 自带的命名系统,两者在属水平可能不完全一致。工作流分别提供结果表格,未强制整合。如果需要比较,建议基于 NCBI taxonomy ID 或采用分类名称映射进行后续处理。
Q6: 基准测试中的模拟数据如何生成?¶
仓库的 tests/ 目录存放了合成数据和生成脚本,可用于流程测试和教学演示。用户可使用工具如 Grinder 或 InSilicoSeq 生成自定义模拟群落测序读段,替换到样本表中即可运行。
Q7: 输出图表可否自定义配色或格式?¶
是的,多样性图、火山图等由 scripts/ 中的 R 脚本绘制。您可以修改 scripts/diversity.R、scripts/differential_abundance.R 中的 ggplot2 主题、调色板、字体等,然后重新运行 Snakemake(它会自动检测脚本更改并重新执行相关规则)。
速查表¶
核心命令¶
| 任务 | 命令 |
|---|---|
| 克隆仓库 | git clone https://github.com/lenax04/microbiome-pipeline.git |
| 进入目录 | cd microbiome-pipeline |
| 运行工作流(4线程) | snakemake --use-conda --cores 4 |
| 强制执行所有步骤 | snakemake --use-conda --cores 4 -F |
| 生成 Snakemake 报告 | snakemake --report report.html |
| Docker 构建 | docker build -t microsnake . |
| Docker 运行 | docker run -v $(pwd):/app microsnake snakemake --cores 4 |
| 查看 Snakemake 执行计划 | snakemake -n --use-conda |
| 单独运行某个规则 | snakemake --use-conda --cores 4 <rule_name> |
| 删除所有输出文件 | snakemake --delete-all-output |
重要文件位置¶
| 文件 | 作用 |
|---|---|
config/config.yaml | 主配置文件 |
config/samples.tsv | 样本信息文件 |
envs/ | 各规则 Conda 环境定义 |
rules/qc.smk | 质控规则 |
rules/amplicon.smk | 扩增子分析规则 |
rules/shotgun.smk | 宏基因组分析规则 |
rules/diversity.smk | 多样性分析规则 |
rules/report.smk | 报告生成规则 |
scripts/ | R/Python 分析脚本 |
results/ | 默认输出目录 |
关键参数速查(config.yaml)¶
| 参数 | 说明 | 示例值 |
|---|---|---|
analysis_type.amplicon | 是否运行扩增子分析 | true / false |
analysis_type.shotgun | 是否运行宏基因组分析 | true / false |
references.silva | SILVA 训练集 FASTA | /db/silva_nr_v138_train.fa.gz |
references.silva_species | SILVA 物种比对文件 | /db/silva_species_assignment_v138.fa.gz |
qc.fastp.qualified_quality_phred | 最低质量值 | 20 |
qc.fastp.min_length | 最短保留长度 | 100 |
dada2.maxN | 允许的最大 N 碱基数 | 0 |
dada2.maxEE | 最大期望错误数 | 2 |
diversity.alpha_metrics | 计算的 Alpha 多样性指数 | [Shannon, Simpson, Chao1] |
diversity.beta_distance | Beta 多样性距离矩阵方法 | bray |
基准测试主要结果¶
该表可帮助新用户快速验证安装和配置是否正常。
| 指标 | 期望值 |
|---|---|
| 分析样本数 | 4 |
| ASV 数 (扩增子) | ~15 |
| 肠道 Shannon 指数 | ~2.31 |
| 皮肤 Shannon 指数 | ~2.13 |
| 组间 Bray-Curtis 距离 | ~0.85 |
| 显著差异 ASV 数 | ~12 |
| 肠道最富集属 | Prevotella (log₂FC > 5) |
| 皮肤最富集属 | Staphylococcus (log₂FC < -3) |
| 关键功能通路 (宏基因组) | 脂肪酸生物合成 |
通过运行仓库自带的测试数据集并核对上述指标,可以快速判断环境部署是否正确。
MicroSnake 将复杂的微生物组分析封装为可重复、可配置的现代工作流,大幅降低生物信息学门槛,同时保持分析过程的透明性与可追溯性。无论是作为科研工具、教学案例还是个人作品,它都提供了一套完整的解决方案。更多细节可参阅仓库中提供的论文草稿和引用文件。