본문 바로가기

Paper

PGS 카탈로그 소개

  •  PGS(polygenic score) 란 일반적으로 수백만 개의 유전적 변이(대개 SNP)로 구성되며, 관련 게놈 전체 연관 연구( GWAS )에서 추정된 해당 효과 크기를 곱한 대립유전자 용량의 가중 합을 사용하여 결합.
  • 질병과 같은 특정 표현형을 예측하는 경우 genetic scores, genomic risk scores (GRS), polygenic risk scores (PRS) 라고도 함.

Downloads & Access

  • 해당 카탈로그는 발표된 PGS DB. 각 PGS는 메타 데이터로 일관되게 주석처리되어있음
  • 점수 파일(변이, 효과 대립유전자/가중치), PGS 개발 및 적용 방법에 대한 설명, 예측 성능 평가 등이 포함됨

<< 실제 데이터 소개

pgsc_calc: a reproducible workflow to calculate polygenic scores

 

더보기

PGS Catalog 스코어가 만들어지는 과정

1. 기반: GWAS summary statistics

GWAS에서 각 SNP의 effect size(β 또는 OR) 추정:

 
 
표현형 ~ SNP_dosage + 공변량

→ 수백만 개 SNP × β 값 테이블 = summary statistics

2. GWAS β를 그대로 쓰면 안 되는 이유

LD(연관 불평형) 문제: 실제 causal variant 1개가 주변 수십~수백 개 SNP과 상관되어 있어서, 다 더하면 같은 신호를 중복 계산.

 
 
causal SNP ── r²=0.9 ── tag SNP A
           ── r²=0.8 ── tag SNP B
           ── r²=0.7 ── tag SNP C

β_A, β_B, β_C 다 더하면 같은 효과를 3번 합산.

3. PGS 가중치 계산 방법들

방법원리해당 PGS

 

P+T (Pruning+Thresholding) LD pruning 후 p-value 기준 SNP 선택, GWAS β 그대로 사용 PGS002280 (83 SNPs)
LDpred2 Bayesian shrinkage, LD 구조 모델링해서 β 재추정 PGS004034
PRS-CS Continuous shrinkage prior, β를 0 방향으로 수축 PGS002753
dbSLMM Mixed model 기반 β 재추정 PGS003992

 

4. PGS 계산 공식

PRS_i = Σ (w_j × dosage_ij)

w_j  = PGS catalog의 가중치 (방법마다 다름)
dosage_ij = 샘플 i의 SNP j 복사 수 (0, 1, 2)

P+T: w_j ≈ GWAS β_j (선택된 SNP만)
LDpred2/PRS-CS: w_j = shrunk β_j (LD 보정된 값, GWAS β보다 작음)

5. PGS002280 (83 SNPs) 구체적으로

Bellenguez 2022 GWAS (111,326명) → genome-wide significant SNPs → LD clumping → 83개 독립 loci 선택 → 각 locus의 GWAS β를 가중치로 사용.

P+T 방식 = GWAS β와 가장 유사하지만 LD independent한 SNP만 선택한 것.

Workflow summary

 

1. 설치하기

java 설치, 현재 버전 11 이므로 23.10.0 nextflow 버전 설치(https://dokk.org/documentation/nextflow/v23.10.0/getstarted 참고)

java 설치 및 conda를 이용한 nextflow 설치 방법 http://docs.seqera.io/nextflow/install 참고

wget https://github.com/nextflow-io/nextflow/releases/download/v23.10.0/nextflow
chmod +x nextflow
./nextflow -version

#N E X T F L O W  ~  version 23.10.0 출력되면 성공

# 실행 가능한 경로로 이동
mkdir -p $HOME/.local/bin/
mv nextflow $HOME/.local/bin/

#올바르게 설치되었는 확인
nextflow info

 

2. nextflow로 pgsc_calc 실행하기

nextflow run pgscatalog/pgsc_calc -profile test,docker

#실행 결과가 다음과 같이(successfully~) 나오면 정상
-[pgscatalog/pgsc_calc] Pipeline completed successfully-
Completed at: 20-Apr-2026 11:49:16
Duration    : 10m 55s
CPU hours   : (a few seconds)
Succeeded   : 8

 

테스트 데이터(의미없는 데이터) 로 실행했을 때, 에러가 안나는지 검토해야함.

docker 대신 해당 위치에 singularity 또는 conda를 넣어서 실행할 수 있음.

docker의 경우 실행 권한이 없어서 conda로 진행함.

vi environment.yml

name: pgscatalog-utils
channels:
  - conda-forge
  - bioconda
  - nodefaults
dependencies:
  - pgscatalog.core=1.0.0
  - pgscatalog.match=0.4.0
  - pgscatalog.calc=0.3.1=pyhdfd78af_1

 

conda search -c conda-forge -c bioconda pgscatalog.calc=0.3.1 --info

의존성 목록에서 pgscatalog.core 제약 조건 확인-> calc=0.3.1= pyhdfd78af_1 이 pgscatalog.core=1.0.0  와 호환되는 것을 확인.
yaml 수정후 rm -rf ~/work/conda/pgscatalog-utils-* 한 다음 다시 실행(nextflow run pgscatalog/pgsc_calc -profile test,conda)

 

 

3. sampleheet 작성

 

  • sampleset
  • path_prefix
  • chrom
  • format

예시:

sampleset,path_prefix,chrom,format
biobank,./260326_biobank_all/biobank_data/c1_merged,1,vcf
biobank,./260326_biobank_all/biobank_data/c2_merged,2,vcf

 

4. 실행

nextflow run pgscatalog/pgsc_calc \
    -profile conda \
    --input samplesheet.csv --target_build GRCh37 \
    --pgs_id PGS002280 \
    --run_ancestry pgsc_HGDP+1kGP_v1.tar.zst

 

 

# pgs_id [PGS id]

해당 카탈로그 내 다유전자 점수를 사용함.

--pgs_id PGS001229 # one score
--pgs_id PGS001229,PGS001405 # many scores separated by , (no spaces)

 

AD 연관된 pgs를 보려고하니, MONDO_0004975를 기준으로 53개 프로젝트가 나옴.

각 프로젝트 별로 적게는 6개 많게는 1,136,212 변이가 조사됨.

GWAS 수행한 인종도 같이 표현되어있음. 

 

우선 다음과 같은 기준으로 하나의 PGS만 선택해봄

PGS002280 (Bellenguez 2022, Nature Genetics)

  • 현재까지 최대 규모 AD GWAS (111,326명)
  • 유럽인 기반
  • 83 variants → 계산 빠름, UK Biobank에 거의 다 있음
  • 가장 많이 인용되는 AD PRS 기준선

변이가 많다고 좋은 것은 아님, 노이즈가 그만큼 껴 있고 계산이 어려움.

 

#  --run_ancestry [DB파일명]

유전적 조상 유사성 계산 및 PGS 정규화를 활성화하는 방법

wget https://ftp.ebi.ac.uk/pub/databases/spot/pgs/resources/pgsc_HGDP+1kGP_v1.tar.zst

이 데이터베이스는 1000 Genomes와 Human Genome Diversity Project 참조 패널을 통합한 것으로, 권장되는 기본 패널입니다.

 

1000 Genomes만 사용하시는 것을 선호하실 수도 있습니다.

 

왜 ancestry 보정이 필요한가

https://pgsc-calc.readthedocs.io/en/latest/explanation/geneticancestry.html

PRS(PGS) 분포의 평균과 분산이 조상(ancestry) 집단마다 다름. 유럽인 GWAS로 만든 PRS를 그대로 쓰면 유럽인은 점수가 높게, 동아시아인은 낮게 나오는 체계적 편향이 생김. 환자/대조군 비교에서 이 편향이 confounding으로 작용.


--run_ancestry 원리 (단계별)

1단계: Reference PCA 구성

1000 Genomes(기본값) 레퍼런스 패널로 PCA를 만들고, target 샘플을 그 유전적 조상 공간에 projection.

단순 projection은 shrinkage bias 문제가 있어서, FRAPOSA의 OADP(Online SVD + Shrinkage Adjustment) 방법으로 bias 없는 PC projection을 수행. 

2단계: 집단 유사도 분류

RandomForest classifier를 레퍼런스 패널의 PCA 로딩(기본 10 PC)으로 학습해서, target 샘플 각각이 어느 레퍼런스 집단(EUR/EAS/AFR 등)과 가장 유사한지 분류. 또는 Mahalanobis distance로 계산하는 방법도 사용 가능.

3단계: PGS 보정 (두 가지 방법)

경험적 방법(empirical): 유사 집단 내 PGS 분포의 평균/표준편차로 Z-score 계산. 연속형 PCA 기반 방법(continuous): PC 값을 공변량으로 사용해 PGS를 회귀 보정.