Chuẩn hóa dữ liệu đếm (count normalization) là bước thiết yếu trước khi tiến hành phân tích biểu hiện gen khác biệt (differential expression analysis). Mục tiêu là loại bỏ ảnh hưởng của các yếu tố không liên quan đến sinh học, giúp so sánh mức biểu hiện giữa các mẫu một cách chính xác.
1. Các yếu tố cần chuẩn hóa
1.1. Độ sâu giải trình tự (sequencing depth)
Các mẫu có tổng số reads khác nhau sẽ ảnh hưởng trực tiếp đến số lượng reads ánh xạ vào mỗi gen. Nếu không chuẩn hóa, mẫu có độ sâu cao hơn sẽ cho ấn tượng rằng mọi gen đều biểu hiện mạnh hơn.
1.2. Chiều dài gen
Khi so sánh mức biểu hiện giữa các gen trong cùng một mẫu, chiều dài gen ảnh hưởng lớn: gen dài thu hút nhiều reads hơn dù mức biểu hiện thực tế tương đương. Tuy nhiên, trong phân tích biểu hiện khác biệt giữa các mẫu, ta chỉ so sánh cùng một gen nên yếu tố này thường được bỏ qua.
1.3. Thành phần RNA (RNA composition)
Sự hiện diện của một số gen biểu hiện cực kỳ cao ở một mẫu cụ thể có thể làm lệch chuẩn hóa dựa trên tổng reads. Điều này đặc biệt nghiêm trọng khi so sánh giữa các điều kiện thí nghiệm khác nhau.
2. Các phương pháp chuẩn hóa phổ biến
| Phương pháp | Mô tả | Yếu tố xử lý | Ứng dụng phù hợp |
|---|---|---|---|
| CPM | Đếm trên triệu reads | Độ sâu giải trình tự | So sánh giữa các mẫu lặp trong cùng điều kiện; không dùng cho phân tích biểu hiện khác biệt |
| TPM | Transcript trên kilobase trên triệu reads | Độ sâu + chiều dài gen | So sánh giữa các gen trong cùng mẫu hoặc giữa các mẫu cùng điều kiện; không dùng cho phân tích biểu hiện khác biệt |
| RPKM/FPKM | Tương tự TPM nhưng thứ tự chuẩn hóa khác | Độ sâu + chiều dài gen | Không khuyến nghị cho so sánh giữa mẫu do tổng giá trị chuẩn hóa không đồng nhất |
| Median of ratios (DESeq2) | Dùng trung vị tỷ lệ so với mẫu tham chiếu giả | Độ sâu + thành phần RNA | Phân tích biểu hiện khác biệt giữa các nhóm mẫu |
| TMM (EdgeR) | Trung bình cắt tỉ lệ log M | Độ sâu + thành phần RNA | Phân tích biểu hiện khác biệt giữa các nhóm mẫu |
Lưu ý: RPKM/FPKM không nên dùng để so sánh giữa các mẫu vì tổng giá trị chuẩn hóa không bằng nhau, dẫn đến sai lệch khi diễn giải.
3. Chuẩn hóa bằng DESeq2: Median of Ratios
Phương pháp này gồm các bước sau:
- Tạo mẫu tham chiếu giả: Với mỗi gen, tính trung bình nhân (geometric mean) qua tất cả các mẫu.
- Tính tỷ lệ mẫu/tham chiếu: Với mỗi gen trong mỗi mẫu, chia giá trị đếm cho giá trị tham chiếu tương ứng.
- Xác định hệ số chuẩn hóa (size factor): Lấy trung vị của tất cả các tỷ lệ trong mỗi mẫu. Giả định rằng đa số gen không biểu hiện khác biệt, nên trung vị phản ánh đúng sự khác biệt về độ sâu và thành phần RNA.
- Tính count chuẩn hóa: Chia count thô của mỗi gen trong mẫu cho size factor tương ứng.
Ví dụ minh họa:
| Gen | Mẫu A (thô) | Mẫu B (thô) | Tham chiếu | Tỷ lệ A | Tỷ lệ B |
|---|---|---|---|---|---|
| EF2A | 1489 | 906 | 1161.5 | 1.28 | 0.78 |
| ABCD1 | 22 | 13 | 17.7 | 1.30 | 0.77 |
Size factor của Mẫu A = median(1.28, 1.30, ...) ≈ 1.3
Size factor của Mẫu B = median(0.78, 0.77, ...) ≈ 0.77
Count chuẩn hóa cho EF2A:
- Mẫu A: 1489 / 1.3 ≈ 1145.39
- Mẫu B: 906 / 0.77 ≈ 1176.62
4. Thực hành với DESeq2
4.1. Đảm bảo khớp dữ liệu
Kiểm tra tên và thứ tự cột trong ma trận count phải trùng với hàng trong metadata:
all(colnames(counts_matrix) == rownames(metadata))
4.2. Tạo đối tượng DESeqDataSet
Sử dụng hàm DESeqDataSetFromTximport() nếu dữ liệu đến từ tximport:
dds <- DESeqDataSetFromTximport(txi, colData = meta, design = ~ sampletype)
4.3. Tính hệ số và count chuẩn hóa
dds <- estimateSizeFactors(dds)
norm_counts <- counts(dds, normalized = TRUE)
Có thể xuất kết quả ra file:
write.table(norm_counts, "normalized_counts.txt", sep = "\t", quote = FALSE, col.names = NA)
Lưu ý: DESeq2 không sử dụng count chuẩn hóa làm đầu vào cho mô hình thống kê. Thay vào đó, nó dùng count thô và tích hợp hệ số chuẩn hóa trực tiếp vào mô hình GLM. Count chuẩn hóa chỉ phục vụ mục đích trực quan hóa hoặc phân tích phụ trợ.