Germline과 Somatic이 여기서 갈립니다
지난 편의 HaplotypeCaller는 개인의 유전자형을 콜했습니다. 각 개인이 하나의 유전자형(0/0, 0/1, 1/1)을 가진다는 가정 위에서 콜을 결정합니다.
암 조직은 이 가정을 위반합니다. 종양 안에는 여러 세포 아형(subclone)이 섞여 있고, 어떤 변이는 종양 세포의 5%에만 있습니다. 유전자형이라는 개념 자체가 성립하지 않습니다.
- Germline: 정상 세포에서 유래한 배선 변이. 알렐 빈도(VAF) 0.5 or 1.0.
- Somatic: 특정 세포 집단에만 있는 체세포 변이. VAF 임의의 값 (0.01 ~ 0.5).
이 통계적 차이를 반영하기 위해 GATK4가 별도로 준비한 도구가 Mutect2입니다.
핵심 아이디어 — 우도비 검정
Mutect2 판단의 형식은 이렇습니다.
특정 위치에서 관찰된 리드 세트에 대해 두 가설을 비교합니다.
- H0 (귀무): 이 위치의 리드 관찰은 시퀀싱 오류 + 정상 배경만으로 설명 가능.
- H1 (대안): 여기에 진짜 체세포 변이가 있음. VAF는 데이터 추정치.
두 가설의 우도 비율을 계산하고 임계 이상이면 H1을 채택 (변이 있음).
이 LOD (Log Odds) 값이 6.3 이상이면 변이 콜. 이 임계가 낮을수록 감도(sensitivity)가 높아지고 위양성이 증가합니다. Mutect2 기본 임계는 감도와 특이도의 균형 지점입니다.
세 가지 시나리오
Mutect2는 세 가지 방식으로 실행할 수 있습니다.
1. 종양-정상 쌍 (Tumor-Normal Pair)
같은 환자의 정상 조직(혈액 등)과 종양 조직 둘 다 시퀀싱된 경우. 이상적입니다.
gatk Mutect2 \ -R hg38.fa \ -I tumor.bam -tumor SAMPLE01_T \ -I normal.bam -normal SAMPLE01_N \ --germline-resource af-only-gnomad.hg38.vcf.gz \ --panel-of-normals pon.vcf.gz \ -O SAMPLE01.somatic.vcf.gz- 정상 조직에 있으면 germline → 필터.
- 종양에만 있으면 somatic → 콜.
- germline-resource: 인구 알렐 빈도. 흔한 변이는 germline일 가능성이 높음.
2. 종양 단독 (Tumor-Only)
정상 대조군이 없는 경우 (레거시 데이터, 응급 진단). PoN이 정상 대조군 역할을 대신합니다.
gatk Mutect2 \ -R hg38.fa \ -I tumor.bam \ --germline-resource af-only-gnomad.hg38.vcf.gz \ --panel-of-normals pon.vcf.gz \ -O SAMPLE01.tumor_only.vcf.gz정확도가 종양-정상 쌍보다 다소 낮지만 PoN이 충실하면 실용 수준.
3. 미토콘드리아 모드
미토는 세포당 수백 카피 있고 헤테로플라스미 (같은 세포 안에 여러 미토 유전자형 공존)가 있어 특수 처리:
gatk Mutect2 --mitochondria-mode -R hg38.fa -I sample.bam -O mt.vcf.gzPanel of Normals (PoN) — 시퀀싱 아티팩트의 지도
PoN은 이런 파일입니다.
- 여러 정상 샘플(권장 40+명)을 각각 Mutect2 tumor-only 모드로 콜링.
- 그 결과를 통합해서 여러 정상에 반복적으로 나타나는 위치를 골라 VCF로 저장.
이 위치들이 곧 시퀀싱 아티팩트(플랫폼 노이즈, 반복 매핑 오류)의 지도입니다. Mutect2가 새 종양을 콜할 때 이 위치의 콜은 자동으로 배제 대상이 됩니다.
PoN 만들기
# 1) 각 정상을 Mutect2 tumor-only로 콜for normal_bam in normal_samples/*.bam; do S=$(basename "$normal_bam" .bam) gatk Mutect2 -R hg38.fa -I "$normal_bam" \ --max-mnp-distance 0 \ -O pon_vcfs/${S}.vcf.gzdone
# 2) GenomicsDB로 통합gatk GenomicsDBImport -R hg38.fa -L intervals.bed \ --genomicsdb-workspace-path pon_db \ -V pon_vcfs/N1.vcf.gz -V pon_vcfs/N2.vcf.gz ...
# 3) CreateSomaticPanelOfNormalsgatk CreateSomaticPanelOfNormals -R hg38.fa \ -V gendb://pon_db \ --germline-resource af-only-gnomad.hg38.vcf.gz \ -O pon.vcf.gz이 세 단계로 팀 전용 PoN을 만들 수 있습니다. Broad Institute가 공개한 표준 PoN(1000G 40샘플 기반)을 그대로 써도 되지만, 자신의 장비·라이브러리와 다르면 정확도가 떨어질 수 있어 팀 자체 PoN이 이상적입니다.
FilterMutectCalls — 사후 필터
Mutect2가 콜한 VCF는 raw이고, 이 위에 사후 필터를 얹어야 최종 세트를 얻습니다.
# 1) 오염(contamination) 추정gatk GetPileupSummaries \ -I tumor.bam \ -V small_exac_common.vcf.gz \ -L small_exac_common.vcf.gz \ -O tumor_pileups.table
gatk CalculateContamination \ -I tumor_pileups.table \ -O tumor_contamination.table
# 2) FilterMutectCallsgatk FilterMutectCalls \ -R hg38.fa \ -V SAMPLE01.somatic.vcf.gz \ --contamination-table tumor_contamination.table \ -O SAMPLE01.filtered.vcf.gzFilterMutectCalls가 판정하는 필터가 열 개 이상 있습니다. 자주 만나는 필터는 이것들입니다.
- germline: germline 가능성이 높다고 판단.
- panel_of_normals: PoN에 있음.
- low_allele_frac: VAF가 임계 미만.
- contamination: 정상 조직 오염 신호.
- orientation: F1R2 vs F2R1 방향 편향 (FFPE 아티팩트).
- read_position: 리드 안 위치 편향.
VCF의 FILTER 열에 이 라벨들이 붙습니다. PASS만 최종 리포트에 씁니다.
Orientation Bias — FFPE 조직의 함정
암 조직 상당수가 파라핀 포매(FFPE) 표본입니다. 포름알데히드 고정이 DNA에 특정 화학 손상을 유발합니다.
- C:G > T:A 변이가 F1R2 방향 리드에서만 관찰되고 F2R1에서는 안 관찰됨.
- 이 편향은 진짜 변이가 아니라 표본 처리 아티팩트.
Mutect2가 F1R2/F2R1 방향별 관찰을 추적해 이 편향을 통계적으로 감지합니다. --f1r2-tar-gz 옵션으로 orientation 모델을 학습시켜 FilterMutectCalls에 넣으면 자동 필터됩니다.
손 계산 — 저VAF 검출의 감
종양에서 특정 위치에 리드 100개 관찰. 그 중 5개가 대안 대립유전자. VAF = 5%.
Germline 관점(HaplotypeCaller)이라면 이건 시퀀싱 오류로 처리됩니다. 헤테로 변이라면 VAF 50%가 예상이니 5%는 노이즈 범위.
Somatic 관점(Mutect2)에서는 다릅니다. 5개 관찰이 무작위 오류로만 나올 확률은?
- 시퀀싱 오류율 대략 0.001 (Q30). 100 리드 중 5개 이상이 우연히 오류로 나올 확률은 이항 검정으로 극히 낮음.
- 결론: 진짜 변이 후보.
이 저VAF 신호를 잡을 수 있는 이유는 Mutect2의 우도 모델이 배경 오류율을 학습해서 유의성 검정을 하기 때문입니다.
VCF의 소마틱 필드 읽기
Somatic VCF에는 germline VCF에 없는 필드가 있습니다.
- AF (Allele Frequency): 종양에서 관찰된 VAF. 임상에서 이 값이 종양 순도·아형 크기 지표.
- MMQ (Median MAPQ): 콜링에 쓰인 리드들의 MAPQ 중앙값.
- MBQ (Median Base Quality): BQSR 후 base quality 중앙값.
- F1R2 / F2R1: 방향별 리드 카운트 (orientation bias 진단).
임상 리포트에서는 VAF 5% 이상, MMQ 40 이상, F1R2/F2R1 비율 균형 세 조건을 기본으로 봅니다.
실무 팁
germline-resource로 gnomAD 사용
af-only-gnomad.hg38.vcf.gz가 표준. 인구 알렐 빈도가 담긴 슬림 버전. Broad Resource Bundle에서 다운로드.
낮은 종양 순도 처리
종양 순도가 20% 미만이면 대부분의 somatic이 VAF 10% 미만. FilterMutectCalls의 --min-allele-fraction을 낮춰야 합니다. 다만 낮추면 위양성 증가.
인터벌로 스코프 좁히기
암 유전자 패널이라면 -L cancer_genes.bed로 스코프 좁혀 실행 시간 단축.
병렬화
염색체별로 나눠 병렬 → 마지막에 MergeVcfs.
Colab에서 실습은 무리, GCP Batch 권장
Mutect2는 리소스가 무거워 Colab에서는 어렵습니다. 실무는 Terra Broad Institute 워크스페이스 또는 GCP Batch. 학습 목적이면 Broad Institute의 공식 튜토리얼의 소형 예제 데이터를 로컬에서 Docker로 돌리는 게 실용적.
CS 매핑
- 우도비 검정 (LRT): DryBench "우도비 검정" 편(
likelihood-ratio-testing) 참고. - 배경 노이즈 모델링: PoN은 여러 정상의 노이즈 분포를 empirical prior로 사용.
- 저신호 검출: 5% VAF는 신호 대비 노이즈가 20:1 수준. 통계적 파워 확보를 위해 커버리지 100× 이상 요구.
마무리
Mutect2는 우도비 검정의 프레임 위에 PoN과 방향 편향 모델을 얹은 도구입니다. 다음 편(S11)에서는 이 raw VCF들을 VQSR과 Hard Filter로 어떻게 다듬는지, 두 필터링 접근의 결정 규칙이 무엇인지 봅니다.
더 깊게 파고 싶다면
- Cibulskis K. et al. (2013), Sensitive detection of somatic point mutations in impure and heterogeneous cancer samples. Nature Biotechnology 31:213. 원조 MuTect 논문.
- Benjamin D. et al. (2019), Calling Somatic SNVs and Indels with Mutect2. bioRxiv. Mutect2 확장 논문.
- GATK Mutect2 튜토리얼 (https://gatk.broadinstitute.org/hc/en-us/articles/360036713991): 옵션 원전.
- Broad Institute BroadE — Somatic Short Variant Discovery 유튜브 강의. PoN 만드는 과정 시각화.
- cBioPortal (https://www.cbioportal.org/): TCGA 등 실제 somatic 변이 카탈로그.
Germline과 Somatic이 통계적으로 왜 다른지 감으로 잡히면 임상 콜링 파이프라인 선택이 훨씬 명료해집니다. 다음 편에서 VQSR과 Hard Filter로 갑시다.