跳转至

MicroSnake:可重复的微生物组分析工作流

概述

MicroSnake 是一个基于 Snakemake 构建的可重复生物信息学工作流,专为微生物组数据的标准化分析而设计。该工作流同时支持 16S rRNA 扩增子测序鸟枪法宏基因组 两种主流技术路线,能够在一个统一的配置文件中完成从原始序列到物种组成、功能通路丰度、以及生态多样性统计的全部分析,并自动生成发表级别的图表与综合 HTML 报告。

作为系列高质量生物信息学工具中的第三个项目,MicroSnake 兼具多项功能:它既是面向期刊投稿的科学工作流实现,也是专业 GitHub 作品集的一部分,同时可用作实习或博士申请中的生信能力展示,还可通过 DOI 进行学术引用。整个工作流在 MIT 许可证下开源,配有持续集成测试、Docker 容器化支持以及 Conda 环境锁定,确保分析的可重复性和跨平台一致性。

项目描述
rnaseq-toolkitRNA-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

克隆仓库并进入目录:

git clone https://github.com/lenax04/microbiome-pipeline.git
cd microbiome-pipeline

2. 配置工作流

编辑样本表 config/samples.tsv,格式如下,每一行代表一个样本,至少包含 samplegroup 和 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 环境)

# --use-conda 使每个规则自动创建并激活对应的 Conda 环境
# --cores 指定并行使用的 CPU 核心数
snakemake --use-conda --cores 4

首次运行会构建 Conda 环境,耗时可能较长。之后仅执行任务图中需要更新的步骤。若要强制执行全部步骤,可添加 -F 参数:

snakemake --use-conda --cores 4 -F

生成运行报告

流程完成后,Snakemake 可自动生成分析过程的汇总报告:

snakemake --report report.html

此报告包含使用的规则、输入输出文件列表、运行统计等,对审计和分享有益。

使用 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.yamlanalysis_type 选项即可控制。Snakemake 的规则会动态判断是否需要执行对应步骤。未启用的类型不会调用其依赖规则,也不要求对应的数据库路径。

Q2: 运行时报错“MissingInputException in rule ...”

这通常是由于样本表 samples.tsv 中指定的 FASTQ 文件路径不正确或文件不存在。请检查路径是否相对 Snakefile 所在目录正确,以及文件名是否与样本表完全匹配。对于双端测序,务必同时提供 fq1fq2 两列。

Q3: DADA2 分析需要多少内存?

DADA2 错误模型学习步骤对内存要求较高,特别是样本量较大或数据深时。建议至少为每个核心分配 4-8 GB 内存。可通过 Snakemake 的 --resources mem_mb=... 限制内存使用,并在规则中指定 threadsmem_mb 参数。

Q4: 如何添加自定义 R 或 Python 脚本?

MicroSnake 的 scripts/ 目录包含各分析模块的脚本。您可以修改现有脚本,或新增脚本,并在对应的 .smk 规则文件中定义新规则。Snakemake 允许在 shellscript 指令中直接调用 R/Python。

Q5: 16S 和宏基因组数据同时分析时,物种名称是否统一?

扩增子分析使用 SILVA 分类体系,宏基因组分析使用 MetaPhlAn 自带的命名系统,两者在属水平可能不完全一致。工作流分别提供结果表格,未强制整合。如果需要比较,建议基于 NCBI taxonomy ID 或采用分类名称映射进行后续处理。

Q6: 基准测试中的模拟数据如何生成?

仓库的 tests/ 目录存放了合成数据和生成脚本,可用于流程测试和教学演示。用户可使用工具如 Grinder 或 InSilicoSeq 生成自定义模拟群落测序读段,替换到样本表中即可运行。

Q7: 输出图表可否自定义配色或格式?

是的,多样性图、火山图等由 scripts/ 中的 R 脚本绘制。您可以修改 scripts/diversity.Rscripts/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.silvaSILVA 训练集 FASTA/db/silva_nr_v138_train.fa.gz
references.silva_speciesSILVA 物种比对文件/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_distanceBeta 多样性距离矩阵方法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 将复杂的微生物组分析封装为可重复、可配置的现代工作流,大幅降低生物信息学门槛,同时保持分析过程的透明性与可追溯性。无论是作为科研工具、教学案例还是个人作品,它都提供了一套完整的解决方案。更多细节可参阅仓库中提供的论文草稿和引用文件。