GO·경로 농축분석이란? — 유전자 목록에서 의미 찾기

BIO GLOSSARY · BIOINFORMATICS 101
GO·경로 농축분석이란? — 유전자 목록에서 생물학적 의미 찾기
TL;DR
농축분석(enrichment analysis)은 차등발현 유전자(DEG) 같은 '유전자 목록'에서 어떤 생물학적 기능·경로가 우연보다 도드라지는지 통계로 찾아내는 방법입니다. RNA-seq으로 유의미하게 바뀐 유전자 수백 개를 얻어도 그 목록 자체는 아직 '무슨 일이 일어났는지'를 말해 주지 않죠. 여기에 의미를 입히는 두 갈래가 있습니다. 첫째, 과대표현분석(over-representation analysis, ORA)은 내 유의 유전자 목록이 특정 기능 범주에 우연보다 많이 몰렸는지를 초기하분포(hypergeometric)나 피셔 정확검정 같은 검정으로 따집니다(배경집합, background 필요). 둘째, 유전자셋 농축분석(gene set enrichment analysis, GSEA)은 유의·비유의를 자르는 컷오프 없이 전체 유전자를 순위로 세운 뒤, 관심 유전자셋이 위(상향)나 아래(하향)로 쏠렸는지를 러닝 농축점수(running enrichment score)로 읽습니다. 기능 어휘의 표준은 유전자 온톨로지(Gene Ontology, GO)이고, 경로 데이터베이스로는 KEGG·Reactome·MSigDB가 함께 쓰입니다. 검정을 수천 번 돌리므로 다중검정보정(p.adjust·BH)은 필수죠. 결과는 농축된 term, 보정 p값(p.adjust), 유전자 비율, fold enrichment로 해석합니다.
🔗 관련 글 · 목록을 뽑고, 의미로 옮기고, 제대로 거르기
• clusterProfiler로 GO·KEGG·GSEA 농축분석 · p-value·FDR·다중검정보정
1. 한 줄 정의 — 목록을 '기능·경로'로 번역한다
농축분석은 유전자 목록을 받아, 그 안에 어떤 생물학적 기능이나 경로가 통계적으로 두드러지게 모여 있는지 알려 주는 분석입니다. 실험에서 흔히 나오는 결과물이 '유전자 목록'입니다. DESeq2로 뽑은 차등발현 유전자(differentially expressed genes, DEG) 수백 개, 스크리닝에서 걸러진 후보 유전자 무리 같은 것들이죠.
문제는 목록만 봐서는 큰 그림이 안 보인다는 데 있습니다. 유전자 300개의 이름을 하나씩 들여다본다고 세포에서 무슨 일이 벌어졌는지 파악되진 않죠. 농축분석은 이 목록을 '염증 반응', '세포주기', '지방 대사' 같은 기능 단위의 언어로 옮겨 줍니다. 그래서 흔히 유전자 목록에 '생물학적 의미를 입히는' 단계라고 부릅니다.
2. 어원·역사 — GO 표준어휘와 GSEA의 등장
이 분석이 가능해진 바탕에는 유전자 기능을 부르는 공통 언어, 유전자 온톨로지(Gene Ontology, GO)가 있습니다. 2000년 애시버너 등 (Ashburner et al., 2000)이 GO 컨소시엄을 발족하며, 종을 가리지 않고 쓸 수 있는 표준 어휘를 세웠습니다. 그전까지는 연구실마다 유전자 기능을 제각각 표현해 비교가 어려웠는데, GO가 이를 하나의 통제된 어휘(controlled vocabulary)로 묶은 것이죠.
방법론에서는 두 흐름이 자리 잡았습니다. 초기에는 유의 유전자 목록을 특정 범주에 대조하는 과대표현분석(ORA)이 널리 쓰였습니다. 이어 2005년 서브라마니안 등 (Subramanian et al., 2005)이 컷오프에 기대지 않는 유전자셋 농축분석(GSEA)을 발표하며 새 축을 열었습니다. 2012년에는 위 (Yu et al., 2012)의 clusterProfiler가 나와, ORA·GSEA와 GO·KEGG를 한 R 패키지에서 다루는 표준 도구로 자리매김했습니다.
3. 개념 풀이 — GO의 3영역과 계층 구조
GO를 이해하면 농축분석의 절반은 잡힙니다. GO는 유전자 기능을 세 영역(도메인)으로 나눠 기술합니다.

생물학적 과정(biological process, BP)은 '무엇을 하는가'로, 세포자멸사·면역 반응처럼 여러 단계로 이뤄진 큰 사건을 가리킵니다. 분자 기능(molecular function, MF)은 '분자 수준에서 무슨 활성인가'로, 효소 활성이나 결합 능력 같은 것이죠. 세포 구성요소(cellular component, CC)는 '어디에 있는가'로, 핵막·리보솜처럼 유전자 산물이 놓인 위치를 뜻합니다.
각 영역은 부모-자식으로 이어진 계층 구조를 이룹니다. 예컨대 '면역 반응'이라는 넓은 항목 아래에 '염증 반응', 그 아래에 더 구체적인 항목이 가지처럼 붙죠. 위로 갈수록 포괄적이고 아래로 갈수록 구체적입니다. 그래서 한 유전자는 여러 GO term에 동시에 붙을 수 있고, 어느 수준의 term이 농축됐는지가 해석의 결이 됩니다.
4. 작동 원리 ① — 과대표현분석(ORA)
ORA는 발상이 직관적입니다. "내 유의 유전자 목록에 특정 GO term이 우연히 기대되는 것보다 많이 들어 있나?"를 묻죠. 네 가지 숫자가 필요합니다. ⓐ 전체 배경집합(background, 보통 실험에서 검출된 전체 유전자)의 크기, ⓑ 그 배경에서 해당 term에 속한 유전자 수, ⓒ 내 유의 목록의 크기, ⓓ 내 목록 중 그 term에 속한 유전자 수입니다.

이 네 숫자로 초기하분포(hypergeometric distribution)를 세워, "무작위로 뽑았을 때 이만큼 몰릴 확률"을 계산합니다(피셔 정확검정과 같은 틀). 확률이 아주 낮으면 우연으로 보기 어려우니, 그 term이 유의하게 농축됐다고 판정하죠. 여기서 배경집합을 무엇으로 잡느냐가 결과를 크게 좌우합니다. 검출된 유전자만 배경으로 써야지, 전체 유전체를 배경으로 두면 농축이 부풀려질 수 있습니다. ORA의 한계도 분명합니다. 유의/비유의를 가르는 컷오프에 민감하고, 컷오프 바로 아래에서 조금씩 함께 움직인 유전자들의 신호는 통째로 버려집니다.
5. 작동 원리 ② — 유전자셋 농축분석(GSEA)
GSEA는 이 컷오프 문제를 정면으로 피합니다. 유전자를 유의/비유의로 자르지 않고, 전체 유전자를 어떤 지표(예: log2 폴드체인지, 검정통계량)로 순위를 매겨 한 줄로 세웁니다. 위쪽 끝은 가장 상향(up), 아래쪽 끝은 가장 하향(down)된 유전자죠.

그다음 관심 유전자셋의 구성원이 이 순위 리스트에서 어디에 놓였는지를 훑습니다. 리스트를 위에서 아래로 걸으며, 유전자셋에 속한 멤버를 만나면 점수를 올리고 아니면 조금씩 내리는데, 이 궤적이 러닝 농축점수(running enrichment score, ES)입니다. 유전자셋이 리스트 한쪽 끝에 몰려 있으면 ES 곡선이 크게 봉우리를 그리죠. 이 봉우리의 최고점이 그 유전자셋의 농축점수가 됩니다. 유전자셋마다 크기가 다르므로, 크기 효과를 보정한 정규화 농축점수(normalized enrichment score, NES)로 서로 견줍니다. 컷오프에 의존하지 않고 '전체적으로 함께 조금씩 밀린' 약한 신호까지 포착한다는 게 GSEA의 강점입니다 (Subramanian et al., 2005).
정리하면, 확실한 유의 유전자 목록이 이미 손에 있으면 ORA가, 컷오프를 정하기 애매하거나 미세한 경향을 살피고 싶으면 GSEA가 잘 맞습니다.
6. 헷갈리는 개념 비교 — ORA vs GSEA, 그리고 경로 DB
ORA와 GSEA는 목적이 비슷해도 입력과 가정이 다릅니다. ORA는 '컷오프로 자른 유의 유전자 목록 + 배경집합'을 받아 초기하검정을 돌리고, GSEA는 '컷오프 없는 전체 순위 리스트'를 받아 러닝 ES를 계산하죠. 아래 표로 견주면 선택이 쉬워집니다.
| 구분 | 과대표현분석(ORA) | 유전자셋 농축분석(GSEA) |
|---|---|---|
| 입력 | 유의 유전자 목록 + 배경집합 | 전체 유전자 순위 리스트 |
| 컷오프 | 필요 (유의/비유의로 자름) | 불필요 (전체를 순위로) |
| 통계 | 초기하분포·피셔 정확검정 | 러닝 농축점수(ES) · 정규화 NES |
| 강점 | 직관적·빠름, 목록만 있으면 됨 | 약한 신호·미세한 경향까지 포착 |
| 이럴 때 | 확실한 DEG 목록이 이미 있을 때 | 컷오프가 애매하거나 순위가 중요할 때 |
경로·기능의 출처가 되는 데이터베이스도 여럿입니다. GO는 앞서 본 표준 기능 어휘, KEGG는 대사·신호 경로를 지도(pathway map)로 정리한 자원, Reactome은 사람이 정제한 반응 단위 경로 지식베이스, MSigDB는 GSEA와 짝을 이루는 방대한 유전자셋 모음(Hallmark 등)입니다. 무엇을 쓰느냐에 따라 같은 유전자 목록도 다른 관점의 term으로 요약됩니다.
한 가지 빠뜨리면 안 되는 게 다중검정보정입니다. GO term이나 경로 수천 개를 한꺼번에 검정하므로, 원 p값을 그대로 쓰면 우연한 양성이 무더기로 섞입니다. 그래서 벤저미니-호흐베르그(Benjamini-Hochberg, BH) 방식으로 위발견율(false discovery rate, FDR)을 통제한 보정값(p.adjust)을 기준으로 유의성을 판단합니다 (Benjamini & Hochberg, 1995).
7. 현장 활용 — 결과 읽기와 도구
농축분석 결과표는 대개 이런 열로 나옵니다. 농축 term(어떤 기능·경로인지), p.adjust(BH 보정 p값, 보통 0.05 미만을 유의로), 유전자 비율(GeneRatio)(내 목록 중 그 term에 속한 비율), fold enrichment(배경 대비 몇 배로 몰렸는지)입니다. 실전에서는 p.adjust로 먼저 걸러 낸 뒤, fold enrichment가 크고 유전자 수가 충분한 term을 우선 살핍니다. p값이 아주 작아도 유전자가 2~3개뿐인 term은 해석에 조심해야 하죠.
- ORA 결과. '염증 반응 BP가 p.adjust 0.001, fold enrichment 4.2'라면, 내 DEG가 그 경로에 배경보다 4배가량 몰렸고 우연일 확률이 매우 낮다는 뜻입니다.
- GSEA 결과. NES가 양수면 그 유전자셋이 상향 쪽에, 음수면 하향 쪽에 쏠렸다는 신호입니다. 러닝 ES 곡선과 유전자 위치 바코드를 함께 봅니다.
도구로는 R의 clusterProfiler가 ORA·GSEA를 한자리에서 다뤄 가장 널리 쓰이고, 웹에서는 DAVID·Enrichr·gProfiler가 목록만 붙여 넣으면 바로 돌아가 접근성이 좋습니다. 유전자에서 나아가 샘플별 경로 활성을 점수로 매기고 싶다면 GSVA 같은 방법으로 이어집니다.
8. 핵심 정리 & 다음 학습
- ✅ 농축분석은 유전자 목록 → 생물학적 기능·경로로 번역 — DEG 같은 목록에 의미를 입히는 단계.
- ✅ ORA = 유의 목록이 특정 term에 우연보다 몰렸나(초기하·피셔검정, 배경집합 필요), 컷오프에 민감.
- ✅ GSEA = 컷오프 없이 전체 순위 리스트에서 유전자셋이 위/아래로 쏠렸나(러닝 ES·정규화 NES), 약한 신호도 포착.
- ✅ 기능 어휘 = GO(BP·MF·CC, 계층 구조) · 경로 DB = KEGG·Reactome·MSigDB.
- ⚠️ 검정 수천 번 → 다중검정보정(p.adjust·BH) 필수. 결과는 농축 term·p.adjust·유전자 비율·fold enrichment로 읽는다.
• (코드로 직접) clusterProfiler로 GO·KEGG·GSEA 농축분석 — 이 글의 개념을 R로 실행하는 실전편
• (왜 보정하나) p-value와 FDR·다중검정보정 — 수천 번 검정에서 위발견율을 다스리는 법
• (목록은 어디서) DESeq2로 DEG 분석 — 농축분석의 입력이 되는 차등발현 유전자 뽑기
• (그다음 경로 점수) GSVA로 샘플별 경로 활성 점수 — 유전자에서 경로 수준으로 한 걸음 더
References
- Ashburner, M., Ball, C. A., Blake, J. A., Botstein, D., Butler, H., Cherry, J. M., et al. (2000). Gene Ontology: tool for the unification of biology. Nature Genetics, 25(1), 25–29. doi:10.1038/75556
- Subramanian, A., Tamayo, P., Mootha, V. K., Mukherjee, S., Ebert, B. L., Gillette, M. A., et al. (2005). Gene set enrichment analysis: a knowledge-based approach for interpreting genome-wide expression profiles. PNAS, 102(43), 15545–15550. doi:10.1073/pnas.0506580102
- Yu, G., Wang, L. G., Han, Y., & He, Q. Y. (2012). clusterProfiler: an R package for comparing biological themes among gene clusters. OMICS: A Journal of Integrative Biology, 16(5), 284–287. doi:10.1089/omi.2011.0118
- Benjamini, Y., & Hochberg, Y. (1995). Controlling the false discovery rate: a practical and powerful approach to multiple testing. Journal of the Royal Statistical Society: Series B, 57(1), 289–300. doi:10.1111/j.2517-6161.1995.tb02031.x
- The Gene Ontology Consortium. (2023). The Gene Ontology knowledgebase in 2023. Genetics, 224(1), iyad031. doi:10.1093/genetics/iyad031
- Kanehisa, M., & Goto, S. (2000). KEGG: Kyoto Encyclopedia of Genes and Genomes. Nucleic Acids Research, 28(1), 27–30. doi:10.1093/nar/28.1.27
Pipette & Pipeline · A bio portfolio journal
'Bio Glossary > Bioinformatics 101' 카테고리의 다른 글
| 유전체 어셈블리란? — de novo·contig/scaffold·N50·롱리드·T2T (0) | 2026.07.10 |
|---|---|
| 차원축소란? — PCA·t-SNE·UMAP로 고차원 데이터 보기 (0) | 2026.07.09 |
| 다중서열정렬(MSA)이란? — 여러 서열을 한 줄에 맞추기 (0) | 2026.07.07 |
| BLAST란? — 서열 상동성 검색으로 유전자·단백질의 정체 찾기 (0) | 2026.07.06 |
| 계통수·분자진화 — 서열로 그리는 생명의 가계도 (0) | 2026.07.01 |