跳转至

摘要: 本项目提供了一套基于 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 执行以下核心步骤:

  1. 质量控制:使用 FastQC 评估原始测序数据质量
  2. 引物去除:使用 cutadapt 从读段两端切除 PCR 引物序列
  3. ASV 推断:使用 DADA2 进行去噪(denoising)和精确序列变体推断,区别于传统的 OTU(Operational Taxonomic Unit,操作分类单元)聚类方法
  4. ITS 区域修剪:仅限 ITS 模式,使用 ITSx 提取目标 ITS 区域
  5. 物种分类注释:使用 DADA2 或 QIIME2 比对参考数据库进行物种注释
  6. 多样性分析:使用 QIIME2 计算 Alpha 多样性(群落内多样性)和 Beta 多样性(群落间差异),生成相对丰度表
  7. 报告生成:MultiQC 整合质量报告,summary_report 提供分析摘要

支持的遗传标记与参考数据库

标记目标生物默认参考数据库YAML 配置文件
ITS真菌UNITEmarcador_its.yaml
16S原核生物(细菌/古菌)SILVA 138marcador_16s.yaml
18S真核生物PR2 5.1.0marcador_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.tsvconfiguracion/primers_16s.tsvconfiguracion/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

干运行(查看命令但不执行):

# 预览将执行的命令,不实际运行
bash scripts/03_ejecutar_ampliseq.sh --dry-run

生成进程耗时统计表:

# 使用最新的 Nextflow trace 文件计算各任务耗时、CPU 峰值和内存峰值
bash scripts/04_resumen_tiempos.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 中的关键参数对照:

参数ITS16S18S
FW_primer / RV_primer实验室引物序列实验室引物序列实验室引物序列
cut_itsits1its2full不适用不适用
dada_ref_taxonomyunite-fungi=10.0silva=138pr2=5.1.0
addsh启用 UNITE 物种假说不适用不适用

示例四:处理过多读段被过滤的情况

如果在质量过滤步骤中大量读段被丢弃,在 configuracion/parametros.sh 中添加:

# 降低质量截断阈值(默认较高),逐步调整直到找到适合的值
EXTRA_PARAMS="--truncq 4"

若某个样本读段全部丢失导致流程中止:

# 忽略修剪失败的样本,继续运行
EXTRA_PARAMS="--ignore_failed_trimming"

常见问题

Q1:本地运行时 Docker 无响应,流程无法启动怎么办?

A:确保 Docker Desktop 已打开,并在设置中开启与 WSL 发行版的集成(Settings → Resources → WSL integration)。如果问题持续,可在 configuracion/parametros.sh 中将 MOTOR 改为 apptainerconda 作为替代容器引擎。


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.shNODOS_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)可在线自动下载或指定本地路径。使用时按顺序运行 0003 号脚本即可完成分析,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