네트워크 생물학

[Part 1/3] PPI 네트워크 구축과 Hub 단백질 분석 실전 가이드

STRING부터 Cytoscape, R igraph까지 — DEG 리스트를 받았을 때 가장 먼저 그려야 할 것. centrality 지표 비교와 흔한 함정.

·8 min read
#PPI#네트워크 분석#STRING#Cytoscape#Hub protein#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실험 검증된 상호작용 중심, 큐레이션 엄격고품질 네트워크 필요 시
IntActEBI 운영, 문헌 기반 수동 큐레이션보수적 분석
HuRIyeast 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 선정 전략

  1. cytoHubba에서 MCC + Degree + Betweenness 각 상위 50개 추출
  2. 세 리스트의 교집합 (보통 10~30개)을 1차 후보로 확정
  3. MCODE로 발견된 dense module의 seed 노드와 추가 비교
  4. 최종 후보를 literature mining(PubMed, GeneCards)으로 selection bias 확인
  5. 실험 검증(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 — 도구 선택과 흔한 통계적 함정까지.

관련 글