Appearance
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 변이 정보 |
| Reference | GRCh37 (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 등) 분류 정보 |
| Reference | GRCh37 (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 하기 위한 버전 |
| Reference | GRCh38 |
| 출처 | 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 합의 기반 |
| Reference | GRCh38 |
| 변이 수 (chr22) | SNV 627 + INDEL 30 = 657 |
| 주요 INFO | TVAF (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.tsv | Panel + Pedigree 병합 통합 데이터 |
phenotype/eas_sample_info.tsv | 동아시아(EAS) 서브셋 |
phenotype/unrelated_samples.txt | Unrelated 샘플 목록 (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