[Part 1/3] PPI 네트워크 구축과 Hub 단백질 분석 실전 가이드
STRING부터 Cytoscape, R igraph까지 — DEG 리스트를 받았을 때 가장 먼저 그려야 할 것. centrality 지표 비교와 흔한 함정.
📚 시리즈 안내 · 본 글은 3편 시리즈의 첫 번째입니다. Part 1 — PPI + Hub (현재) · Part 2 — GO + Pathway Enrichment · Part 3 — TF Activity + Biomarker 통합
RNA-seq 또는 proteomics에서 DEG 리스트가 나왔다고 가정합시다. 다음 질문은 거의 항상 같습니다 — "이 중에서 어떤 유전자가 가장 중요한가?" PPI 네트워크와 Hub 분석은 이 질문에 답하는 가장 직관적이고 검증된 첫 단계입니다.
📌 TL;DR
- PPI 데이터는 STRING이 표준이지만 confidence ≥ 700, 증거 타입 필터링 필수
- Hub는 단일 centrality 지표가 아니라 여러 지표의 교집합으로 선정
- cytoHubba 12종 알고리즘 중 MCC, Degree, Betweenness를 함께 보는 것이 일반적
- "많이 연구된 유전자가 Hub로 잡히는 편향"을 항상 경계할 것
1. PPI 데이터 소스 비교
| 데이터베이스 | 특징 | 용도 |
|---|---|---|
| STRING | 물리적 + 기능적 상호작용, confidence score 0-1000 | 가장 일반적, 초기 탐색 |
| BioGRID | 실험 검증된 상호작용 중심, 큐레이션 엄격 | 고품질 네트워크 필요 시 |
| IntAct | EBI 운영, 문헌 기반 수동 큐레이션 | 보수적 분석 |
| HuRI | yeast two-hybrid 기반 인간 인터랙톰 | 실험 검증 데이터셋 중심 연구 |
| HPRD / MINT | 구형이지만 여전히 참조 | 역사적 비교 |
⚠️ STRING 사용 시 주의 — STRING의 엣지 중 상당 부분은 text-mining 기반입니다. 이는 문헌에서 함께 언급됐다는 약한 증거일 뿐 실제 물리적 상호작용이 아닐 수 있습니다.
confidence score ≥ 700 (high)또는≥ 900 (highest)로 필터- Evidence channel에서 experiments + databases만 선택하면 보수적
- 분석 결과 reporting 시 사용한 score threshold와 channel 명시 필수
2. 도구 선택 및 워크플로
주요 도구:
- STRING DB (web) — 빠른 탐색, 시각화 내장
- Cytoscape — 표준 데스크탑 도구, 플러그인 생태계
- igraph (R) — 통계 계산, 자동화 파이프라인
- NetworkX (Python) — Python 워크플로 통합
- STRINGdb (R Bioconductor) — STRING과 R 직결
- Gephi — 대규모 네트워크 시각화
가장 흔한 조합: STRINGdb로 데이터 가져오기 → R/Python에서 centrality 계산 → Cytoscape에서 시각화 + 모듈 분석.
3. Hub 식별 — Centrality 지표 비교
| 지표 | 정의 | 생물학적 의미 |
|---|---|---|
| Degree centrality | 엣지 수 | 직접 상호작용 파트너 수 — 가장 단순한 Hub 기준 |
| Betweenness | 최단 경로 위에 등장하는 빈도 | "정보 흐름의 병목" — 신호 전달 핵심 |
| Closeness | 평균 최단 거리의 역수 | 네트워크 전체에 빠르게 영향 |
| Eigenvector / PageRank | "중요한 노드에 연결된 정도" | 영향력 있는 친구를 둔 노드 |
| Bottleneck (BN) | betweenness 상위 비율 | essential gene과 상관 높음 |
| MCC (Maximal Clique Centrality) | cytoHubba 고유 알고리즘 | essential protein 식별 정확도 높음 (Chin et al. 2014) |
R 코드 예시 — STRING + igraph로 Hub 분석
library(STRINGdb)
library(igraph)
# STRING v12, 인간(9606), confidence threshold 700
string_db <- STRINGdb$new(version="12.0", species=9606,
score_threshold=700, input_directory="")
mapped <- string_db$map(deg_df, "gene_symbol", removeUnmappedRows=TRUE)
hits <- mapped$STRING_id
# 서브네트워크 → igraph 객체
g <- string_db$get_subnetwork(hits)
# 여러 centrality 지표 동시 계산
hub_df <- data.frame(
gene = V(g)$name,
degree = degree(g),
btw = betweenness(g, normalized=TRUE),
close = closeness(g, normalized=TRUE),
eigen = eigen_centrality(g)$vector,
pagerank= page_rank(g)$vector
)
# 여러 지표 상위 N에서 공통적으로 잡히는 유전자가 진짜 Hub
top_n <- 30
top_genes <- Reduce(intersect, list(
head(hub_df[order(-hub_df$degree), "gene"], top_n),
head(hub_df[order(-hub_df$btw), "gene"], top_n),
head(hub_df[order(-hub_df$pagerank),"gene"], top_n)
))
4. Cytoscape + 핵심 플러그인
- cytoHubba — 12가지 Hub 알고리즘 (MCC, DMNC, MNC, Degree, EPC, BottleNeck 등) 일괄 랭킹
- MCODE — 조밀한 서브 모듈 탐지 → 단백질 복합체 후보
- ClueGO / CluePedia — GO·Pathway 정보를 네트워크에 오버레이
- stringApp — STRING과 직접 연동, Cytoscape 안에서 query 가능
- NetworkAnalyzer — 기본 내장, 토폴로지 통계
💡 실전 Hub 선정 전략
- cytoHubba에서 MCC + Degree + Betweenness 각 상위 50개 추출
- 세 리스트의 교집합 (보통 10~30개)을 1차 후보로 확정
- MCODE로 발견된 dense module의 seed 노드와 추가 비교
- 최종 후보를 literature mining(PubMed, GeneCards)으로 selection bias 확인
- 실험 검증(qPCR, KD/KO phenotype, IP-MS)으로 좁힘
5. Hub 해석에서 자주 빠지는 함정
⚠️ PPI 네트워크의 구조적 편향
- 연구 편향 (study bias) — TP53, EGFR, AKT1처럼 많이 연구된 유전자가 자연스럽게 Hub로 잡힙니다. 새 발견인지, 기존 지식의 재확인인지 구분이 필요합니다.
- Tissue-specific interaction 무시 — 일반 PPI DB는 모든 조직 평균입니다. 조직 특이 분석에는 HPA / GTEx 발현 데이터로 필터해야 합니다 (해당 조직에서 실제 발현되는 단백질만 남기기).
- 동적 상호작용 무시 — PPI는 "가능한 상호작용"이지 "지금 일어나는 상호작용"이 아닙니다. 시점·조건별 정보는 ChIP/co-IP/cross-linking proteomics 같은 별도 데이터가 필요합니다.
- Self-loop / 자기 노드 카운팅 — 큐레이션 오류로 들어가는 경우 있음. Cleaning 단계에서
simplify(g, remove.multiple=TRUE, remove.loops=TRUE)권장.
6. Hub 후보 시각화 예시
CDK1 ─── ★TP53★ ─── MDM2
│ ╱ │ ╲
BRCA1 ─ ★MYC★ ─ CCND1 ─ RB1
│ │
ATM ─────── CHEK2
★ Hub: 여러 centrality 지표 상위에 공통으로 등장
실제 분석에서는 Cytoscape의 Continuous mapping으로 노드 크기 = degree, 색상 = log2FC, 테두리 = significance 같은 3중 시각 인코딩을 적용하면 figure 1 후보로 바로 활용할 수 있습니다.
7. 다음 단계
Hub 후보 리스트가 나왔다면, 다음으로 답해야 할 질문은 두 가지입니다:
- "이 Hub들이 어떤 생물학적 기능에 모여 있는가?" → GO Enrichment
- "이 Hub들이 어떤 신호 경로에 집중돼 있는가?" → Pathway Enrichment
➡️ 다음 글: Part 2 — GO Annotation + Pathway Enrichment 실전 가이드
clusterProfiler·fgsea·MSigDB·KEGG·Reactome — 도구 선택과 흔한 통계적 함정까지.