资讯动态

nf-core/sarek 3.7.1 变异检测全流程实战:基于 Nextflow 的 WGS/WES Germline 与 Somatic 分析指南

发布时间:2026/9/12 18:20:43 来源:尧图企业网站定制
nf-core/sarek 3.7.1 变异检测全流程实战基于 Nextflow 的 WGS/WES Germline 与 Somatic 分析指南【免费下载链接】knowledge-work-pluginsOpen source repository of plugins primarily intended for knowledge workers to use in Claude Cowork项目地址: https://gitcode.com/GitHub_Trending/kn/knowledge-work-pluginsnf-core/sarek 是 nf-core 社区维护的高通量变异检测流程面向 WGS全基因组测序与 WES全外显子组测序数据统一封装了比对、质控、碱基质量值重校准BQSR、变异检测与功能注释的完整链路。本指南以当前仓库knowledge-work-plugins中 nextflow-development 技能对 sarek 3.7.1 的工程化封装为主线结合仓库内的 samplesheet 自动生成脚本、管线配置与校验工具系统讲解从环境验证、测试运行、样本表构建到变异检测模式选择的完整实战方案。读者完成后将掌握用一条条可复现的 Nextflow 命令完成胚系germline与体细胞somatic变异分析并能读懂、排查和分析 Sarek 的核心输出文件。Sarek 在 nextflow-development 技能中的定位nextflow-development技能面向缺少专业生信训练的科研人员目标是让跑大规模组学分析这件事变成可交互、可校验的标准化流程。其总体工作流分为六步获取数据GEO/SRA→ 环境检查 → 选择管线 → 测试运行 → 生成 samplesheet → 配置并运行 → 校验输出完整流程见 SKILL.md。在管线选择矩阵中Sarek 3.7.1 被指定用于WGS/WES 变异检测场景数据类型管线版本目标RNA-seqrnaseq3.22.2基因表达WGS/WESsarek3.7.1变异检测ATAC-seqatacseq2.1.2染色质开放性该定位与 Sarek 管线的配置元数据一致在 sarek.yaml 中声明了WGS、WES、tumor-normal、germline、somatic等数据类型并定义了 filename / directory 两级检测线索如tumor、normal、germline、exome、variant供 detect_data_type.py 在自动识别数据时使用。版本锁定提示本指南所有命令均以 sarek3.7.1为准。升级新版本前务必查阅其 releases 页面确认 breaking changes并同步更新本文所有命令中的-r版本号同时更新 sarek.yaml 中的version字段及文档链接。第一步测试命令验证环境任何真实数据运行之前先跑官方 test profile 验证环境。该命令下载小规模测试数据验证 Docker/Nextflow/Java 环境与网络连通性nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek预期耗时约 20 分钟产出对齐后的 BAM 与变异调用VCF文件。运行结束后按 SKILL.md 的 Step 3 约定完成两项校验ls test_sarek/multiqc/multiqc_report.html grep Pipeline completed successfully .nextflow.logsarek.yaml中的test_profile配置同样把test_sarek/multiqc/multiqc_report.html与日志中的Pipeline completed successfully作为成功判定标准。测试失败时排查思路见 troubleshooting.md常见退出码 137/143/104/134/139/247 均为内存不足通过提高--max_memory解决容器拉取失败可改用-profile singularity或离线方案nf-core download sarek -r 3.7.1。Samplesheet 格式Sarek 的三种输入范式Sarek 支持 FASTQ、BAM、CRAM 三种输入分别对应从原始测序读段开始或从已有比对结果开始的两类场景。从 FASTQ 开始多 lane 测序数据按patient/sample/lane拆行同一 lane 一对 R1/R2patient,sample,lane,fastq_1,fastq_2 patient1,tumor,L001,/path/to/tumor_L001_R1.fq.gz,/path/to/tumor_L001_R2.fq.gz patient1,tumor,L002,/path/to/tumor_L002_R1.fq.gz,/path/to/tumor_L002_R2.fq.gz patient1,normal,L001,/path/to/normal_R1.fq.gz,/path/to/normal_R2.fq.gz从 BAM/CRAM 开始已有比对结果时直接提供 BAM 与其索引patient,sample,bam,bai patient1,tumor,/path/to/tumor.bam,/path/to/tumor.bam.bai patient1,normal,/path/to/normal.bam,/path/to/normal.bam.bai带 tumor/normal 状态status列是体细胞分析的核心0 normal1 tumorpatient,sample,lane,fastq_1,fastq_2,status patient1,tumor,L001,tumor_R1.fq.gz,tumor_R2.fq.gz,1 patient1,normal,L001,normal_R1.fq.gz,normal_R2.fq.gz,0用仓库脚本自动生成与校验 samplesheet手工编辑多行 CSV 容易出错仓库提供了基于管线配置驱动的自动生成器 generate_samplesheet.py# 从 FASTQ 目录自动生成自动配对 R1/R2、推断 patient/lane、提示 tumor/normal 状态 python scripts/generate_samplesheet.py /path/to/data sarek -o samplesheet.csv # 从 BAM 目录生成 python scripts/generate_samplesheet.py /path/to/bams sarek --input-type bam # 校验已有 samplesheet python scripts/generate_samplesheet.py --validate samplesheet.csv sarek该脚本的列定义完全来自 sarek.yaml 的samplesheet.columns配置patient/sample/fastq_1/fastq_2/bam/bai为必填列lane默认L001status仅允许 0/1、默认 0。底层逻辑值得关注R1/R2 配对sample_inference.py中的 match_read_pairs 使用带优先级的正则评分系统如_R1_001权重 10、_1.权重 5按 lane 聚合样本键后再配对tumor/normal 推断infer_tumor_normal_status 依据tumor/tumour/metastasis/cancer等肿瘤关键词与normal/germline/blood/pbmc/control等正常关键词自动判断状态无法判断时脚本会交互式询问0或1非交互模式默认按 normal 处理写出前校验validators.py的 validate_samplesheet 会检查必填列、路径是否存在、枚举值合法性、R1/R2 配对一致性并对 sarek 执行 _validate_sarek_specific若某患者只有 tumor 样本而没有 matched normal会给出体细胞分析最好配对正常样本的警告与建议。所有路径务必使用绝对路径这是 nf-core 管线的硬性要求也是no such file类报错的最常见来源。变异检测模式四种典型运行方式Sarek 的核心设计是一个管线、多套工具组合。按照 sarek.yaml 的decision_points工具选择由数据是否有 tumor/normal 对决定。胚系变异单样本正常样本的遗传变异检测使用 GATK HaplotypeCaller 加 SnpEff 注释nextflow run nf-core/sarek -r 3.7.1 -profile docker \ --input samplesheet.csv --outdir results --genome GRCh38 \ --tools haplotypecaller,snpeff体细胞变异tumor-normal 配对肿瘤样本需匹配正常样本以过滤胚系污染使用 Mutect2 与 Strelka2 双工具交叉验证nextflow run nf-core/sarek -r 3.7.1 -profile docker \ --input samplesheet.csv --outdir results --genome GRCh38 \ --tools mutect2,strelka,snpeffWES 外显子模式外显子捕获数据必须指定--wes并给出目标区域 BED 文件避免对非目标区域浪费计算nextflow run nf-core/sarek -r 3.7.1 -profile docker \ --input samplesheet.csv --outdir results --genome GRCh38 \ --wes --intervals /path/to/targets.bed \ --tools haplotypecaller,snpeffsarek.yaml中为 WES 单独定义了wes_template运行模板含--wes与--intervals两个占位符并要求用户必须提供 intervals BED 文件。群体联合胚系分析Joint germline对队列cohort数据做联合基因分型先在 gVCF 层面合并再一起调用比逐样本独立 calling 对低频变异的灵敏度更高--tools haplotypecaller --joint_germline工具矩阵Sarek 支持的变异检测器--tools是逗号分隔的工具列表按用途分为四类类别工具说明胚系 callerhaplotypecallerGATK HaplotypeCallersarek 默认推荐freebayesFreeBayes贝叶斯方法deepvariantDeepVariant深度学习可选 GPU 加速strelkaStrelka2 胚系模式体细胞 callermutect2GATK Mutect2需要 matched normalstrelkaStrelka2 体细胞模式manta结构变异SV检测CNV callerascat拷贝数分析Allele-Specific Copy numbercontrolfreecCNV 检测tidditSV 调用注释snpeffSnpEff 功能注释vepEnsembl VEP 注释从 sarek.yaml 的决策点配置可以看到仓库为不同场景预置了推荐组合胚系默认haplotypecaller,snpeff检测到 tumor-normal 对时推荐mutect2,strelka,snpeff需要高精度胚系 calling 且具备 GPU 时可选haplotypecaller,deepvariant,snpeff需要覆盖结构变异的综合肿瘤分析则选mutect2,manta,snpeff。关键参数速查参数默认值说明--tools-逗号分隔的工具列表见上文工具矩阵--genome-iGenomes 参考基因组 keyGRCh38、GRCh37也支持 mm10 等--wesfalse外显子模式开启后必须配合--intervals--intervals-靶向区域 BED 文件--joint_germlinefalse队列联合基因分型--skip_bqsrfalse跳过碱基质量值重校准BQSR配套的通用运行参数来自 SKILL.md 的 Step 5# 资源上限防止单任务过度占用节点 --max_cpus 8 --max_memory 32.GB --max_time 24.h基因组参考的选择与准备--genome使用的是 iGenomes key。运行前建议用仓库的 manage_genomes.py 检查并下载参考python scripts/manage_genomes.py check GRCh38 python scripts/manage_genomes.py download GRCh38 python scripts/manage_genomes.py params GRCh38 # 输出 --fasta/--gtf 或 --genome 参数该脚本内置了 GRCh38、GRCh37、GRCm39/GRCm38小鼠、R64-1-1酵母、BDGP6果蝇等十余个物种的 iGenomes 元数据别名解析如hg38 → GRCh38也一并支持缓存目录可通过环境变量NF_CORE_GENOME_CACHE覆盖默认~/.nf-core/genomes。若本地已安装参考文件params命令会输出--fasta/--gtf具体路径否则回退为--genome id让管线按需下载。输出文件结构运行结束后在--outdir指定的目录下核心产物按模块分层results/ ├── preprocessing/ │ └── recalibrated/ # Analysis-ready BAMs │ └── *.recal.bam ├── variant_calling/ │ ├── haplotypecaller/ # Germline VCFs │ ├── mutect2/ # Somatic VCFs (filtered) │ └── strelka/ ├── annotation/ │ └── snpeff/ # Annotated VCFs └── multiqc/各产物的用途与校验点对应 sarek.yaml 的outputs配置preprocessing/recalibrated/*.recal.bam经过 BQSR 的 analysis-ready BAM可直接用于下游分析variant_calling/*/*.vcf.gz各 caller 的原始 VCFMutect2 目录下为过滤后结果annotation/snpeff/*.ann.vcf.gzSnpEff 功能注释后的变异文件multiqc/multiqc_report.html全流程 QC 汇总报告是完成性校验的必查文件。验证运行是否成功ls results/multiqc/multiqc_report.html grep Pipeline completed successfully .nextflow.log常见问题排查BQSR 失败BQSR 需要参考基因组对应的已知位点known sites文件非标准参考基因组往往缺失该文件导致步骤失败。处理方式确认当前--genome是否有 known sites非标准参考直接用--skip_bqsr跳过重校准。Mutect2 无变异输出最常见原因是 samplesheet 中 tumor/normal 配对错误。检查每行的status列0 normal1 tumor确认每个 tumor 样本都对应了匹配的 normal 样本。仓库的_validate_sarek_specific校验会提前对这类问题给出警告建议在运行前就用--validate检查一遍。WGS 内存不足全基因组比对与变异检测对内存需求极大进程被 OOM 杀掉退出码 137/143时--max_memory 128.GB --max_cpus 16单样本常规分析可降至--max_memory 32.GB/64.GB小数据测试用16.GB起步即可。更系统的资源建议见 sarek.yaml 的resources段最小内存 16 GB、推荐 64 GB、WGS 128 GB推荐 CPU 16 核、磁盘预留 500 GB。DeepVariant GPU 不可用DeepVariant 的深度学习模型在 GPU 上运行最快若未配置 NVIDIA Docker runtime 会报错。确认方式检查 Docker 是否配置了 NVIDIA GPU runtime无法使用 GPU 时可退回 CPU 模式更慢但可用。断点续跑任何中途失败都可以利用 Nextflow 的缓存机制续跑已完成的步骤不会重算nextflow run nf-core/sarek -r 3.7.1 ... -resume若缓存被破坏需强制重来则需清理work/目录与.nextflow*缓存文件后重新运行详见 troubleshooting.md。参考资源管线完整参数列表、输出文档与使用文档见 sarek.yaml 中urls段对应的 nf-core 官方链接姊妹管线说明rnaseq.mdRNA-seq、atacseq.mdATAC-seq公共数据获取geo-sra-acquisition.md环境安装与通用排错installation.md、troubleshooting.md声明本技能为教学与科研用途的示例实现用于将 nf-core 生信管线集成进自动化分析工作流投入生产前请针对自身场景进行充分验证并遵循生信分析的常规质控规范对结果做独立核验。发表成果时请按各 nf-core 仓库CITATIONS.md中的要求引用相应管线。【免费下载链接】knowledge-work-pluginsOpen source repository of plugins primarily intended for knowledge workers to use in Claude Cowork项目地址: https://gitcode.com/GitHub_Trending/kn/knowledge-work-plugins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价