# Gene Ontology와 GO term

> Gene Ontology가 유전자와 유전자 산물의 기능을 표준 용어로 정리하는 방식, GO term·annotation·BP·MF·CC와 enrichment 결과를 읽는 법.

Gene Ontology(GO, 유전자 온톨로지)는 **유전자와 유전자 산물의 기능을 구조화된 표준 용어로 표현하는 생물학 지식 체계**입니다. GO는 기능 용어와 용어 사이의 관계를 정의하고, 단백질이나 기능성 RNA 같은 유전자 산물을 근거가 있는 기능 용어에 연결합니다.

GO 자체는 분석 프로그램이나 RNA-seq 결과가 아닙니다. 연구자와 데이터베이스가 함께 사용하는 기능 분류 체계이며, g:Profiler 같은 분석 도구가 유전자 목록의 공통 기능을 찾을 때 이 지식을 사용합니다.

## 같은 기능을 같은 이름으로 기록하기

연구마다 `세포가 나뉨`, `세포 분열`, `cell division`처럼 다른 표현을 사용하면 컴퓨터가 같은 기능으로 묶기 어렵습니다. GO는 하나의 개념에 표준 이름과 고유한 ID를 부여합니다.

예를 들어 `GO:0007049`는 `cell cycle`이라는 개념을 가리킵니다. 이런 기능 항목 하나를 **GO term**이라고 합니다. GO term에는 최소한 다음 정보가 들어 있습니다.

| 항목 | 의미 | 예시 |
| --- | --- | --- |
| GO ID | 변하지 않는 고유 식별자 | `GO:0007049` |
| 이름 | 사람이 읽는 표준 이름 | `cell cycle` |
| 분류 | BP, MF, CC 중 어디에 속하는가 | BP |
| 정의 | 이 용어가 포함하고 제외하는 범위 | 세포 주기의 표준 정의 |
| 관계 | 더 넓거나 구체적인 term과의 연결 | `is_a`, `part_of` 등 |

소프트웨어 프로젝트에 비유하면 GO ID는 변경에 강한 내부 키이고, 이름과 정의는 사람이 읽는 문서입니다. 이름이 비슷하더라도 GO ID가 다르면 서로 다른 개념일 수 있습니다.

## GO는 세 가지 질문으로 기능을 나눈다

GO는 유전자 산물의 기능을 세 가지 관점으로 분류합니다.

| 분류 | 전체 이름 | 묻는 질문 | 예시 |
| --- | --- | --- | --- |
| `GO:BP` | Biological Process | 더 큰 생물학적 과정에서 어떤 일에 참여하는가? | 세포 주기, DNA 복구 |
| `GO:MF` | Molecular Function | 분자 자체가 수행하는 활동은 무엇인가? | DNA 결합, kinase 활성 |
| `GO:CC` | Cellular Component | 기능을 수행할 때 세포의 어디에 있는가? | 핵, 세포막 |

하나의 단백질에는 세 관점의 term이 모두 붙을 수 있습니다. 예를 들어 어떤 단백질이 DNA에 결합하고, 핵에 있으며, 세포 주기에 참여한다면 MF, CC, BP annotation을 각각 가질 수 있습니다.

BP와 MF는 특히 혼동하기 쉽습니다. `protein kinase activity`는 단백질이 직접 수행하는 분자 활동이므로 MF입니다. `regulation of cell cycle`은 여러 분자의 활동이 함께 만드는 더 큰 과정이므로 BP입니다.

## GO term은 폴더 목록이 아니라 관계 그래프다

GO term은 넓은 개념에서 구체적인 개념으로 연결됩니다. `cell cycle`보다 `mitotic cell cycle`이 구체적이고, 그 아래에는 염색체 분리와 같은 더 세부적인 과정이 연결될 수 있습니다.

하지만 하나의 하위 term이 부모 하나만 갖는 단순한 폴더 트리는 아닙니다. GO는 term을 노드로, `is_a`, `part_of`, `regulates` 같은 관계를 연결선으로 갖는 **그래프**입니다. 하나의 term이 여러 상위 term과 연결될 수도 있습니다.

이 구조 때문에 enrichment 결과에 의미가 비슷한 term이 여러 줄 나타날 수 있습니다. `cell cycle`, `mitotic cell cycle`, `chromosome segregation`이 같은 유전자 일부를 공유한다면, 완전히 독립적인 발견 세 개라기보다 큰 범주와 세부 범주가 함께 잡힌 결과일 수 있습니다.

## GO term과 GO annotation은 다르다

**GO term**은 기능 개념의 정의입니다. **GO annotation**은 특정 유전자 산물을 특정 GO term에 연결한 근거 있는 기록입니다.

다음은 annotation의 구조를 보여 주기 위한 가상 행입니다.

| gene product | GO term | 관계 | evidence | reference |
| --- | --- | --- | --- | --- |
| `GENE_A` 단백질 | `GO:0007049` cell cycle | `involved_in` | 실험 근거 코드 | 논문 또는 데이터베이스 |

표준 GO annotation에는 최소한 유전자 산물, GO term, 근거 문헌과 evidence code가 포함됩니다. evidence code는 직접 실험, 서열 유사성, 계통 분석, 자동 추론 등 어떤 종류의 근거로 연결했는지 나타냅니다.

annotation이 없다고 그 기능이 없다는 뜻은 아닙니다. 아직 충분히 연구되지 않았거나 데이터베이스에 반영되지 않았을 수도 있습니다. 반대로 annotation이 있다고 모든 세포와 조건에서 항상 그 기능이 활성화된다는 뜻도 아닙니다.

## 유전자 목록을 GO와 대조하면

GO enrichment에서 입력은 보통 **선택한 유전자 목록**입니다. 도구는 각 유전자에 연결된 GO annotation을 모은 뒤, 어떤 GO term이 우연히 기대되는 것보다 자주 등장하는지 검사합니다.

가상의 예를 들어보겠습니다.

- 분석 가능한 전체 유전자: 20,000개
- `cell cycle`과 연결된 유전자: 500개
- 선택한 후보 목록: 1,000개
- 후보 목록에서 `cell cycle`과 겹친 유전자: 120개

무작위로 1,000개를 골랐다면 약 25개가 겹칠 것으로 예상되는데 실제로 120개가 겹쳤다면, 후보 목록에 세포 주기 관련 유전자가 유난히 많이 모였다고 볼 근거가 생깁니다. Over-representation analysis(ORA)는 이 질문을 여러 term에 반복해서 적용합니다.

### ORA 결과표의 자주 보는 열

| 열 | 의미 |
| --- | --- |
| `name` | GO term의 사람이 읽는 이름 |
| `native` | GO ID와 같은 원래 데이터베이스 식별자 |
| `term_size` | 배경 집합에서 해당 term과 연결된 유전자 수 |
| `intersection_size` | 입력 목록과 해당 term이 실제로 공유한 유전자 수 |
| `intersections` | 실제로 겹친 유전자 목록 |
| `intersection_symbols` | 도구 결과의 ID를 사람이 읽는 gene symbol로 바꿔 추가한 열 |
| `p_value` | 이 정도 이상의 겹침이 우연히 나타날 가능성, 보정 적용 여부는 도구 설명에서 확인 |

`term_size`가 큰 term은 무작위로도 많은 유전자와 겹치기 쉽습니다. 따라서 `intersection_size`만 보지 않고 입력 목록 크기, 배경 유전자 집합과 term 크기를 함께 고려한 p-value를 봅니다. 많은 term을 동시에 검사하므로 다중검정 보정도 필요합니다. g:Profiler처럼 결과 열 이름이 단순히 `p_value`여도 이미 보정된 값을 반환하는 도구가 있으므로, 사용한 도구의 정의를 확인해야 합니다.

막대그래프에서 `-log10(p_value)`가 크다는 것은 보정 p-value가 작다는 뜻입니다. 해당 과정이 몇 배 활성화됐다는 뜻은 아닙니다. GO ORA는 **선택한 유전자 목록에 기능 태그가 많이 모였는지**를 검사할 뿐, 단백질의 실제 활성이나 과정의 진행 속도를 직접 측정하지 않습니다.

## GO와 pathway 데이터베이스는 같은 것이 아니다

GO:BP와 pathway는 겹치는 부분이 있지만 목적과 구조가 다릅니다.

| 자료 | 주로 표현하는 것 |
| --- | --- |
| GO:BP | 유전자 산물이 참여하는 생물학적 과정의 계층적 분류 |
| [Reactome](/reference/reactome/) | 분자들이 이어서 수행하는 반응과 pathway |
| KEGG Pathway | 대사, 신호 전달과 질환 관련 pathway 지도 |

GO term은 반드시 반응의 순서나 분자 사이의 직접 연결을 보여 주지는 않습니다. 여러 유전자가 어떤 작업에 관련되는지 분류하는 데 강점이 있습니다. pathway와 gene set의 차이는 [유전자가 함께 만드는 작업 흐름](/lessons/pathway/)에서 이어서 설명합니다.

## 해석할 때 피할 결론

- 유의한 GO term이 나왔다고 해당 과정이 실제로 활성화됐다고 단정하지 않습니다.
- 가장 긴 막대가 가장 큰 발현 변화를 뜻한다고 해석하지 않습니다.
- 비슷한 상위·하위 term을 서로 독립적인 발견으로 세지 않습니다.
- 증가 유전자와 감소 유전자를 섞은 뒤 변화 방향까지 해석하지 않습니다.
- GO annotation이 없는 유전자를 기능이 없는 유전자라고 부르지 않습니다.
- 질환과 관련된 term이 나왔다고 원인 유전자가 확인됐다고 결론 내리지 않습니다.

결과는 입력 유전자 선택 기준과 배경 집합에 따라 달라집니다. RNA-seq ORA에서는 실험에서 실제로 검정할 수 있었던 유전자를 배경으로 쓰는 것이 일반적으로 더 적절합니다. 모든 인간 유전자를 무조건 배경으로 사용하면 측정되지 않은 유전자까지 비교 대상에 들어갈 수 있습니다.

## 재현성을 위해 기록할 것

GO ontology와 annotation은 계속 갱신됩니다. 같은 유전자 목록도 사용한 버전과 도구 설정에 따라 결과가 달라질 수 있으므로 다음을 기록합니다.

- 분석 날짜와 GO 또는 분석 서비스의 데이터 버전
- 대상 생물종
- 입력 ID 종류와 gene symbol 변환 방법
- 입력 목록을 고른 통계 기준과 변화 방향
- 배경 유전자 집합
- 사용한 분류, 예: GO:BP, GO:MF, GO:CC
- 다중검정 보정 방법과 기준
- term을 만든 실제 `intersections` 유전자

## 공식 자료

- [Gene Ontology overview](https://geneontology.org/docs/ontology-documentation/): GO의 정체, 세 분류와 term 구성
- [Introduction to GO annotations](https://geneontology.org/docs/go-annotations/): annotation, 근거와 해석 범위
- [Relations in the Gene Ontology](https://geneontology.org/docs/ontology-relations/): term 사이의 그래프 관계
- [Download annotations](https://geneontology.org/docs/download-go-annotations/): annotation 파일과 버전 기록 방법