[NGS 분석] WES 분석은 어떻게 진행되나

2026. 6. 22. 19:00·Bio Data Analysis/WES(Whole Exome Seq)

이번 글은 WES 데이터를 분석하는 흐름을 다룹니다.

 

WES 분석 흐름은 WGS와 전체 골격이 거의 같습니다.

FASTQ로 시작해서 정렬 → 전처리 → 변이 탐지 → 필터링 → 주석 → 해석의 순서로 흘러갑니다.

이 글에서는 WGS와 같은 부분은 간략하게 짚고, WES에서 달라지는 부분을 중심으로 설명합니다.


전체 흐름

FASTQ (R1, R2)
    │  FastQC, Trimmomatic/fastp
    ▼
QC 통과한 FASTQ
    │  BWA-MEM
    ▼
SAM/BAM (정렬됨)
    │  Picard SortSam → MarkDuplicates → GATK BQSR
    ▼
분석 준비 완료된 BAM
    │  GATK HaplotypeCaller (-ERC GVCF)
    │  [WES 특이: -L 옵션으로 타깃 영역 지정]
    ▼
gVCF
    │  GenomicsDBImport → GenotypeGVCFs
    ▼
멀티샘플 VCF (raw)
    │  하드 필터링 (또는 VQSR)
    ▼
필터링된 VCF
    │  VEP / SnpEff + gnomAD, ClinVar 등
    ▼
주석 달린 VCF
    │  타깃 영역 내 변이 + 임상 기준으로 선별
    ▼
최종 변이 해석

 


 

QC — WES에서 추가로 확인할 것

기본 QC 항목(Q score, 어댑터 오염, GC 함량 등)은 WGS와 같습니다.

여기에 더해 WES에서 반드시 확인해야 하는 지표가 따로 있습니다.

 

On-target rate

전체 리드 중 실제로 타깃(엑솜 영역)에 정렬된 리드의 비율입니다. 엑솜은 게놈의 1~2%밖에 안 되는데, 그 좁은 영역에 리드가 얼마나 잘 모였는지를 봅니다. On-target rate가 낮다는 건 캡처 효율이 낮았다는 의미이고, 같은 비용 대비 실제로 사용할 수 있는 데이터가 적다는 뜻입니다. 보통 70% 이상을 기준으로 봅니다.

Coverage 균일도

WES의 고질적인 문제 중 하나입니다.

엑솜 캡처는 GC 함량이 높은 영역이나 반복 서열에 가까운 영역에서 포집 효율이 떨어지기 때문에, 엑손마다 커버리지가 들쑥날쑥합니다. 어떤 엑손은 200x가 쌓이는데 옆 엑손은 10x밖에 안 되는 경우도 있습니다.

  • 커버리지 균일도를 확인하는 지표
    • % bases at 20x: 타깃 영역 중 20x 이상으로 커버된 비율. 일반적으로 90% 이상이면 양호
    • Fold-80 base penalty: 80%의 타깃을 커버하는 데 필요한 평균 깊이 대비 비율. 1에 가까울수록 균일

WGS는 게놈 전체를 균일하게 읽기 때문에 이 문제가 상대적으로 적습니다.

WES는 캡처 과정에서 이 불균일성이 발생하므로 반드시 점검해야 합니다.

Mean target coverage

타깃 영역 전체의 평균 깊이입니다.

WES에서는 보통 100x 이상을 목표로 합니다.

앞서 언급한 균일도 문제로 인해, 평균 깊이가 충분해도 일부 엑손이 낮게 커버될 수 있습니다.

 


 

정렬 — 타깃 영역 지정

정렬 도구는 WGS와 동일하게 BWA-MEM을 씁니다.

레퍼런스 게놈도 GRCh38 기준으로 동일합니다.

차이가 생기는 건 이후 단계입니다.

 

GATK HaplotypeCaller에 -L 옵션으로 타깃 영역 BED 파일을 넘겨서, 엑솜 영역 내에서만 변이를 탐지하도록 제한합니다.

gatk HaplotypeCaller \
    -R genome.fa \
    -I sample.bam \
    -L targets.bed \        ← 캡처 키트 BED 파일
    -ERC GVCF \
    -O sample.g.vcf.gz

 

타깃 BED 파일은 사용한 캡처 키트 제조사(Agilent, Twist, IDT 등)에서 제공합니다.

이 BED 파일 없이 WES 데이터를 WGS처럼 전체 게놈을 대상으로 변이 탐지를 돌리면, 타깃 외 영역에서 노이즈가 많이 생기고 결과 해석도 어려워집니다.

 


 

전처리 — WGS와 동일

정렬 순서 정리(sort), PCR 중복 표시(MarkDuplicates), BQSR은 WGS와 동일하게 수행합니다.

상세 내용은 WGS 분석 흐름 글을 참고하면 됩니다.

 

WES에서 PCR duplicate rate는 WGS보다 높게 나오는 경향이 있습니다.

타깃 영역이 좁아서 같은 DNA 조각이 반복 포집될 가능성이 높기 때문입니다.


변이 탐지 — gVCF 흐름은 동일

HaplotypeCaller → GenomicsDBImport → GenotypeGVCFs 흐름은 WGS와 동일합니다.

달라지는 건 필터링 방식입니다.

 

GATK Best Practices에서 VQSR은 충분한 수의 변이가 있어야 머신러닝 모델이 제대로 학습됩니다.

WGS는 게놈 전체를 읽기 때문에 수백만 개의 변이가 나오지만, WES는 타깃 영역이 좁아서 변이 수가 훨씬 적습니다.

이 때문에 WES에서는 VQSR 대신 하드 필터링을 쓰는 경우가 많습니다.

 

GATK 권장 하드 필터링 기준 (예시)

필터 SNP 기준 Indel 기준
QD < 2.0 < 2.0
FS > 60.0 > 200.0
MQ < 40.0 -
MQRankSum < -12.5 -
ReadPosRankSum < -8.0 < -20.0

 

주석 — WGS와 동일

VEP 또는 SnpEff로 변이 기능을 주석하고, gnomAD, ClinVar, CADD, REVEL 등 데이터베이스 정보를 붙이는 과정은 WGS와 동일합니다.

 

 


 

결과 해석 — WES만의 고려사항

주석이 끝난 후 변이를 추려나가는 방식의 큰 흐름은 WGS와 같지만, WES에서 특히 주의해야 할 점이 있습니다.

캡처 영역 밖 변이는 신뢰하지 않는다

WES 데이터에도 캡처 타깃 밖 영역에서 리드가 일부 쌓이고 변이가 탐지될 수 있습니다. 이건 캡처 과정에서 의도치 않게 포집된 off-target 데이터입니다. 이 변이들은 커버리지가 낮고 신뢰도가 떨어지기 때문에, 타깃 영역 BED 파일로 필터링해서 제외합니다.

커버리지 낮은 엑손의 변이는 주의

균일도 문제로 커버리지가 낮은 엑손에서 탐지된 변이는 위양성 가능성이 있습니다. 결과 해석 전에 해당 변이 위치의 실제 커버리지를 확인하는 습관이 필요합니다.

WES로 못 찾은 경우의 다음 단계

희귀질환 진단에서 WES로 원인을 찾지 못했을 때(WES 음성)의 선택지는 크게 두 가지입니다.

  • WGS로 재분석: 딥 인트로닉 변이, 조절 영역 변이, SV/CNV처럼 WES가 못 보는 영역에서 원인을 찾는 방식
  • WES 재분석: 새로 보고된 유전자-질환 연관 정보를 반영해서 기존 WES 데이터를 다시 분석하는 방식. 시간이 지나면서 VUS로 분류됐던 변이가 재분류되거나, 새로운 원인 유전자가 밝혀지는 경우가 있기 때문

 

WGS vs WES 분석 흐름 비교

단계 WGS WES
QC 추가 확인 기본 QC On-target rate, 커버리지 균일도 추가
정렬 도구 BWA-MEM BWA-MEM (동일)
타깃 영역 지정 없음 (전체) -L 옵션으로 BED 파일 지정
권장 시퀀싱 깊이 30x 100x
변이 필터링 VQSR 권장 하드 필터링 주로 사용
주석/해석 동일 off-target 변이 제외 주의
데이터 크기 크다 (~90Gb) 작다 (~4~5Gb)

 


 

정리

WES 분석은 WGS와 흐름이 거의 같습니다.

핵심적인 차이는 세 가지입니다.

첫째, QC에서 on-target rate와 커버리지 균일도를 추가로 확인해야 합니다.

둘째, 변이 탐지 시 캡처 키트 BED 파일로 타깃 영역을 제한합니다.

셋째, 변이 필터링에서 VQSR보다 하드 필터링을 주로 씁니다.

 

'Bio Data Analysis > WES(Whole Exome Seq)' 카테고리의 다른 글

[NGS 분석] WES란 무엇인가  (0) 2026.06.22
'Bio Data Analysis/WES(Whole Exome Seq)' 카테고리의 다른 글
  • [NGS 분석] WES란 무엇인가
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190) N
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28) N
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4) N
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    FASTQ
    wgs
    파이썬기초
    리눅스
    파일포맷
    유전체분석
    R
    파이썬연습
    생물정보학
    파이썬
    통계
    코딩테스트
    GATK
    리눅스기초
    fasta
    ngs
    R기초
    분자생물학
    bioinformatics
    데이터분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[NGS 분석] WES 분석은 어떻게 진행되나
상단으로

티스토리툴바