16강 / 20강
긴 유전자가 read 를 더 받는다 — 그런데 나누면 더 나빠졌다
TPM · FPKM 이 무엇을 고치는가 · 그리고 언제 쓰면 안 되는가
mRNA 를 잘게 부수어 76bp 씩 읽습니다. 그러면 긴 mRNA 에서 조각이 더 많이 나옵니다.
유전자 A (1,000 염기) 분자 10개 → 조각 약 130개
유전자 B (4,000 염기) 분자 10개 → 조각 약 530개
같은 개수의 분자인데 카운트는 4배 차이가 납니다. 그래서 한 표본 안에서 유전자끼리 견주려면 길이로 나눠야 합니다. 그것이 TPM(transcripts per million)이 하는 일입니다.
RPK = count ÷ 길이(kb) → TPM = RPK ÷ ΣRPK × 10⁶
이 자료에서도 그럴까요? 재어 봅시다.
기대는 양의 상관이었습니다. 자료는 반대로 말합니다.
Python
브라우저에서 실행
기대와 반대다
길이와 카운트의 상관이 −0.38 입니다. 긴 유전자가 덜 받았다는 뜻이죠. 길이 편향이 없어진 걸까요? 아닙니다. 더 센 것이 덮은 것입니다.
우리 패널의 최상위는 리보솜 단백질 유전자(Rpl·Rps)들인데,
이들은 짧고(500~1,000 염기) 엄청나게 많이 발현됩니다.
짐작으로 끝내지 말고 확인합시다 — 그 52개를 빼고 다시 재 보면 됩니다.
짐작을 확인하는 가장 싼 방법 — 의심되는 것을 빼고 다시 재기.
Python
브라우저에서 실행
정답지와의 비율이 어떤 변수를 따라 움직이면, 그것이 내 방법의 편향입니다.
Python
브라우저에서 실행
'맞는 보정' 을 했는데 결과가 나빠지는 경우 — 이유를 찾아야 합니다.
Python
브라우저에서 실행
🎮 길이 실험실
길이와 카운트의 관계를 발현 구간별로 갈라 보세요.
🤔 확인 문제
길이와 카운트의 상관이 음수로 나온 이유는?
해설 길이 효과는 있습니다. 다만 더 큰 효과가 겹쳐 부호가 뒤집힌 것이죠. 발현량으로 층을 나눠 보면 각 층 안에서 길이 효과가 드러납니다 — 혼란변수를 다루는 표준적인 방법입니다.
🤔 확인 문제
공개 카운트 표와 견줄 때 TPM 으로 바꾸면 안 되는 이유는?
해설 비교하는 두 값은 같은 처리를 거쳐야 합니다. 파일 이름이
cnt 인 것이 힌트였죠 — 무엇을 받았는지 먼저 확인해야 합니다.🤔 확인 문제
DESeq2·edgeR 가 TPM 이 아니라 raw count 를 요구하는 이유는?
해설 count 는 '몇 번 뽑혔나' 라서 분산이 평균에 딸려 옵니다(음이항 분포). 이 관계가 검정의 핵심인데, 실수로 나누면 정보가 사라집니다.