GATK Reference
GATK HaplotypeCaller/Mutect2/BQSR 파이프라인 레퍼런스
GATK Reference 소개
GATK 레퍼런스는 고처리량 시퀀싱 데이터에서 변이를 발견하기 위한 업계 표준 소프트웨어인 Genome Analysis Toolkit(GATK)의 종합 명령줄 치트 시트입니다. 변이 탐지(HaplotypeCaller, Mutect2, FilterMutectCalls, GenotypeGVCFs, GenomicsDBImport), BQSR(BaseRecalibrator, ApplyBQSR, AnalyzeCovariates), 전처리(MarkDuplicates, MarkDuplicatesSpark, SplitNCigarReads, AddOrReplaceReadGroups), 필터링, 유틸리티, 파이프라인, 공통 인자의 7개 카테고리로 구성된 모든 필수 GATK 도구를 다룹니다.
각 도구 항목은 모든 주요 플래그, 입출력 파일 지정, 실용적 사용 패턴을 포함한 완전한 명령줄 구문을 제공합니다. 변이 탐지 섹션에서는 germline(GenomicsDBImport를 통한 joint genotyping과 GVCF 모드 HaplotypeCaller)과 somatic(종양-정상 쌍 Mutect2, Panel of Normals, FilterMutectCalls) 워크플로를 모두 다룹니다. 필터링 섹션에서는 하드 필터링(QD, FS, MQ, SOR 임계값의 VariantFiltration)과 HapMap, Omni, 1000G, dbSNP 학습 자원을 사용하는 머신러닝 기반 VQSR을 문서화합니다.
레퍼런스에는 3가지 완전한 베스트 프랙티스 파이프라인이 포함됩니다: Germline 변이 탐지(BWA-MEM2 정렬, MarkDuplicates, BQSR, HaplotypeCaller GVCF, joint genotyping), Somatic 변이 탐지(Panel of Normals 생성, Mutect2, LearnReadOrientationModel, FilterMutectCalls), RNA-seq 변이 탐지(STAR 2-pass 정렬, SplitNCigarReads, BQSR, HaplotypeCaller). VCF 주석 필드(QD, FS, SOR, MQ, GT, AD, DP, GQ, PL)도 명확한 설명과 함께 문서화되어 있습니다.
주요 기능
- 단일 샘플 및 GVCF 모드에서의 germline SNP/Indel 탐지를 위한 완전한 HaplotypeCaller 명령어
- 종양-정상 쌍 분석, 종양 단독 모드, germline 리소스, Panel of Normals 통합이 포함된 Mutect2 체세포 변이 탐지
- 전체 BQSR 워크플로: known-sites(dbSNP, Mills, 1000G)를 사용한 BaseRecalibrator, 정적 양자화 ApplyBQSR, AnalyzeCovariates 비교 플롯
- SNP/Indel용 QD/FS/MQ/SOR 임계값 하드 필터링(VariantFiltration)과 학습 자원 및 tranches를 사용한 VQSR 모두 문서화
- 샘플 맵 파일을 이용한 다중 샘플 GVCF 통합 GenomicsDBImport와 joint genotyping GenotypeGVCFs
- 전처리 도구: MarkDuplicates/MarkDuplicatesSpark, RNA-seq용 SplitNCigarReads, @RG 태그 설명이 포함된 AddOrReplaceReadGroups
- Germline, Somatic, RNA-seq 변이 탐지를 위한 3가지 완전한 베스트 프랙티스 파이프라인(단계별 명령어)
- VCF INFO/FORMAT 필드 참조: QD, FS, SOR, MQ, MQRankSum, ReadPosRankSum, GT, AD, DP, GQ, PL과 예제 레코드
자주 묻는 질문
HaplotypeCaller와 Mutect2의 차이점은 무엇인가요?
HaplotypeCaller는 germline 변이 탐지용으로 샘플 게놈에 존재하는 유전된 SNP와 Indel을 검출합니다. Mutect2는 somatic 변이 탐지용으로 정상 조직에는 없고 종양 세포에서 획득된 돌연변이를 검출합니다. HaplotypeCaller는 다수 샘플의 확장 가능한 joint genotyping을 위한 GVCF 모드를 지원하고, Mutect2는 Panel of Normals와 오염 추정이 가능한 종양-정상 쌍 분석을 지원합니다.
BQSR이란 무엇이며 왜 필요한가요?
Base Quality Score Recalibration(BQSR)은 시퀀싱 장비가 할당한 품질 점수의 체계적 오류를 보정합니다. BaseRecalibrator가 알려진 변이 사이트(dbSNP, Mills indels, 1000G SNPs)를 사용하여 오류 패턴을 학습한 재보정 모델을 만들고, ApplyBQSR이 보정된 품질 점수로 새 BAM을 생성합니다. 품질 점수가 실제 시퀀싱 오류 확률을 정확히 반영하도록 하여 변이 탐지 정확도를 향상시킵니다.
하드 필터링과 VQSR 중 언제 어떤 것을 사용해야 하나요?
VQSR은 전체 게놈 및 대규모 전체 엑솜 데이터셋에 권장됩니다. 알려진 변이 학습 자원(HapMap, Omni, 1000G, dbSNP)을 사용해 머신러닝으로 진짜 변이의 프로필을 학습합니다. 하드 필터링(VariantFiltration)은 소규모 타겟 패널이나 단일 유전자 연구처럼 VQSR이 신뢰할 수 있는 모델을 구축하기에 변이 수가 너무 적을 때 권장됩니다. 레퍼런스에 SNP과 Indel 하드 필터 임계값이 모두 포함되어 있습니다.
GVCF joint genotyping 워크플로는 어떻게 작동하나요?
먼저 각 샘플에 대해 HaplotypeCaller를 GVCF 모드(-ERC GVCF)로 개별 실행하여 참조 신뢰도 블록이 포함된 샘플별 GVCF 파일을 생성합니다. 그 다음 GenomicsDBImport가 모든 GVCF를 GenomicsDB 워크스페이스로 통합합니다. 마지막으로 GenotypeGVCFs가 모든 샘플에 대해 동시에 joint genotyping을 수행합니다. 기존 샘플을 재처리하지 않고 새 샘플을 추가할 수 있어 확장성이 뛰어납니다.
핵심 VCF 주석 필드는 무엇인가요?
주요 INFO 필드: QD(깊이 대비 품질), FS(피셔 가닥 편향), SOR(가닥 오즈비), MQ(매핑 품질), MQRankSum과 ReadPosRankSum(순위합 검정). 주요 FORMAT 필드: GT(유전자형: 0/0, 0/1, 1/1), AD(참조/대립유전자 깊이), DP(리드 깊이), GQ(유전자형 품질), PL(Phred 스케일 유전자형 가능도). 이 주석들은 하드 필터링과 VQSR 모두에서 사용됩니다.
RNA-seq 데이터에서 GATK로 변이를 어떻게 탐지하나요?
RNA-seq 변이 탐지 파이프라인은 전처리 단계에서 DNA-seq와 다릅니다: 1) BWA-MEM2 대신 STAR 2-pass 정렬, 2) MarkDuplicates 실행, 3) N-in-CIGAR 스플라이스 접합부 리드를 처리하는 SplitNCigarReads 실행, 4) BQSR 수행, 5) HaplotypeCaller 실행. SplitNCigarReads가 인트론을 가로지르는 리드를 별도 보충 정렬로 분할하는 RNA-seq 전용 핵심 단계입니다.
Panel of Normals란 무엇이며 언제 사용하나요?
Panel of Normals(PoN)는 여러 정상(비종양) 샘플에 대한 Mutect2 호출로 생성된 VCF입니다. 반복적인 기술적 아티팩트와 germline 변이를 포착합니다. 체세포 호출 시 Mutect2가 PoN(--panel-of-normals)을 사용하여 이러한 아티팩트를 필터링하여 진짜 체세포 변이 탐지의 특이도를 향상시킵니다. CreateSomaticPanelOfNormals가 개별 정상 VCF를 최종 PoN으로 병합합니다.
GATK에서 사용 가능한 메모리와 스레딩 옵션은?
--java-options "-Xmx16g"로 Java 힙 메모리를 설정합니다(데이터 크기와 가용 RAM에 따라 조정). 스레딩의 경우 HaplotypeCaller는 PairHMM 병렬화를 위한 --native-pair-hmm-threads를 지원합니다. MarkDuplicatesSpark는 --conf spark.executor.cores로 Spark 기반 병렬 처리를 사용합니다. --tmp-dir 플래그는 기본 /tmp 공간이 제한될 때 중간 파일용 임시 디렉토리를 지정합니다.