Có thể bạn quan tâm: Cách Vẽ Hitle: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
TÓM TẮT
- 1 1. Giới thiệu chung về IC50
- 2 2. Các bước chuẩn bị trước khi vẽ đồ thị IC50
- 3 3. Nguyên tắc vẽ đồ thị IC50
- 4 4. Thực hành vẽ IC50 bằng GraphPad Prism (ví dụ chi tiết)
- 5 5. Thực hành vẽ IC50 bằng R (drc + ggplot2)
- 6 6. Các lưu ý quan trọng khi vẽ IC50
- 7 7. Các trường hợp đặc biệt
- 8 8. Các ví dụ thực tế
- 9 9. Tổng kết
1. Giới thiệu chung về IC50
1.1. IC50 là gì?
IC50 (Inhibitory Concentration 50%) là nồng độ của một chất ức chế cần thiết để giảm 50% hoạt động sinh học của một mục tiêu (thường là enzyme, thụ thể hoặc vi khuẩn). Đây là một chỉ số quan trọng trong dược học, sinh học phân tử và nghiên cứu thuốc, giúp đánh giá độ mạnh của một chất ức chế.
1.2. Tầm quan trọng của việc xác định IC50
- Đánh giá tiềm năng thuốc: IC50 thấp cho thấy chất có khả năng ức chế mạnh, tiềm năng trở thành thuốc.
- So sánh các chất: Giúp nhà nghiên cứu so sánh hiệu quả của các hợp chất khác nhau.
- Tối ưu hoá cấu trúc: Cung cấp dữ liệu để điều chỉnh cấu trúc hoá học nhằm cải thiện hiệu quả.
- Quy chuẩn an toàn: Trong giai đoạn tiền lâm sàng, IC50 giúp xác định liều an toàn cho các thử nghiệm tiếp theo.
1.3. Các loại IC50 thường gặp
- IC50 enzymatic: Đối với enzyme.
- IC50 cell-based: Đối với tế bào sống (ví dụ: tế bào ung thư).
- IC50 in vivo: Đối với mô hình động vật, ít phổ biến hơn do độ phức tạp.
Có thể bạn quan tâm: Cách Vẽ Hilda: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Các bước chuẩn bị trước khi vẽ đồ thị IC50
2.1. Thu thập dữ liệu thí nghiệm
- Chọn nồng độ: Lựa chọn ít nhất 6–8 mức nồng độ của chất ức chế, bao gồm cả nồng độ rất thấp và rất cao để bao phủ toàn bộ khoảng phản ứng.
- Thực hiện assay: Thực hiện các thí nghiệm lặp lại (thường 3–5 lần) để giảm sai số.
- Ghi nhận kết quả: Đo lường hoạt động sinh học (ví dụ: hoạt độ enzyme, độ sống tế bào) và chuyển đổi thành % hoạt động so với kiểm soát (control).
2.2. Xử lý dữ liệu
- Tính % inhibition:
\% \text{Inhibition} = \left(1 – \frac{\text{Activity}{\text{sample}}}{\text{Activity}\right) \times 100}}
- Kiểm tra tính hợp lý: Loại bỏ các giá trị ngoại lai (outlier) bằng cách dùng test Grubbs hoặc IQR.
- Biến đổi dữ liệu: Đối với đồ thị log‑dose‑response, chuyển đổi nồng độ sang log10 (hoặc log2) để tạo đường cong S.
2.3. Lựa chọn phần mềm vẽ
- GraphPad Prism: Phổ biến, tích hợp công cụ non‑linear regression (đồ thị sigmoidal).
- OriginLab: Hỗ trợ đa dạng các loại mô hình.
- R (package drc, ggplot2): Miễn phí, linh hoạt.
- Excel: Đơn giản, phù hợp cho người mới, nhưng cần cài đặt macro hoặc add‑in để thực hiện non‑linear fit.
Có thể bạn quan tâm: Cách Vẽ Helokity: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Nguyên tắc vẽ đồ thị IC50
3.1. Đồ thị dạng log‑dose‑response (sigmoidal)
3.1.1. Định dạng trục
- Trục X (nồng độ): Đặt ở dạng log10 (hoặc log2). Điều này giúp dữ liệu phân bố đều và hiển thị rõ hơn các mức nồng độ thấp.
- Trục Y (phản ứng): Thường là % inhibition hoặc % activity còn lại (0–100%). Đặt thang đo từ 0% tới 100% để dễ so sánh.
3.1.2. Hình dạng đường cong
- Đường cong S (sigmoidal) được mô tả bởi phương trình 4‑parameter logistic (4PL):
Y = \frac{A_{bottom} – A_{top}}{1 + \left(\frac{X}{IC_{50}}\right)^{HillSlope}} + A_{top}
- A_bottom: Giá trị tối thiểu (thường 0%).
- A_top: Giá trị tối đa (thường 100%).
- HillSlope: Độ dốc của đường cong (độ nhạy).
- Khi dữ liệu không hoàn hảo, có thể dùng 5‑parameter logistic (5PL) để tính độ bất đối xứng.
3.1.3. Đánh dấu IC50 trên đồ thị
- Vẽ một đường thẳng ngang tại 50% inhibition và một đường thẳng dọc cắt tại nồng độ tương ứng (log10(IC50)). Đánh dấu điểm giao nhau và ghi chú giá trị IC50.
3.2. Đồ thị dạng linear (khi dữ liệu không phù hợp với sigmoid)
- Trục X: Nồng độ (không log).
- Trục Y: % inhibition.
- Áp dụng phương pháp linear regression cho phần dữ liệu gần 50% inhibition để ước tính IC50. Phương pháp này ít chính xác hơn nhưng có thể dùng khi dữ liệu ít điểm.
4. Thực hành vẽ IC50 bằng GraphPad Prism (ví dụ chi tiết)
4.1. Nhập dữ liệu
- Mở Prism → chọn “Create a new project”.
- Chọn “XY” → “Enter/Import Data”.
- Trong cột X nhập log10 nồng độ (hoặc nồng độ thực, Prism sẽ tự chuyển log nếu bật tùy chọn “Log X axis”).
- Trong cột Y nhập % inhibition cho mỗi nồng độ, mỗi cột là một replicate.
4.2. Định dạng trục
- Click vào trục X → “Format Axis” → tick “Logarithmic scale”.
- Đặt “X axis label” là “Log10Concentration (µM)”.
- Đặt “Y axis label” là “% Inhibition”.
4.3. Chọn mô hình phù hợp
- Vào “Analyze” → “Nonlinear regression (curve fit)”.
- Chọn “Dose‑response – Inhibition” → “Variable slope (four parameters)” (4PL).
- Kiểm tra “Display fitted curve” và “Show 95% confidence intervals”.
4.4. Kiểm tra kết quả
- Prism sẽ trả về bảng tham số: Bottom, Top, IC50, HillSlope, R², SE (standard error).
- Đọc giá trị IC50 và 95% CI (confidence interval). Nếu CI quá rộng, cần thêm điểm dữ liệu hoặc lặp lại thí nghiệm.
4.5. Tùy chỉnh đồ thị
- Thêm tiêu đề: “Dose‑Response Curve of Compound X on Enzyme Y”.
- Đánh dấu IC50: Vào “Add text” → nhập “IC50 = 2.3 µM (95% CI: 1.8‑2.9)”.
- Thay đổi màu sắc, kiểu đường (solid, dashed) để phân biệt các replicates.
4.6. Xuất file
- File → Export → chọn định dạng PNG, PDF hoặc SVG cho báo cáo.
- Đặt độ phân giải ít nhất 300 dpi cho in ấn.
5. Thực hành vẽ IC50 bằng R (drc + ggplot2)
5.1. Cài đặt và load package

Có thể bạn quan tâm: Cách Vẽ Hyperboloid: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
install.packages(c("drc", "ggplot2", "readr"))
library(drc)
library(ggplot2)
library(readr)
5.2. Đọc dữ liệu
data <- read_csv("ic50_data.csv") # file cần có cột: concentration, inhibition, replicate
5.3. Chuyển đổi nồng độ sang log10
data$log_conc <- log10(data$concentration)
5.4. Fitting mô hình 4PL
model <- drm(inhibition/100 ~ concentration, data = data, fct = LL.4(names = c("Slope", "Lower", "Upper", "ED50")))
summary(model)
ED(model, 50, interval = "confidence") # trả về IC50 và CI
5.5. Vẽ đồ thị
# Tạo data dự đoán cho đường cong
newdata <- data.frame(concentration = seq(min(data$concentration), max(data$concentration), length = 100))
pred <- predict(model, newdata, interval = "confidence") # Ghép dữ liệu
plot_data <- cbind(newdata, pred) ggplot() + geom_point(data = data, aes(x = log10(concentration), y = inhibition), shape = 21, colour = "black", fill = "skyblue", size = 3) + geom_line(data = plot_data, aes(x = log10(concentration), y = fit), colour = "red", size = 1) + geom_ribbon(data = plot_data, aes(x = log10(concentration), ymin = lwr, ymax = upr), fill = "pink", alpha = 0.3) + geom_hline(yintercept = 50, linetype = "dashed") + geom_vline(xintercept = log10(ED(model, 50)1), linetype = "dotted", colour = "blue") + annotate("text", x = log10(ED(model, 50)1), y = 55, label = paste0("IC50 = ", round(ED(model, 50)1, 2), " µM"), colour = "blue", hjust = -0.1) + labs(title = "Dose‑Response Curve (IC50) of Compound X", x = "Log10Concentration (µM)", y = "% Inhibition") + theme_minimal()
5.6. Lưu đồ thị
ggsave("IC50_curve.png", width = 8, height = 6, dpi = 300)
6. Các lưu ý quan trọng khi vẽ IC50
6.1. Độ tin cậy của dữ liệu
- Số lần lặp: Ít nhất 3 lặp cho mỗi nồng độ để tính trung bình và độ lệch chuẩn.
- Phân bố nồng độ: Đảm bảo có ít nhất 2 điểm dưới 50% và 2 điểm trên 50% inhibition; nếu không, IC50 sẽ không chính xác.
- Kiểm soát: Luôn có mẫu control (không chất ức chế) và mẫu blank (không enzyme/tế bào) để bù tín hiệu nền.
6.2. Hiệu ứng HillSlope
- HillSlope > 1: Đường cong dốc mạnh, phản ánh tương tác đồng thời nhiều site.
- HillSlope < 1: Đường cong phẳng, có thể do tính chất phân tán hay sự không đồng nhất của mẫu.
- Khi HillSlope quá lớn hoặc quá nhỏ, nên kiểm tra lại chất lượng dữ liệu hoặc cân nhắc mô hình 5PL.
6.3. Độ lệch chuẩn (SE) và khoảng tin cậy (CI)
- SE nhỏ và CI hẹp cho thấy kết quả ổn định.
- Nếu SE lớn hoặc CI rộng (> 2‑3 lần giá trị IC50), cần thu thập thêm dữ liệu.
6.4. So sánh nhiều hợp chất
- Đặt các đường cong trên cùng một đồ thị để so sánh trực quan.
- Sử dụng ANOVA hoặc t-test trên log(IC50) để kiểm định sự khác biệt thống kê.
7. Các trường hợp đặc biệt
7.1. Khi không có điểm dữ liệu đạt 50% inhibition
- Phương pháp extrapolation: Dùng mô hình logistic để dự đoán IC50, nhưng độ tin cậy giảm.
- Thêm nồng độ: Thực hiện thí nghiệm với nồng độ cao hơn để đạt 50% inhibition.
7.2. Khi dữ liệu hiển thị “biphasic” (hai giai đoạn)
- Có thể do dual‑site inhibition hoặc toxic effect ở nồng độ cao.
- Xem xét mô hình two‑site inhibition hoặc Hill equation với n=2.
7.3. Khi dữ liệu không phù hợp với logistic
- Thử linear regression trong khoảng 20‑80% inhibition.
- Hoặc dùng non‑parametric methods (spline) để ước tính IC50.
8. Các ví dụ thực tế
8.1. Ví dụ 1: IC50 của thuốc ức chế kinase
- Mục tiêu: Kinase A.
- Dữ liệu: Nồng độ (nM): 0.1, 0.3, 1, 3, 10, 30, 100.
- Kết quả: % inhibition: 5, 12, 30, 55, 78, 92, 98.
- Kết quả Prism: IC50 = 2.8 nM (95% CI: 2.2‑3.5 nM), HillSlope = 1.1, R² = 0.987.
8.2. Ví dụ 2: IC50 của hợp chất tự nhiên trên tế bào ung thư
- Mục tiêu: Vi sinh vật X.
- Nồng độ (µM): 5, 10, 20, 40, 80, 160.
- % Inhibition: 10, 22, 45, 68, 85, 94.
- R: IC50 = 32 µM (CI 28‑36 µM), HillSlope = 0.9.
9. Tổng kết
Việc vẽ IC50 không chỉ là một bước trong báo cáo khoa học mà còn là công cụ quan trọng để đánh giá và so sánh hiệu quả của các chất ức chế. Để có một đồ thị IC50 chính xác và đáng tin cậy, người thực hiện cần:
- Thu thập dữ liệu đầy đủ (nhiều nồng độ, lặp lại, kiểm soát).
- Xử lý dữ liệu cẩn thận (loại bỏ outlier, chuyển đổi log).
- Lựa chọn mô hình phù hợp (4PL, 5PL, hoặc linear khi cần).
- Sử dụng phần mềm chuyên dụng (GraphPad Prism, Origin, R) để thực hiện fitting và vẽ đồ thị.
- Kiểm tra các chỉ số thống kê (R², SE, CI) để đánh giá độ tin cậy.
- Ghi chú rõ ràng trên đồ thị (IC50, CI, HillSlope) để người đọc dễ hiểu.
Bằng cách tuân thủ các nguyên tắc và quy trình trên, bạn sẽ tạo ra những đồ thị IC50 chuyên nghiệp, hỗ trợ mạnh mẽ cho quá trình nghiên cứu và phát triển thuốc. Chúc bạn thành công trong các dự án khoa học của mình!
