关于 variant-calling
为 GATK4 变异检测任务提供决策逻辑和操作注意事项,面向配置和排查生殖系及体细胞变异分析流程的用户。内容涵盖过滤策略、WES 与 WGS 参数差异及常见错误。
主要功能
- 01按队列规模选择 VQSR 或硬过滤
- 02区分 WES 与 WGS 参数
- 03提供 GATK4 生殖系调用流程要点
- 04列出 Mutect2 肿瘤变异调用要求
- 05提示参考基因组和样本标记问题
适用场景
- 01为不同规模队列选择变异过滤方法
- 02配置 WES 或 WGS 的 GATK4 流程
- 03排查 Mutect2 肿瘤样本调用设置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ awslabs/ hcls-agent-skills --skill variant-calling安装后在 Claude Code 中输入/variant-calling确认已加载。
附带文件scripts/filter_by_acmg.pyscripts/run_germline_pipeline.sh
详细介绍
变异检测(GATK4)——流水线技能(精简框架)
概述
补充 VQSR 与硬过滤的选择逻辑、WES 与 WGS 的参数差异,以及 LLM 经常弄错的 GATK4 特有注意事项(过滤阈值、GVCF 要求、参考文件一致性)。
用法
- 为特定队列规模选择 VQSR 还是硬过滤时启用
- 设置 WES 与 WGS 流水线参数时启用
- 运行 Mutect2 肿瘤/正常或仅肿瘤体细胞变异检测时启用
核心概念
决策逻辑
Germline calling strategy:
├── Single sample, no future joint calling → HaplotypeCaller direct VCF
└── Cohort (≥2 samples) → HaplotypeCaller -ERC GVCF → GenomicsDBImport → GenotypeGVCFs
Filtering strategy:
├── ≥30 WGS samples OR ≥30 WES exomes → VQSR
└── <30 samples OR single sample → Hard filters
Somatic calling:
├── Tumor + matched normal → Mutect2 with both BAMs
└── Tumor-only → Mutect2 + PoN (MANDATORY) + gnomAD germline resource
WES 与 WGS 的参数差异:
| 步骤 | WGS | WES |
|---|---|---|
| BQSR / HaplotypeCaller | 不使用 -L | -L capture.bed -ip 100 |
| BQSR 的已知位点 | 全基因组 | 全基因组(不要进行子集筛选) |
| 过滤 | VQSR(≥30 个样本) | 硬过滤,除非有 ≥30 个外显子组 |
| 联合分型区间 | 按染色体 | -L capture.bed |
关键参数
硬过滤阈值(GATK 最佳实践):
| 过滤项 | SNP 阈值 | Indel 阈值 |
|---|---|---|
| QD | < 2.0 | < 2.0 |
| FS | > 60.0 | > 200.0 |
| MQ | < 40.0 | — |
| MQRankSum | < -12.5 | — |
| ReadPosRankSum | < -8.0 | < -20.0 |
| SOR | > 3.0 | > 10.0 |
VQSR 真值敏感度级别:
- SNP:99.7
- Indel:99.0
- Indel 使用
--max-gaussians 4(训练变异比 SNP 少)
VQSR 注释: -an QD -an FS -an MQ -an MQRankSum -an ReadPosRankSum -an SOR
Mutect2 要点:
--germline-resource af-only-gnomad.hg38.vcf.gz--panel-of-normals pon.vcf.gz(仅肿瘤分析必需)--f1r2-tar-gz→LearnReadOrientationModel(FFPE/OxoG 伪影)- 在
FilterMutectCalls之前运行GetPileupSummaries+CalculateContamination
常见错误
-
错误: 未使用正确的
@RG标头进行比对(缺少 ID、SM、PL、LB) 正确做法: 比对时始终指定:-R '@RG\tID:x\tSM:x\tPL:ILLUMINA\tLB:x'原因: SM 标签不正确时,GATK 会拒绝运行或静默合并样本 -
错误: 队列分析中运行 HaplotypeCaller 时未使用
-ERC GVCF正确做法: 将进行联合分型时,始终生成 GVCF 原因: 常规 VCF 无法进行联合分型;必须从 BAM 重新调用 -
错误: 将 SNP 硬过滤阈值用于 Indel(例如,Indel 使用
FS > 60) 正确做法: Indel 使用FS > 200,SNP 使用FS > 60原因: Indel 对链偏倚的容忍度更高;SNP 阈值会过度过滤真实 Indel -
错误: 对少于 30 个样本使用 VQSR 正确做法: 小型队列使用硬过滤 原因: VQSR 需要大量变异来训练高斯混合模型
-
错误: 为 BQSR 将
--known-sitesVCF 限定为 WES 捕获 BED 正确做法: 使用全基因组已知位点;仅通过-L限制分析区间 原因: BQSR 需要全基因组已知位点来对碱基质量错误建模 -
错误: 在 GATK 步骤之间跳过
samtools index正确做法: 每个生成 BAM 的步骤之后都建立索引 原因: GATK 需要 BAM 索引;缺少索引会导致立即失败 -
错误: 混用来自不同基因组版本的参考文件 正确做法: 确保 ref.dict、ref.fa.fai、BWA 索引和所有 VCF 使用相同版本 原因: 字典不匹配会导致静默失败或难以理解的错误
-
错误: 仅肿瘤分析运行 Mutect2 时未使用正常样本面板 正确做法: 仅肿瘤变异检测始终提供
--panel-of-normals原因: 没有 PoN 时,反复出现的测序伪影会被判定为体细胞突变
响应格式
- 先给出用户需要的命令或代码,再进行解释
- 按以下结构组织:确认输入 → 可运行代码 → 关键参数说明 → 注意事项
- 每项任务提供一个完整可运行的示例;不要展示所有替代方案
- 代码注释应简短且实用(说明用途,而非存在原因)
- 目标:50–100 行代码,并配以简短说明