콘텐츠로 이동

RNA-seq 발현량 정규화 지표

RNA-seq 발현량 정규화는 read 또는 fragment의 개수를 유전자 길이나 샘플의 전체 규모로 나누어 비교 목적에 맞는 값으로 바꾸는 계산입니다. 입력은 유전자별 count와 길이이고, 출력은 CPM·RPK·RPKM·FPKM·TPM 같은 실수형 발현량 벡터입니다.

예를 들어 다음 집계 결과가 있다고 합시다.

generaw countlength (kb)
A6002
B3001

A는 count가 B의 두 배지만 길이도 두 배입니다. 길이로 나누면 둘의 RPK는 모두 300이 됩니다. 어떤 값으로 나누는지에 따라 숫자가 답하는 질문이 달라집니다.

  • cic_i: 유전자 ii에 매핑된 raw read count
  • i\ell_i: 유전자 ii의 길이, kb 단위
  • N=jcjN = \sum_j c_j: 샘플의 전체 매핑 read 수

코드의 집계와 정규화로 옮기면 다음 구조입니다.

raw_count = alignments.groupby("gene_id").size()
rpk = raw_count / gene_length_kb
tpm = rpk / rpk.sum() * 1_000_000

raw count는 정렬된 read를 유전자별로 센 정수 cic_i입니다. 유전자 길이와 시퀀싱 깊이를 보정하지 않은 관측값입니다.

DESeq2와 edgeR 같은 차등발현 도구는 count의 분산과 샘플별 크기를 자체 모델로 처리하므로 raw count를 입력받습니다. TPM으로 바꾼 값을 대신 넣지 않습니다.

RPK(reads per kilobase)는 count를 유전자 길이로 나눕니다.

RPKi=cii\mathrm{RPK}_i = \frac{c_i}{\ell_i}

긴 유전자에서 더 많은 fragment가 만들어지는 영향을 줄입니다. 샘플의 전체 시퀀싱 깊이는 보정하지 않으며, TPM을 계산하는 중간값으로 주로 사용합니다.

CPM(counts per million)은 count를 샘플의 전체 count로 나누고 10610^6을 곱합니다.

CPMi=ciN×106\mathrm{CPM}_i = \frac{c_i}{N} \times 10^6

샘플마다 읽은 전체 양의 차이는 줄이지만 유전자 길이는 보정하지 않습니다. 따라서 같은 유전자를 샘플 사이에서 대략 비교할 수는 있어도, 길이가 다른 유전자끼리 값을 직접 비교하는 용도에는 맞지 않습니다.

RPKM과 FPKM: 길이와 전체 read 수로 나눈 값

섹션 제목: “RPKM과 FPKM: 길이와 전체 read 수로 나눈 값”

RPKM(reads per kilobase per million)은 count를 유전자 길이와 전체 read 수로 나눕니다.

RPKMi=cii(N/106)\mathrm{RPKM}_i = \frac{c_i}{\ell_i \cdot (N / 10^6)}

FPKM(fragments per kilobase per million)은 paired-end read 두 개를 fragment 하나로 세는 점이 다릅니다. 길이와 시퀀싱 깊이를 모두 보정하지만, RPKM·FPKM 값의 합은 샘플마다 달라질 수 있습니다.

TPM(transcripts per million)은 먼저 RPK를 구하고, 샘플 안의 RPK 합으로 다시 나눈 뒤 10610^6을 곱합니다.

TPMi=RPKijRPKj×106=ci/ijcj/j×106\mathrm{TPM}_i = \frac{\mathrm{RPK}_i}{\sum_j \mathrm{RPK}_j}\times 10^6 = \frac{c_i / \ell_i}{\sum_j c_j / \ell_j}\times 10^6

마지막에 자기 합으로 나누므로 모든 샘플에서 다음 관계가 성립합니다.

iTPMi=106\sum_i \mathrm{TPM}_i = 10^6

RPKM을 이미 가지고 있다면 그 합으로 다시 정규화해 TPM으로 바꿀 수도 있습니다.

TPMi=RPKMijRPKMj×106\mathrm{TPM}_i = \frac{\mathrm{RPKM}_i}{\sum_j \mathrm{RPKM}_j}\times 10^6

TPM은 샘플 안의 상대적 구성비입니다. 한 유전자의 실제 분자 수가 그대로여도 다른 유전자가 크게 증가하면 그 유전자의 TPM은 내려갈 수 있습니다. 이를 조성 효과(compositional effect) 라고 합니다.

지표길이 보정샘플 규모 보정주 쓰임
raw countDESeq2·edgeR 입력
CPM같은 유전자의 대략적인 샘플 간 비교
RPKTPM 계산의 중간값
RPKM/FPKM과거에 사용된 발현량 비교 지표
TPM발현량 시각화와 레퍼런스 대조

정규화 지표의 계산을 직접 움직여 보려면 raw count를 비교 가능한 값으로 바꾸기의 위젯을 사용하세요. 반복 샘플의 조건 차이를 검정하려면 여러 샘플의 차등발현 검정을 참고하세요.


  • Wagner et al., Measurement of mRNA abundance using RNA-seq data: RPKM measure is inconsistent among samples, Theory in Biosciences 2012: DOI
  • Lior Pachter, Models for transcript quantification from RNA-Seq: arXiv:1104.3889
  • DESeq2 공식 문서