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

변이 호출 워크플로 — BAM → 전처리(중복표시·BQSR) → 변이 검정(HaplotypeCaller) → VCF. (직접 그린 도식)

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을 곧장 호출하지 않고, 먼저 손질합니다.

  1. 중복 제거 표시(Mark Duplicates) — PCR 과정에서 생긴 똑같은 read 사본은 같은 증거를 부풀립니다. 표시해 두고 한 표로만 셉니다.
  2. 염기 품질 재보정(BQSR) — 시퀀서가 매긴 Phred 점수에는 체계적 편향이 있습니다. 알려진 변이 위치를 기준으로 이를 보정합니다.
  3. 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·QUALVCF에 기록. 코호트는 gVCF + 합동 유전형.

9. 다음 학습 추천

References

  1. 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.
  2. 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.
  3. Poplin, R., et al. (2018). A universal SNP and small-indel variant caller using deep neural networks (DeepVariant). Nature Biotechnology, 36(10), 983–987.
  4. Benjamin, D., et al. (2019). Calling somatic SNVs and indels with Mutect2. bioRxiv, 861054.
  5. 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)
  6. 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.

이 글을 쓴 사람 Yumingming

생명융합공학과 박사과정.
Microbiome · Cosmetics · RNA Therapeutics · Bioinformatics를 공부하며,
실험(Wet Lab)과 데이터(Dry Lab)를 잇는 글을 논문(article) 기반으로 씁니다.

About · 더 알아보기 →

⚕️ 이 글은 학습·정보 제공 목적이며, 의학적 진단·치료·조언을 대체하지 않습니다. 건강·질병·치료에 관한 결정은 반드시 의사 등 전문가와 상의하세요. 자세한 내용은 면책조항을 참고해 주세요.