摘要: 本项目提供了一套基于 nf-core/ampliseq 的元条形码(Metabarcoding)分析流程,支持三种遗传标记的扩增子分析:真菌的 ITS 内转录间隔区、原核生物的 16S rDNA 基因以及真核生物的 18S rDNA 基因。分析对象为通过 PCR 扩增并经 Illumina 平台测序所得的序列数据。
该流程整合了多个主流生物信息学工具,依次执行质量控制(FastQC)、引物去除(Cutadapt)、扩增子序列变体(ASV)推断(DADA2)、ITS 区域剪切(ITSx)、物种注释及多样性分析(QIIME2),并生成 MultiQC 汇总报告。
项目的核心目标是简化依赖项安装与参数配置,使用户无需手动配置复杂环境即可顺利运行分析。流程通过模块化脚本组织,涵盖依赖检查、样品表生成、环境验证及流程执行等步骤,同时支持本地运行和基于 SLURM 的高性能计算集群(HPC)两种部署模式,具备较强的可移植性与易用性,适合不同规模的微生物群落研究。
使用 nf-core/ampliseq 进行 Metabarcoding 扩增子分析¶
概述¶
Metabarcoding(元条形码)分析,也称为扩增子分析,是一种通过对 PCR 扩增产物进行高通量测序来研究微生物群落多样性的技术。该流程支持三类遗传标记:真菌的 ITS(Internal Transcribed Spacer,内转录间隔区)、原核生物的 16S rDNA 基因,以及真核生物的 18S rDNA 基因,测序平台为 Illumina。
本项目是对 nf-core/ampliseq(v2.17.0)的封装与适配,旨在解决依赖安装和参数配置问题,使用户无需手动安装几乎任何工具即可流畅运行分析。流程涵盖质量控制(FastQC)、引物去除(cutadapt)、ASV(Amplicon Sequence Variants,扩增子序列变体)推断(DADA2)、ITS 区域修剪(ITSx,仅限 ITS 模式)、物种分类注释和多样性分析(QIIME2),并生成 MultiQC 报告和汇总报告。
该项目同时支持本地运行(local)和高性能计算集群(HPC,基于 SLURM 调度)两种执行环境,适合个人工作站用户和科研机构集群用户。整个流程支持断点续跑,即使分析中途中断也可从断点继续,大幅降低计算资源浪费。
核心原理与功能¶
分析流程概览¶
本流程调用 nf-core/ampliseq 执行以下核心步骤:
- 质量控制:使用 FastQC 评估原始测序数据质量
- 引物去除:使用 cutadapt 从读段两端切除 PCR 引物序列
- ASV 推断:使用 DADA2 进行去噪(denoising)和精确序列变体推断,区别于传统的 OTU(Operational Taxonomic Unit,操作分类单元)聚类方法
- ITS 区域修剪:仅限 ITS 模式,使用 ITSx 提取目标 ITS 区域
- 物种分类注释:使用 DADA2 或 QIIME2 比对参考数据库进行物种注释
- 多样性分析:使用 QIIME2 计算 Alpha 多样性(群落内多样性)和 Beta 多样性(群落间差异),生成相对丰度表
- 报告生成:MultiQC 整合质量报告,summary_report 提供分析摘要
支持的遗传标记与参考数据库¶
| 标记 | 目标生物 | 默认参考数据库 | YAML 配置文件 |
|---|---|---|---|
| ITS | 真菌 | UNITE | marcador_its.yaml |
| 16S | 原核生物(细菌/古菌) | SILVA 138 | marcador_16s.yaml |
| 18S | 真核生物 | PR2 5.1.0 | marcador_18s.yaml |
重要注意事项: - UNITE 仅适用于 ITS 分析 - SILVA、GTDB 或 Greengenes 适用于 16S 分析 - 18S 可使用 PR2 或 SILVA,但 nf-core/ampliseq 中 DADA2 内置的 SILVA 版本针对细菌/古菌优化,不包含适合 Eukarya(真核域)的 18S 序列。若需在 18S 分析中使用 SILVA,应改用 QIIME2 分类器(QIIME2 版本的 SILVA 包含 18S 序列)
常用引物预设¶
ITS(真菌): - fITS7 / ITS4:扩增 ITS2 区域 - ITS1F / ITS2:扩增 ITS1 区域 - ITS3 / ITS4:扩增 ITS2 区域
16S(原核生物): - 515F / 806R:V4 区域 - 341F / 805R:V3-V4 区域 - 27F / 1492R:近全长
18S(真核生物): - TAReuk454FWD1 / TAReukREV3:V4 区域 - Euk1391F / EukBr:V9 区域
引物序列目录位于 configuracion/primers_its.tsv、configuracion/primers_16s.tsv 和 configuracion/primers_18s.tsv。
执行环境架构¶
本地模式(local): - 使用 Docker 作为容器引擎 - 资源限制定义于 configuracion/recursos_local.config - 已在配置 WSL + Docker Desktop 的笔记本电脑上测试通过
HPC 模式(hpc): - 使用 SLURM 作为作业调度器 - 资源、队列和节点配置定义于 configuracion/recursos_hpc.config - 以 OMICA(CICESE)HPC 为参考配置:主作业(job maestro)运行在 nodo5/nodo27/nodo28 之一,子作业(子任务)发送至 nodo27/nodo28 执行 - 主作业仅作为编排器(orchestrator),资源占用少,可与子任务共享节点
安装与使用¶
项目结构¶
metabarcoding_ampliseq/
├── README.md # 说明文档
├── configuracion/
│ ├── parametros.sh # 编辑此处设置流程参数
│ ├── recursos_local.config # 本地运行资源定义
│ ├── recursos_hpc.config # HPC 资源、队列和节点定义(含 SLURM)
│ ├── marcador_its.yaml # ITS(真菌)分析参数
│ ├── marcador_16s.yaml # 16S(原核生物)分析参数
│ ├── marcador_18s.yaml # 18S(真核生物)分析参数
│ ├── primers_its.tsv # ITS 标准引物目录
│ ├── primers_16s.tsv # 16S 标准引物目录
│ ├── primers_18s.tsv # 18S 标准引物目录
│ └── samplesheet.tsv # 由脚本 01 自动生成
├── scripts/
│ ├── 00_instalar_dependencias.sh # 检查并安装所有缺失依赖
│ ├── 01_generar_samplesheet.sh # 从 FASTQ 文件生成样品表
│ ├── 02_verificar_entorno.sh # 验证环境是否就绪
│ ├── 03_ejecutar_ampliseq.sh # 运行分析
│ ├── 04_resumen_tiempos.sh # 生成各进程耗时统计表
│ ├── lanzar_hpc.sh # HPC 主作业启动封装脚本
│ ├── lanzar_hpc.slurm # 主作业的 SLURM 脚本
│ ├── precargar_imagenes_docker_hpc.sh # 在 HPC nodo27/28 预加载 Docker 镜像
│ ├── precargar_imagenes_apptainer_hpc.sh # 在 LUSTRE 预加载 .sif 镜像
│ ├── descargar_datos_prueba.sh # 下载标准测试数据集
│ └── lib/ # 公共函数库(日志、环境、标记)
├── datos/crudos/ # 将 FASTQ 文件放在此处(.fastq.gz)
├── metadatos/
│ └── metadatos.tsv.ejemplo # QIIME2 元数据模板
├── resultados/<PROYECTO>/ # 分析结果,每个项目一个子目录
└── logs/<PROYECTO>/ # 每次运行的日志,按项目组织
标准运行步骤¶
# 第一步:安装必要依赖(Java 17、Nextflow 等),仅需运行一次
bash scripts/00_instalar_dependencias.sh
# 将 FASTQ 文件复制到 datos/crudos/ 目录下
# 第二步:根据 FASTQ 文件自动生成样品表(samplesheet)
bash scripts/01_generar_samplesheet.sh
# 第三步(可选):验证环境、安装和所有必要配置
bash scripts/02_verificar_entorno.sh
# 第四步 A:在本地运行完整分析
bash scripts/03_ejecutar_ampliseq.sh
# 第四步 B:在 HPC 上运行,使用封装脚本
bash scripts/lanzar_hpc.sh
干运行(查看命令但不执行):
生成进程耗时统计表:
在 HPC 上运行¶
HPC 模式下,除使用 lanzar_hpc.sh 外,还有以下选项:
# 方式一(推荐):使用封装脚本,自动选择有空闲资源的节点
bash scripts/lanzar_hpc.sh
# 方式二:直接用 sbatch 提交,主作业固定在 nodo5
sbatch scripts/lanzar_hpc.slurm
# 方式三:在 tmux 或 screen 中手动运行(不推荐)
bash scripts/03_ejecutar_ampliseq.sh
OMICA HPC 特殊配置(网络受限环境):
在 OMICA 环境中,通用互联网被屏蔽,但含 Docker 的节点(nodo5/nodo27/nodo28)可访问容器镜像仓库(quay.io)。运行前需完成以下准备:
# 步骤 1:拉取 pipeline(在有互联网的交互节点执行,脚本 00 会自动完成此步)
NXF_OFFLINE=false nextflow pull nf-core/ampliseq -r 2.17.0
# 步骤 2:预加载 Docker 镜像至每个节点(推荐,避免运行时逐次拉取)
bash scripts/precargar_imagenes_docker_hpc.sh
分类数据库如无法在线下载,需手动下载后写入对应 YAML 文件的 dada_ref_tax_custom 等字段(各 marcador_*.yaml 中已有注释说明)。
实战示例¶
示例一:使用测试数据集验证流程¶
# 下载 16S 配对端(paired-end)测试数据(使用 515F/806R 引物,V4 区域)
bash scripts/descargar_datos_prueba.sh 16s
# 下载 ITS 单端(single-end)测试数据(Illumina)
bash scripts/descargar_datos_prueba.sh its
# 下载 18S 测试数据(三个样本的小型数据集,来自 Patchett et al. 2024,
# BioProject PRJNA947667,大西洋鲑鱼鳃 18S 数据,需要 sra-toolkit)
bash scripts/descargar_datos_prueba.sh 18s
# 根据下载的标记类型调整参数后(脚本会提示),生成样品表并运行分析
bash scripts/01_generar_samplesheet.sh
bash scripts/03_ejecutar_ampliseq.sh
首次运行时,流程会自动下载物种分类参考数据库并缓存,后续运行直接使用缓存。
示例二:18S 分析改用 QIIME2 的 SILVA 数据库¶
当 18S 分析需要使用 SILVA 数据库时,需修改 configuracion/marcador_18s.yaml:
# 注释掉 DADA2 的 PR2 数据库配置
# dada_ref_taxonomy: "pr2=5.1.0"
# 改为启用 QIIME2 的 SILVA 数据库(包含 18S 真核序列)
qiime_ref_taxonomy: "silva=138"
示例三:调整各标记的分析参数¶
marcador_*.yaml 中的关键参数对照:
| 参数 | ITS | 16S | 18S |
|---|---|---|---|
FW_primer / RV_primer | 实验室引物序列 | 实验室引物序列 | 实验室引物序列 |
cut_its | its1、its2 或 full | 不适用 | 不适用 |
dada_ref_taxonomy | unite-fungi=10.0 | silva=138 | pr2=5.1.0 |
addsh | 启用 UNITE 物种假说 | 不适用 | 不适用 |
示例四:处理过多读段被过滤的情况¶
如果在质量过滤步骤中大量读段被丢弃,在 configuracion/parametros.sh 中添加:
若某个样本读段全部丢失导致流程中止:
常见问题¶
Q1:本地运行时 Docker 无响应,流程无法启动怎么办?
A:确保 Docker Desktop 已打开,并在设置中开启与 WSL 发行版的集成(Settings → Resources → WSL integration)。如果问题持续,可在 configuracion/parametros.sh 中将 MOTOR 改为 apptainer 或 conda 作为替代容器引擎。
Q2:HPC 上任务因 Docker 报错失败怎么排查?
A:确认任务被固定到安装了 Docker 的节点。检查 configuracion/recursos_hpc.config 中的 --nodelist=nodo27,nodo28 配置是否指向正确节点,如集群中 Docker 安装在其他节点,请相应修改。
Q3:本地运行时笔记本电脑内存耗尽或卡死怎么办?
A:在 configuracion/recursos_local.config 中降低 queueSize 的值(例如从 4 改为 2),减少并发任务数量。
Q4:分析中途中断后如何恢复?
A:直接重新运行脚本 03 即可。Nextflow 内置 -resume 标志,会自动从上次中断的位置继续,已完成的步骤不会重复执行。
Q5:HPC 上主作业无法启动怎么检查?
A:核查以下几点:parametros.sh 中 NODOS_MAESTRO 指定的节点确实存在且可用;账户名和分区名配置正确;目标节点上 conda 可用(加载对应模块或在 scripts/lanzar_hpc.slurm 中调整路径)。若 lanzar_hpc.sh 找不到空闲节点,它会自动将主作业提交到 CPU 空闲最多的节点。
总结¶
本项目为 nf-core/ampliseq 的封装适配方案,将真菌 ITS、原核生物 16S 和真核生物 18S 三类扩增子分析整合进统一流程,覆盖从原始 FASTQ 到 ASV 表、物种注释和多样性分析的完整链路。关键优势包括:依赖自动安装(Java 17、Nextflow 等)、参数按标记分 YAML 文件管理、同时支持本地和 SLURM HPC 两种执行环境、流程支持断点续跑。引物配置来自内置目录,物种分类数据库(UNITE/SILVA/PR2)可在线自动下载或指定本地路径。使用时按顺序运行 00 到 03 号脚本即可完成分析,HPC 用户使用 lanzar_hpc.sh 统一入口。结果输出至 resultados/<PROYECTO>/,包含 DADA2 ASV 表、QIIME2 多样性分析和 MultiQC 质量报告,pipeline_info/ 目录下还附有完整的引用列表(含版本号和 DOI)。
引用本流程: Castañeda-Martínez, R. (2026). metabarcoding ampliseq: uso de nf-core/ampliseq para realizar metabarcoding (v0.1.1). Zenodo. https://doi.org/10.5281/zenodo.20711275