변이 호출(variant calling)이란? — BAM에서 진짜 변이를 가려내 VCF로 (GATK·DeepVariant 완전 정리)

TL;DR — 변이 호출은 정렬된 read 더미(BAM)를 한 위치씩 들여다보며, "이 사람이 참조 유전체와 다른 지점"이 어디인지 — SNP·삽입·결실 — 을 가려내 VCF로 적는 일이다. 정렬이 read의 제자리를 찾는 단계였다면, 변이 호출은 그 위에서 차이를 읽어 내는 단계다.
파이프라인에서의 자리는 분명하다. SAM/BAM (정렬 결과) → 변이 호출 → VCF (변이). BAM을 VCF로 바꾸는 그 단계다.
진짜 난제는 오류와 진짜 변이를 구별하는 것이다. 한 위치에 쌓인 read 중 몇 개가 참조와 다르다 해도, 그게 시퀀싱 오류인지 진짜 변이인지는 확률 모델로 판단해야 한다. 표준은 GATK 베스트 프랙티스(전처리 → HaplotypeCaller), 정확도 최강자는 딥러닝 기반 DeepVariant, 암 변이는 Mutect2를 쓴다.
🔗 관련 글 · 입력: SAM/BAM 파일이란? · 출력: VCF 파일이란?
1. 변이 호출이란? — '참조와 다른 곳' 찾기
SAM/BAM까지 오면, 수억 개 read가 참조 유전체 위 제자리에 줄을 선 상태입니다. 하지만 BAM은 아직 "누가 어디에 맞았다"까지만 말해 줍니다. 정작 알고 싶은 건 "이 사람은 참조와 어디가 다른가" — 그게 변이입니다.
변이 호출(variant calling)은 정렬 결과를 한 위치(position)씩 훑어, 그 사람의 유전체가 참조와 다른 지점을 찾아내는 작업입니다. 주로 두 종류를 봅니다.
- SNP (단일염기다형성) — 한 글자가 바뀐 것(A→G 등).
- 삽입·결실(indel) — 글자가 끼거나 빠진 것.
결과는 VCF 파일에 "몇 번 염색체 몇 번 위치가, 참조 A에서 G로 바뀌었다"는 식으로 기록됩니다. 변이 호출이 끝나야 비로소 "이 변이가 질병과 관련 있나"를 따지는 해석으로 넘어갑니다.
2. 왜 어려운가 — 오류인가, 진짜 변이인가
핵심 어려움은 단순합니다. 시퀀싱 오류와 진짜 변이를 구별하는 일입니다.
한 위치에 read 30개가 쌓였다고 합시다(이 더미를 pileup이라 부릅니다). 그중 28개는 참조와 같은 A인데, 2개가 G입니다. 이 G는 무엇일까요?
- 시퀀싱 오류일 수도 있고(read를 읽다 틀림),
- 진짜 변이인데 우연히 그 자리를 읽은 read가 적었을 수도 있고,
- 정렬이 잘못돼 엉뚱한 read가 끼어든 것일 수도 있습니다.
그래서 변이 호출기는 위치마다 여러 단서를 종합해 확률로 판단합니다. read 깊이(얼마나 많이 읽혔나), 각 염기의 Phred 품질, read가 제자리에 맞았다는 신뢰도(MAPQ), 정방향·역방향 균형(strand bias) 등입니다. "참조와 다른 글자가 보인다"는 것만으로는 변이가 아닙니다. 통계적으로 충분히 그럴듯해야 비로소 변이로 부릅니다.
3. GATK 베스트 프랙티스 — 표준 절차
생식세포(germline) 변이의 사실상 표준은 브로드연구소의 GATK 베스트 프랙티스입니다. BAM을 곧장 호출하지 않고, 먼저 손질합니다.
- 중복 제거 표시(Mark Duplicates) — PCR 과정에서 생긴 똑같은 read 사본은 같은 증거를 부풀립니다. 표시해 두고 한 표로만 셉니다.
- 염기 품질 재보정(BQSR) — 시퀀서가 매긴 Phred 점수에는 체계적 편향이 있습니다. 알려진 변이 위치를 기준으로 이를 보정합니다.
- HaplotypeCaller — GATK의 핵심입니다. 단순히 위치별 글자만 세는 게 아니라, 변이가 의심되는 구역의 read를 그 자리에서 다시 조립(local de novo assembly)해 가장 그럴듯한 일배체(haplotype)를 찾습니다. 덕분에 삽입·결실이나 복잡한 구역에서 정확도가 높습니다.
이 과정을 거쳐 나온 변이 후보를 필터링(VQSR 또는 하드 필터)하면, 믿을 만한 변이만 남은 VCF가 됩니다.
4. 변이의 핵심 정보 — GT·DP·AD·QUAL
변이 호출 결과는 VCF에 적힙니다. 각 변이에 붙는 핵심 값은 이렇습니다.
| 필드 | 의미 |
|---|---|
| GT (유전형) | 두 가닥의 상태. 0/0 참조, 0/1 이형접합, 1/1 동형접합 변이 |
| DP (깊이) | 그 위치를 덮은 read 수. 낮으면 신뢰도가 떨어짐 |
| AD (대립유전자 깊이) | 참조·변이 대립유전자를 각각 지지한 read 수 |
| VAF/AF (변이대립빈도) | 변이를 지지한 비율. 생식세포는 보통 0.5·1.0, 암(체세포)은 다양 |
| QUAL | 이 자리에 변이가 있다는 확신도 점수 |
생식세포 변이는 유전형이 깔끔하게 갈립니다(0/1 또는 1/1). 반면 종양의 체세포 변이는 세포마다 섞여 있어 VAF가 낮고 들쭉날쭉합니다 — 그래서 도구부터 다릅니다(아래 5절).
5. 도구 고르기 — 생식세포 vs 체세포
변이 호출기는 무슨 변이를 찾느냐에 따라 갈립니다. 이 구분을 틀리면 결과가 통째로 어긋납니다.
| 상황 | 권장 도구 | 핵심 |
|---|---|---|
| 생식세포 (유전 변이) | GATK HaplotypeCaller · DeepVariant | 깔끔한 유전형. DeepVariant는 딥러닝으로 최고 수준 정확도 |
| 체세포 (암 변이) | Mutect2 · Strelka2 | 종양–정상 쌍 비교, 낮은 VAF의 변이까지 검출 |
| 빠른 호출 | bcftools mpileup · FreeBayes | 가벼운 파이프라인 |
DeepVariant (구글, 2018)는 pileup을 이미지로 바꿔 합성곱신경망으로 변이를 판정합니다. 여러 데이터셋에서 SNP·삽입결실 정확도가 가장 높은 편이라, GATK와 함께 현대 표준으로 자리 잡았습니다. 암 변이는 정상 조직과 비교해 종양에만 있는 변이를 골라야 하므로, 생식세포용 HaplotypeCaller가 아니라 Mutect2 같은 체세포 전용 도구를 써야 합니다.
6. 코호트는 어떻게 — gVCF와 합동 유전형
수백~수천 명을 한꺼번에 분석할 때는 한 명씩 따로 부르지 않습니다. GATK는 각 사람을 gVCF (모든 위치의 유전형 가능성을 담은 중간 파일)로 먼저 호출한 뒤, 이를 모아 합동 유전형 분석(joint genotyping)으로 한 번에 판정합니다(GenomicsDBImport → GenotypeGVCFs).
이렇게 하면 한 명에게선 애매하던 변이도, 여러 사람의 증거를 합쳐 더 정확하게 부를 수 있습니다. 또 표본을 추가할 때마다 전부 다시 돌릴 필요 없이 gVCF만 더하면 돼, 대규모 연구에 효율적입니다.
7. 자주 헷갈리는 것
| 비교 | 차이 |
|---|---|
| 정렬 vs 변이 호출 | read를 제자리에 맞춤(BAM) / 그 위에서 참조와의 차이를 읽음(VCF) |
| 생식세포 vs 체세포 | 유전 변이(HaplotypeCaller, 유전형 깔끔) / 암 변이(Mutect2, 낮은 VAF) |
| DP vs QUAL | 그 위치를 읽은 read 수(깊이) / 변이가 있다는 확신도 점수 |
| gVCF vs VCF | 모든 위치의 가능성 기록(중간) / 최종 변이만 담은 결과 |
8. 핵심 정리
- ✅ 변이 호출 = BAM을 위치별로 훑어 참조와 다른 곳(SNP·indel)을 찾아 VCF로 적는 일.
- ✅ 핵심 난제는 오류 vs 진짜 변이 구별 — 깊이·염기품질·MAPQ를 종합한 확률 판단.
- ✅ 표준은 GATK 베스트 프랙티스(중복표시·BQSR → HaplotypeCaller의 지역 재조립), 정확도 최강은 DeepVariant.
- ✅ 생식세포(HaplotypeCaller·DeepVariant) vs 체세포(Mutect2) — 도구를 데이터에 맞춰야 한다.
- ✅ 결과는 GT·DP·AD·QUAL로 VCF에 기록. 코호트는 gVCF + 합동 유전형.
9. 다음 학습 추천
- 📗 SAM/BAM 파일이란? — 변이 호출의 입력, 정렬 결과 (앞 단계)
- 📗 VCF 파일이란? — 변이 호출의 출력, 변이 기록 포맷 (결과)
- 📗 FASTQ 파일이란? — 파이프라인의 출발, 원시 read와 Phred (복습)
References
- McKenna, A., et al. (2010). The Genome Analysis Toolkit: a MapReduce framework for analyzing next-generation DNA sequencing data. Genome Research, 20(9), 1297–1303.
- DePristo, M. A., et al. (2011). A framework for variation discovery and genotyping using next-generation DNA sequencing data. Nature Genetics, 43(5), 491–498.
- Poplin, R., et al. (2018). A universal SNP and small-indel variant caller using deep neural networks (DeepVariant). Nature Biotechnology, 36(10), 983–987.
- Benjamin, D., et al. (2019). Calling somatic SNVs and indels with Mutect2. bioRxiv, 861054.
- Van der Auwera, G. A., & O'Connor, B. D. (2020). Genomics in the Cloud: Using Docker, GATK, and WDL in Terra. O'Reilly Media. (GATK Best Practices)
- Zook, J. M., et al. (2019). An open resource for accurately benchmarking small variant and reference calls. Nature Biotechnology, 37(5), 561–566. (Genome in a Bottle)
Pipette & Pipeline · A bio portfolio journal — bridging research, data, and industry.
'Bio Glossary > Bioinformatics 101' 카테고리의 다른 글
| p-value와 FDR, 다중검정보정이란? — 왜 RNA-seq 결과는 'adjusted p-value'를 쓸까 (0) | 2026.06.14 |
|---|---|
| RNA-seq 정규화란? — 읽은 수를 '비교 가능한 값'으로 바꾸는 법 (정량·정규화·DESeq2 완전 정리) (0) | 2026.06.08 |
| 서열 정렬(read alignment)이란? — 수억 개 read를 유전체에 맞추는 법 (BWA·MAPQ·정렬 도구 완전 정리) (0) | 2026.06.02 |
| VCF 파일이란? — 유전 변이 정보의 표준 포맷 (8컬럼·INFO·GT 완전 정리) (3) | 2026.05.29 |
| SAM/BAM 파일이란? — 시퀀싱 alignment 결과의 표준 포맷 (11필드·FLAG·CIGAR 완전 정리) (0) | 2026.05.29 |