mcpField
V
variant-calling

variant-calling

github.com/awslabs数据与数据库6877 次安装4 周前更新
代码仓库

关于 variant-calling

为 GATK4 变异检测任务提供决策逻辑和操作注意事项,面向配置和排查生殖系及体细胞变异分析流程的用户。内容涵盖过滤策略、WES 与 WGS 参数差异及常见错误。

主要功能

  1. 01按队列规模选择 VQSR 或硬过滤
  2. 02区分 WES 与 WGS 参数
  3. 03提供 GATK4 生殖系调用流程要点
  4. 04列出 Mutect2 肿瘤变异调用要求
  5. 05提示参考基因组和样本标记问题

适用场景

  1. 01为不同规模队列选择变异过滤方法
  2. 02配置 WES 或 WGS 的 GATK4 流程
  3. 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 的参数差异:

步骤WGSWES
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-sites VCF 限定为 WES 捕获 BED 正确做法: 使用全基因组已知位点;仅通过 -L 限制分析区间 原因: BQSR 需要全基因组已知位点来对碱基质量错误建模

  • 错误: 在 GATK 步骤之间跳过 samtools index 正确做法: 每个生成 BAM 的步骤之后都建立索引 原因: GATK 需要 BAM 索引;缺少索引会导致立即失败

  • 错误: 混用来自不同基因组版本的参考文件 正确做法: 确保 ref.dict、ref.fa.fai、BWA 索引和所有 VCF 使用相同版本 原因: 字典不匹配会导致静默失败或难以理解的错误

  • 错误: 仅肿瘤分析运行 Mutect2 时未使用正常样本面板 正确做法: 仅肿瘤变异检测始终提供 --panel-of-normals 原因: 没有 PoN 时,反复出现的测序伪影会被判定为体细胞突变

响应格式

  • 先给出用户需要的命令或代码,再进行解释
  • 按以下结构组织:确认输入 → 可运行代码 → 关键参数说明 → 注意事项
  • 每项任务提供一个完整可运行的示例;不要展示所有替代方案
  • 代码注释应简短且实用(说明用途,而非存在原因)
  • 目标:50–100 行代码,并配以简短说明

评论

支持 Markdown