Lesson 17 of 20
정규화 — CPM · TPM · FPKM, 그리고 DESeq2 가 쓰는 것
【실습】 세 가지를 손으로 계산해 비교한다
카운트 표의 숫자는 그대로 쓰면 안 됩니다. 두 가지가 섞여 있어요.
① 시료마다 총 읽기가 다르다
A 시료 3천만, B 시료 1천만
같은 유전자라도 A 가 세 배로 보인다
같은 유전자라도 A 가 세 배로 보인다
② 유전자마다 길이가 다르다
긴 유전자는 조각이 많이 나온다
같은 분자 수라도 읽기는 더 많다
같은 분자 수라도 읽기는 더 많다
①만 고치면 CPM, ①②를 다 고치면 TPM · FPKM 입니다.
세 가지 셈
| 셈 | 고치는 것 | 쓸 곳 | |
|---|---|---|---|
| CPM | 카운트 ÷ 총카운트 × 106 | 깊이만 | 같은 유전자를 시료끼리 견줄 때 |
| FPKM | 먼저 깊이로 나누고, 그다음 길이로 | 깊이 + 길이 | 옛 논문에서 많이 본다 |
| TPM | 먼저 길이로 나누고, 그다음 합으로 | 깊이 + 길이 | 같은 시료 안에서 유전자끼리 견줄 때 |
TPM 과 FPKM 은 나누는 순서만 다릅니다. 그런데 그 순서가 중요한 성질 하나를 바꿔요 — TPM 은 시료마다 합이 정확히 100만 입니다.
TPM 의 합이 늘 100만인 것이 이 방식의 핵심 성질입니다.
Python
Runs in your browser
그런데 DESeq2 는 이 셋을 쓰지 않는다
차등발현을 볼 때는 CPM·TPM·FPKM 을 넣으면 안 됩니다. DESeq2 는 원래 카운트를 그대로 받습니다.
이유가 둘이에요.
| 왜 | |
|---|---|
| 1 | 통계 모형이 정수 카운트를 전제한다 (음이항 분포 — 18강) |
| 2 | 총합으로 나누면 아주 센 유전자 하나가 나머지를 전부 끌어내린다 |
대신 중앙값비(median of ratios) 라는 다른 방법을 씁니다.
DESeq2 가 총합 대신 중앙값비를 쓰는 이유 — 딱 이 한 가지입니다.
Python
Runs in your browser
🤔 Check yourself
TPM 의 합이 시료마다 정확히 100만인 이유는?
Answer 길이 보정을 먼저 하고, 그 값들의 합으로 나눈 뒤 100만을 곱합니다.
그래서 비율이 되고, 합이 언제나 100만이에요.
🤔 Check yourself
DESeq2 에 넣어야 하는 값은?
Answer 음이항 모형은 정수 카운트를 전제합니다.
정규화는 DESeq2 가 내부에서 중앙값비로 알아서 합니다.