Cheminformatics — hay tin học hóa học — là lĩnh vực ứng dụng các phương pháp máy tính để phân tích, lưu trữ và khai thác thông tin về các phân tử hóa học. Trong khám phá thuốc hiện đại, cheminformatics đóng vai trò cốt lõi: thay vì tổng hợp hàng chục nghìn hợp chất trong phòng thí nghiệm (tốn kém và chậm chạp), các nhà nghiên cứu dùng máy tính để sàng lọc ảo hàng triệu ứng viên, chỉ mang những chất có tiềm năng nhất vào thực nghiệm. Nền tảng dữ liệu trung tâm cho công việc này là ChEMBL — cơ sở dữ liệu lớn nhất thế giới về các phân tử hoạt tính sinh học, hiện chứa hơn 2,4 triệu hợp chất và 20 triệu điểm dữ liệu hoạt tính từ hàng trăm nghìn nghiên cứu.
ChEMBL REST API — cổng vào kho dữ liệu hoạt tính sinh học
ChEMBL cung cấp một REST API miễn phí, cho phép truy vấn dữ liệu hoạt tính (bioactivity) theo target protein, loại thử nghiệm, và khoảng giá trị IC50/Ki. IC50 (Inhibitory Concentration 50%) là chỉ số phổ biến nhất: nó biểu thị nồng độ cần thiết để ức chế 50% hoạt động của một enzyme hay receptor mục tiêu — giá trị IC50 càng thấp, hợp chất càng mạnh. Dưới đây là đoạn code Python để lấy dữ liệu hoạt tính IC50 cho target EGFR (một kinase quan trọng trong điều trị ung thư):
import requests
import pandas as pd
BASE_URL = "https://www.ebi.ac.uk/chembl/api/data"
def fetch_bioactivity(target_chembl_id, activity_type="IC50", limit=100):
"""Lay du lieu hoat tinh tu ChEMBL REST API."""
params = {
"target_chembl_id": target_chembl_id,
"standard_type": activity_type,
"assay_type": "B", # Binding assay
"standard_relation": "=",
"limit": limit,
"format": "json",
}
url = f"{BASE_URL}/activity/"
resp = requests.get(url, params=params, timeout=30)
resp.raise_for_status()
data = resp.json()
return data.get("activities", [])
# EGFR target: CHEMBL203
activities = fetch_bioactivity("CHEMBL203", limit=200)
df = pd.DataFrame(activities)
# Giu lai cac cot quan trong
cols = ["molecule_chembl_id", "canonical_smiles",
"standard_value", "standard_units", "pchembl_value"]
df = df[cols].dropna(subset=["standard_value", "canonical_smiles"])
# Loc IC50 < 100 nM (hoat tinh cao)
df["standard_value"] = pd.to_numeric(df["standard_value"], errors="coerce")
potent = df[df["standard_value"] < 100].sort_values("standard_value")
print(f"Tim thay {len(potent)} hop chat co IC50 < 100 nM")
print(potent.head())
Lọc và làm sạch dữ liệu hoạt tính
Dữ liệu thô từ ChEMBL chứa nhiều nhiễu: các thử nghiệm với điều kiện pH khác nhau, các đơn vị đo lường không đồng nhất (nM, µM, µg/mL), hay các giá trị ngoại lai (outlier) từ những nghiên cứu có phương pháp không chuẩn. Bước làm sạch dữ liệu do đó rất quan trọng. Thực tiễn tốt nhất bao gồm: chỉ giữ lại các bản ghi có trường data_validity_comment là null (dữ liệu không bị gắn cờ vấn đề), chuẩn hóa tất cả về đơn vị nM, và loại bỏ các hợp chất có chuỗi SMILES không hợp lệ theo kiểm tra RDKit. Chỉ số pChEMBL — bằng âm log10 của IC50 tính bằng mol/L — rất hữu ích để so sánh hoạt tính trực tiếp vì nó chuẩn hóa đơn vị.
Pipeline thiết kế thuốc: Từ dữ liệu đến dự đoán
Sau khi có tập dữ liệu hoạt tính sạch, các nhà nghiên cứu thường xây dựng QSAR model (Quantitative Structure-Activity Relationship) — mô hình học máy dự đoán hoạt tính của một hợp chất mới dựa trên cấu trúc phân tử của nó. Fingerprint phân tử (như Morgan fingerprint từ RDKit) biến cấu trúc SMILES thành vector số học mà các thuật toán như Random Forest hay XGBoost có thể học. Bước tiếp theo trong pipeline là sàng lọc ảo: lấy một thư viện hợp chất thương mại (như ZINC database với 750 triệu phân tử), tính fingerprint cho từng phân tử, rồi dùng QSAR model để dự đoán IC50 — chỉ những chất có IC50 dự đoán dưới ngưỡng mong muốn mới được đưa vào tổng hợp thực nghiệm.
Quy tắc Lipinski (Rule of Five): Ngoài hoạt tính, một ứng viên thuốc tốt còn phải "thuốc được" — tức là cơ thể có thể hấp thụ và chuyển hóa nó. Quy tắc Lipinski yêu cầu: MW ≤ 500 Da, logP ≤ 5, số donor H-bond ≤ 5, số acceptor H-bond ≤ 10. Lọc theo tiêu chí này trước khi tổng hợp tiết kiệm rất nhiều chi phí.
Ứng dụng mở rộng và tương lai
Cheminformatics hiện đại ngày càng tích hợp sâu với deep learning: các mô hình graph neural network (GNN) học trực tiếp trên đồ thị phân tử, bỏ qua bước tính fingerprint thủ công; các mô hình generative như REINVENT có thể thiết kế ngược — tạo ra cấu trúc phân tử mới tối ưu cho mục tiêu đã cho. ChEMBL với kho dữ liệu khổng lồ tiếp tục là nguồn huấn luyện và benchmark không thể thiếu. Nếu bạn đang bắt đầu hành trình vào lĩnh vực này, RDKit (Python), DeepChem, và ChEMBL API là bộ ba công cụ đầu tiên cần thành thạo.