Skip to content

BBP WGS 분석 튜토리얼 가이드

BBP(바이오빅데이터 플랫폼) 사업 DSC 파트에서 개발한 5강 구성의 WGS(Whole Genome Sequencing) 분석 교육 자료입니다.
공개 데이터셋(1000 Genomes Project 등)을 활용하여 임상 데이터 분석부터 AI 기반 질병 예측까지 전 과정을 다룹니다.

GitLab 저장소 클론 방법

bash
# HTTPS
git clone https://gitlab.insilicogen.com/dsc/bbp-wgs-tutorial.git

# 기존 로컬 저장소에 remote 추가
cd existing_repo
git remote add origin https://gitlab.insilicogen.com/dsc/bbp-wgs-tutorial.git
git branch -M main
git push -uf origin main

사전 지식

수준내용
기초Python/R 기본 문법, Linux 터미널 사용
권장유전학 기초 (DNA, 변이, allele 개념), 통계학 기초
고급 (5강)머신러닝 기본 개념

강의별 상세 내용

1강: 표현형 기반 임상 데이터 기초 통계 분석

파일: notebooks/Lecture01_Phenotype_Clinical_Data_Analysis.ipynb

항목내용
목표WGS 분석의 기초가 되는 임상/표현형 데이터의 구조 이해 및 통계 분석
사용 데이터1000 Genomes Phase 3 샘플 정보, Pedigree 데이터
도구Python (pandas, numpy, matplotlib, seaborn, scipy)

학습 내용:

  • 표현형 기반 임상 데이터 구조 이해
    • Panel 데이터 (population, super population, gender)
    • Pedigree 데이터 (가족 관계, 성별, 표현형)
    • 샘플 상세 정보 (시퀀싱 메타데이터)
  • 임상 정보 통계 및 연관성 분석
    • Super Population / Population 분포 분석
    • 성별 분포 및 카이제곱 검정(Chi-square test)
    • 가계(Family) 구조 분석
  • VCF-임상 표현형 통합 분석을 위한 전처리
    • VCF 샘플과 임상 데이터 ID 매칭
    • 통합 데이터셋 구축
    • 분석 대상 서브셋 생성 (EAS, Unrelated 등)

2강: VCF 기초 통계 분석

파일: notebooks/Lecture02_VCF_Basic_Statistics.ipynb

항목내용
목표VCF 파일 형식을 이해하고 변이의 기본 통계 특성을 분석
사용 데이터1000 Genomes chr22 VCF
도구bcftools, vcftools, Python (cyvcf2, pandas, matplotlib)

학습 내용:

  • VCF 파일 주요 컬럼 확인 및 통계 지표 계산
    • VCF 8개 고정 컬럼 (CHROM, POS, ID, REF, ALT, QUAL, FILTER, INFO)
    • 헤더 메타 정보 (INFO, FORMAT 필드 정의)
    • bcftools stats 기본 통계
  • SNP·INDEL 등 변이 타입 분포 시각화
    • SNP vs INDEL 비율
    • Allele Frequency(AF) 분포
    • 변이 위치 밀도 분포
    • Multi-allelic 변이 분포
  • Mutation Profile 기반 변이 특성 요약
    • 6-class / 12-class SNP 치환 유형
    • Transition/Transversion (Ts/Tv) 비율
    • INDEL 크기 분포
    • Super Population별 변이 통계 비교
  • 필터링 조건별 변이 수 비교 분석
    • MAF 기반 필터링
    • 변이 타입별 필터링 (SNP only, Biallelic 등)
    • 복합 필터링 전략 비교
    • vcftools 품질 통계 (depth, missingness)

3강: 개인 환자 유전체 기반 변이 해석

파일: notebooks/Lecture03_Individual_WGS_Analysis.ipynb

항목내용
목표개인 변이에 대한 annotation, 임상 해석 및 variant prioritization
사용 데이터Germline: 1000 Genomes 개인 VCF + ClinVar (GRCh37)
Somatic: HCC1395 유방암 세포주 VCF + ClinVar (GRCh38)
도구bcftools annotate, tabix, Ensembl VEP (Docker / Singularity / Conda), Ensembl REST API, cyvcf2, pandas, requests

학습 내용:

  • 변이 주석(annotation) 결과 확인 및 해석
    • ClinVar INFO 필드(CLNSIG/CLNDN/CLNREVSTAT/GENEINFO/MC/ORIGIN) 이해
    • bcftools annotate로 환자 VCF에 ClinVar 주석 주입
    • Ensembl VEP 설치 가이드 (Docker / Singularity / Conda)
    • VEP 실습: 소규모 입력 VCF로 Docker 실행(선택) + Ensembl REST API로 즉시 annotation (cache 불필요)
    • VEP consequence 계층(HIGH/MODERATE/LOW/MODIFIER) 개념
    • VEP(기능적 영향) + ClinVar(임상적 병원성) 통합 해석
  • 질환 관련 변이 선별 및 Variant Prioritization
    • CLNSIG 정규화 및 분포 분석
    • 단계별 필터링 funnel (frequency → impact → CLNSIG → review status)
    • 병원성 변이 유전자/zygosity 분포
  • 암(Somatic)·희귀질환(Germline) 분석 결과 비교 — 실제 공공 데이터 기반
    • Germline 환자(NA18939, JPT): 1000 Genomes 개인 샘플 → 희귀질환 해석 파이프라인 (ACMG)
    • Somatic 샘플(HCC1395): SEQC2 유방암 세포주 high-confidence callset (chr22 657 변이)
    • TVAF/NVAF 분포, Clonal/Subclonal 분류, LOH 식별
    • Somatic Prioritization: HighConf → Coding impact (HIGH/MODERATE) → 암 driver 유전자
    • 두 트랙 reference genome 차이(GRCh37 vs GRCh38) 실습 및 대응
    • ACMG guideline vs AMP Tier I-IV 차이
    • 실제 임상 적용 체크리스트

4강: 환자 코호트 기반 질병 연관성 분석

파일: notebooks/Lecture04_Cohort_WGS_Analysis.ipynb

항목내용
목표다수 샘플 기반의 집단 유전체 분석 (QC, GWAS, PRS)
사용 데이터1000 Genomes Joint VCF (chr22), 1강 통합 샘플 정보
도구bcftools, vcftools, PLINK(명령어 참고), PRSice-2(명령어 참고), Python (scipy, cyvcf2)

학습 내용:

  • 다수 샘플 VCF 통합 및 코호트 QC 수행
    • Unrelated 샘플 + biallelic SNP + MAF ≥ 0.01 필터링
    • MAF / Missingness / HWE Chi-square 지표 계산 및 시각화
    • PLINK QC 명령어 예시
  • GWAS 분석 실행 및 결과 시각화
    • Python 기반 Chi-square GWAS 시뮬레이션 (EAS vs Non-EAS)
    • Manhattan plot, QQ plot, Genomic Inflation Factor (λ)
    • PLINK --glm 명령어 예시 (logistic/linear regression)
  • PRS 계산을 통한 개인별 유전적 위험도 비교
    • Weight 테이블 구성 및 LD clumping 간략 구현
    • 개인별 PRS raw / z-score 산출
    • Super Population별 PRS 분포 및 high/low risk 개인 식별
    • PRSice-2 명령어 예시

5강: Advanced WGS Analysis & AI

파일: notebooks/Lecture05_Advanced_WGS_AI.ipynb

항목내용
목표유전체 데이터를 활용한 머신러닝 기반 분석 (Feature engineering + Mutational signature + ML 예측)
사용 데이터4강 코호트 VCF, 3강 HCC1395 somatic VCF, 1강 통합 샘플 정보
도구Python (scikit-learn, cyvcf2, scipy.sparse, NMF, PCA)

학습 내용:

  • 유전체 변이 정보를 feature matrix 로 변환
    • Sparse (샘플 × SNP) dosage matrix 구축
    • MAF 기반 feature 축소, 샘플별 variant load 시각화
  • 차원 축소 (PCA)
    • Standardize → PCA(10), Super Population 별 PC1/PC2 scatter
    • Scree plot / explained variance 분석
  • Mutational signature 분석 및 NMF 기반 패턴 추출
    • SBS6 (pyrimidine-based) counts matrix 구축 (Germline 20명 + Somatic 1명)
    • NMF (K=3) 분해: $V \approx W \times H$
    • Germline vs Somatic(HCC1395) signature exposure 비교
  • 머신러닝 모델을 이용한 질병/형질 예측 분석
    • Task: EAS super population 이진 분류
    • Logistic Regression / Random Forest / Gradient Boosting 3개 모델 비교
    • 5-fold CV + ROC AUC / Confusion matrix / Feature importance
    • Super Population 별 예측 confidence 분포, 오분류 해석

데이터 정보

데이터 저장 경로

모든 공공 데이터는 아래 경로에 저장되어 있습니다:

/tier4/DSC/jheepark/bbp-wgs-data/

디렉토리 구조

bbp-wgs-data/
├── individual/
│   ├── ALL.chr22.*.vcf.gz              # 1000G Germline (GRCh37)
│   └── somatic/
│       └── HCC1395_somatic.chr22.vcf.gz # SEQC2 Somatic (GRCh38)
├── cohort/                              # 코호트 Joint VCF 데이터 (4강에서 생성)
├── annotation/
│   ├── clinvar.vcf.gz                   # ClinVar GRCh37
│   ├── clinvar_GRCh38.vcf.gz            # ClinVar GRCh38 (3강 Somatic 트랙용)
│   └── vep/                             # VEP cache (선택)
├── phenotype/                           # 표현형/임상 데이터
└── reference/                           # Reference 데이터

개인 WGS 실습 데이터

1. 1000 Genomes Individual Sample VCF

항목내용
파일individual/ALL.chr22.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.vcf.gz
인덱스individual/ALL.chr22.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.vcf.gz.tbi
설명1000 Genomes Phase 3 - Chromosome 22, 2,504 샘플의 SNP/INDEL 변이 정보
ReferenceGRCh37 (hg19)
출처https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502
사용 강의1강, 2강, 3강

2. ClinVar VCF — GRCh37 (임상 병원성, Germline 트랙)

항목내용
파일annotation/clinvar.vcf.gz
인덱스annotation/clinvar.vcf.gz.tbi
설명변이의 병원성(Pathogenic/Likely pathogenic/VUS 등) 분류 정보
ReferenceGRCh37 (1000 Genomes와 호환)
출처https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh37
사용 강의3강 (Germline 트랙)

2-1. ClinVar VCF — GRCh38 (Somatic 트랙)

항목내용
파일annotation/clinvar_GRCh38.vcf.gz
인덱스annotation/clinvar_GRCh38.vcf.gz.tbi
설명HCC1395 Somatic VCF 와 동일 reference (GRCh38) 로 annotation 하기 위한 버전
ReferenceGRCh38
출처https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38
사용 강의3강 (Somatic 트랙)

2-2. HCC1395 Somatic VCF (유방암 세포주 벤치마크)

항목내용
파일individual/somatic/HCC1395_somatic.chr22.vcf.gz (chr22 추출본)
원본individual/somatic/HCC1395_somatic_snv.vcf.gz, ..._indel.vcf.gz
설명SEQC2 consortium 의 HCC1395 유방암 세포주 (vs matched normal HCC1395BL) high-confidence somatic call set. 다중 aligner × 다중 caller 합의 기반
ReferenceGRCh38
변이 수 (chr22)SNV 627 + INDEL 30 = 657
주요 INFOTVAF (tumor VAF), NVAF (normal VAF), HighConf/MedConf/LowConf, PacBio 검증
출처https://ftp.ncbi.nlm.nih.gov/ReferenceSamples/seqc/Somatic_Mutation_WG/release/latest/
사용 강의3강 (Somatic 트랙)

3. gnomAD VCF (인구집단 빈도)

항목내용
설명대규모 인구집단 allele frequency 정보. Rare variant filtering에 활용
출처https://gnomad.broadinstitute.org/downloads
사용 강의3강
비고용량이 크므로 필요 시 chromosome 단위로 다운로드

4. Ensembl VEP Cache (기능적 영향)

항목내용
설명변이의 유전자 영향(consequence), missense/nonsense 여부 및 기능 예측 정보
출처https://ftp.ensembl.org/pub/current_variation/vep
사용 강의3강
비고VEP 설치 시 자동 다운로드 가능

표현형/임상 데이터

5. 샘플 패널 정보

항목내용
파일phenotype/integrated_call_samples_v3.20130502.ALL.panel
설명2,504 샘플의 인구집단(population), 대륙 그룹(super population), 성별 정보
출처https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502
사용 강의1강

6. 샘플 상세 정보

항목내용
파일phenotype/20130606_sample_info.xlsx
설명샘플별 상세 메타데이터 (시퀀싱 플랫폼, coverage 등)
출처https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/working/20130606_sample_info
사용 강의1강

7. Pedigree (가계도) 정보

항목내용
파일phenotype/20130606_g1k.ped
설명가족 관계, 성별, 표현형 정보 (PED 형식)
출처https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/working/20130606_sample_info
사용 강의1강

8. 전처리 산출물 (1강에서 생성)

파일설명
phenotype/integrated_sample_info.tsvPanel + Pedigree 병합 통합 데이터
phenotype/eas_sample_info.tsv동아시아(EAS) 서브셋
phenotype/unrelated_samples.txtUnrelated 샘플 목록 (GWAS용)

코호트 WGS 실습 데이터 (4-5강에서 사용 예정)

9. 1000 Genomes Joint VCF

항목내용
설명다수 샘플 통합 Joint VCF, 집단 분석 및 GWAS에 활용
출처https://www.internationalgenome.org/data
사용 강의4강

10. GWAS Catalog Summary Statistics

항목내용
설명형질 정보 기반 통계 데이터, 유전체 연관 분석용
출처https://www.ebi.ac.uk/gwas
사용 강의4강

11. PGS Catalog (Polygenic Risk Score)

항목내용
설명공개 PRS 모델(weight 파일), EAS ancestry 필터 가능
출처https://www.pgscatalog.org
사용 강의4강

데이터 다운로드 스크립트

개인 WGS 실습에 필요한 핵심 데이터를 다운로드하는 명령어:

bash
DATA_DIR="/tier4/DSC/jheepark/bbp-wgs-data"

# 1000 Genomes chr22 VCF
wget -P ${DATA_DIR}/individual/ \
  "https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502/ALL.chr22.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.vcf.gz"
wget -P ${DATA_DIR}/individual/ \
  "https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502/ALL.chr22.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.vcf.gz.tbi"

# ClinVar VCF (GRCh37)
wget -P ${DATA_DIR}/annotation/ \
  "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh37/clinvar.vcf.gz"
wget -P ${DATA_DIR}/annotation/ \
  "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh37/clinvar.vcf.gz.tbi"

# 표현형 데이터
wget -P ${DATA_DIR}/phenotype/ \
  "https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20130502/integrated_call_samples_v3.20130502.ALL.panel"
wget -P ${DATA_DIR}/phenotype/ \
  "https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/working/20130606_sample_info/20130606_sample_info.xlsx"
wget -P ${DATA_DIR}/phenotype/ \
  "https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/working/20130606_sample_info/20130606_g1k.ped"

# --- 3강 Somatic 트랙 추가 데이터 ---
# ClinVar VCF (GRCh38)
wget -P ${DATA_DIR}/annotation/ \
  "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz" \
  -O ${DATA_DIR}/annotation/clinvar_GRCh38.vcf.gz
wget -P ${DATA_DIR}/annotation/ \
  "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz.tbi" \
  -O ${DATA_DIR}/annotation/clinvar_GRCh38.vcf.gz.tbi

# HCC1395 SEQC2 Somatic high-confidence call set (GRCh38)
mkdir -p ${DATA_DIR}/individual/somatic
wget -P ${DATA_DIR}/individual/somatic/ \
  "https://ftp.ncbi.nlm.nih.gov/ReferenceSamples/seqc/Somatic_Mutation_WG/release/latest/high-confidence_sSNV_in_HC_regions_v1.2.1.vcf.gz" \
  -O ${DATA_DIR}/individual/somatic/HCC1395_somatic_snv.vcf.gz
wget -P ${DATA_DIR}/individual/somatic/ \
  "https://ftp.ncbi.nlm.nih.gov/ReferenceSamples/seqc/Somatic_Mutation_WG/release/latest/high-confidence_sINDEL_in_HC_regions_v1.2.1.vcf.gz" \
  -O ${DATA_DIR}/individual/somatic/HCC1395_somatic_indel.vcf.gz

# chr22 추출 + chr prefix 제거 (bcftools, tabix 필요)
cd ${DATA_DIR}/individual/somatic
tabix -p vcf HCC1395_somatic_snv.vcf.gz
tabix -p vcf HCC1395_somatic_indel.vcf.gz
printf "chr%s\t%s\n" 22 22 > rename.txt  # 필요시 모든 염색체 추가
bcftools concat -a HCC1395_somatic_snv.vcf.gz HCC1395_somatic_indel.vcf.gz \
    | bcftools view -r chr22 \
    | bcftools annotate --rename-chrs rename.txt \
    -Oz -o HCC1395_somatic.chr22.vcf.gz
tabix -p vcf HCC1395_somatic.chr22.vcf.gz