Variant Calling 실전 가이드: WGS/WES 데이터에서 변이 찾기
WGS/WES 데이터에서 변이를 찾는 실전 워크플로우. GATK, DeepVariant, 필터링 전략까지 한 번에 정리했다.
전장 유전체 시퀀싱(WGS)이나 전장 엑솜 시퀀싱(WES) 데이터를 받았을 때, 변이를 정확하게 찾아내는 것은 임상 유전체학과 연구 모두에서 핵심적인 작업이다. 이 글에서는 germline variant calling의 실전 워크플로우를 정리해 본다.
전처리: 생각보다 중요하다
FASTQ 파일을 받으면 바로 변이 분석으로 뛰어들고 싶겠지만, 전처리를 대충 하면 나중에 후회한다. 표준 전처리 과정은 다음과 같다:
-
QC: FastQC로 시퀀싱 품질을 확인한다. 어댑터 오염, GC bias, 시퀀스 중복 등을 체크.
-
트리밍: fastp이나 Trimmomatic으로 어댑터와 저품질 염기를 제거한다.
-
매핑: BWA-MEM2로 참조 유전체(보통 GRCh38)에 리드를 정렬한다. BWA-MEM2는 기존 BWA-MEM보다 2-3배 빠르면서 동일한 결과를 준다.
-
정렬 후 처리: Picard의 MarkDuplicates로 PCR 중복을 표시하고, GATK의 BaseQualityScoreRecalibration(BQSR)으로 베이스 품질 점수를 보정한다.
Variant Calling: GATK HaplotypeCaller
GATK HaplotypeCaller는 germline SNV/indel calling의 사실상 표준이다. 로컬 de novo 어셈블리를 통해 활성 영역(active region)에서 후보 해플로타입을 생성하고, 각 리드를 해플로타입에 재정렬한 뒤, pair HMM으로 유전형 우도를 계산한다.
대규모 코호트를 분석할 때는 GVCF 모드를 활용한다. 각 샘플을 개별적으로 HaplotypeCaller로 처리해 GVCF를 만들고, GenomicsDBImport와 GenotypeGVCFs로 조인트 제노타이핑을 수행한다. 이 방식은 새 샘플이 추가되어도 처음부터 다시 분석할 필요가 없다는 장점이 있다.
필터링: VQSR vs Hard Filtering
Raw callset에는 false positive이 많이 섞여 있다. 이를 걸러내는 두 가지 전략이 있다:
-
VQSR(Variant Quality Score Recalibration): 알려진 변이 데이터베이스(dbSNP, HapMap 등)를 training set으로 사용해서 머신러닝으로 true/false를 분류한다. 샘플 수가 충분하면(보통 30개 이상) 가장 좋은 방법이다.
-
Hard filtering: QD, FS, MQ 같은 annotation 값에 임계치를 설정해서 필터링한다. 샘플 수가 적을 때 쓴다. GATK 공식 권장값이 있으니 참고하면 된다.
딥러닝 기반 대안: DeepVariant
Google에서 만든 DeepVariant는 pileup 이미지를 CNN으로 분류하는 방식으로 변이를 찾는다. GATK과 비교했을 때 특히 indel 검출에서 우수한 성능을 보이며, PrecisionFDA 챌린지에서 여러 차례 1위를 차지했다. WGS 데이터에서는 DeepVariant가 GATK보다 나은 경우가 많다.
최근에는 DeepVariant와 GLnexus를 결합한 파이프라인이 대규모 코호트 분석에서도 활용되고 있다. 학습 기반이라 새로운 시퀀싱 플랫폼에 맞춤 학습시킬 수 있다는 것도 큰 장점이다.
변이 해석
변이를 찾았으면 해석이 필요하다. **VEP(Variant Effect Predictor)**나 ANNOVAR로 기능적 annotation을 붙이고, ClinVar, gnomAD 등의 데이터베이스에서 알려진 정보를 확인한다. 임상 유전체학에서는 ACMG 가이드라인에 따라 변이의 병원성을 5단계로 분류하는 과정이 필수적이다.
📚 참고 데이터베이스: Nature
관련 읽을거리
- 💊 비타민D 부족이 만성피로의 원인? 혈액검사로 확인하세요 — Genobalance
- 🧠 AI가 뇌 영상을 분석하는 시대: 신경과학에서의 딥러닝 — K-Brain Map
- 💻 AI 기술 동향: 핫 스타트업부터 윤리적 논쟁까지 — BRIC