variant-calling について
GATK4 のバリアントコールを支援する判断ロジックと注意事項をまとめたスキルです。生殖細胞系列・体細胞解析の設定やトラブル対応向けに、フィルタ選択、WESとWGSの差、よくある誤りを扱います。
主な機能
- 01コホート規模に応じたVQSRとハードフィルターの選択
- 02WESとWGSのパラメーター差の整理
- 03生殖細胞系列コール手順の要点確認
- 04Mutect2の体細胞コール入力の確認
- 05リファレンスとサンプルタグの不整合検出
活用シーン
- 01規模の異なるコホートのフィルター選択
- 02WESまたはWGS向けGATK4設定
- 03Mutect2の腫瘍コール設定のトラブル対応
インストール
コマンドをコピーしてターミナルで実行します。
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'を指定します 理由: GATK は実行を拒否するか、SM タグが誤っている場合にサンプルを通知なく統合します -
誤り: コホート解析で
-ERC GVCFを指定せずに HaplotypeCaller を実行する 正しい方法: ジョイントジェノタイピングを行う場合は、必ず 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 がないと、繰り返し発生するシーケンスアーティファクトが体細胞変異としてコールされます
回答形式
- 必要なコマンドまたはコードを最初に提示し、その後に説明します
- 次の構成にします:入力の確認 → 動作するコード → 重要なパラメーターの説明 → 注意点
- タスクごとに動作する完全な例を 1 つ提示し、すべての代替案は示しません
- コードコメントは最小限かつ実用的にし(存在理由ではなく、内容を説明します)
- 目安:コード 50~100 行と、簡潔な説明