TDC DTI Benchmark Group 提供药物-靶点相互作用(DTI)的标准评测任务。DTI 建模有一个特别容易自欺的地方:随机划分下模型可以靠「记住这个靶点大概什么亲和力」拿高分,而完全不理解药物与靶点的关系。这个 Group 的价值就在于提供了检验这一点的划分方式。
三个主要数据集
| 数据集 | 规模 | 靶点范围 | 测量 | 特点 |
|---|---|---|---|---|
| BindingDB_Kd / Ki / IC50 | 数万~数十万 | 广泛 | 多种 | 覆盖面最广 |
| DAVIS | 约 30,000 | 442 个激酶 | Kd | 全矩阵,无缺失 |
| KIBA | 约 118,000 | 激酶 | KIBA 分数 | 整合 Ki/Kd/IC50 |
DAVIS 和 KIBA 都是激酶数据集——这是 DTI 领域的一个结构性偏差。在这两个集上表现好的模型,换到 GPCR、离子通道、蛋白酶等其他靶点家族时,泛化能力往往大幅下降。报告结果时必须说明这个局限。
四种划分方式:这是关键
from tdc.multi_pred import DTI
data = DTI(name="DAVIS")
data.convert_to_log(form="binding") # Kd → pKd,分布更合理
# 四种划分,难度递增
split_random = data.get_split(method="random") # 药物和靶点都见过
split_cold_d = data.get_split(method="cold_split", column_name="Drug")
split_cold_t = data.get_split(method="cold_split", column_name="Target")
split_cold_dt = data.get_split(method="cold_split",
column_name=["Drug", "Target"])
| 划分 | 测试集里的情况 | 对应的真实场景 |
|---|---|---|
| random | 药物和靶点都在训练集出现过 | 补全已知矩阵的空缺 |
| cold drug | 新药物,靶点见过 | 为已知靶点找新分子 |
| cold target | 新靶点,药物见过 | 为新靶点找已知药物(重定位) |
| cold both | 药物和靶点都是新的 | 最难,最接近全新项目 |
性能落差通常非常大:同一个模型在 random 划分下 Pearson 可能 0.85,换成 cold target 掉到 0.4 甚至更低。这个落差不是模型的缺陷,而是暴露了它究竟学到了什么。只报 random 划分结果的 DTI 论文,参考价值有限。
建模要点
- 先建简单基线:药物指纹 + 靶点序列组成特征 + 梯度提升。很多复杂的深度模型并不能显著超过这个基线,尤其在冷启动划分下。
- 靶点表示很关键:序列 k-mer 组成最简单;ESM 等蛋白语言模型嵌入(见 194《ESM》)通常更好;有结构时,口袋特征信息量更大。
- 注意标签尺度:Kd/Ki 要转成 pKd/pKi(负对数),否则分布严重偏斜。KIBA 分数是整合值,含义与前两者不同。
- DAVIS 的删失值:原始数据中大量 Kd 记为 10000 nM(表示「未检测到结合」),这是删失数据不是真实测量值。当成真值训练会扭曲模型。
- 评估指标:回归看 MSE、Pearson、Concordance Index(CI);CI 衡量排序一致性,对 DTI 特别合适。
与基于结构方法的关系
DTI 模型和对接是两条互补路线:
- DTI 模型:不需要结构,快,可覆盖没有结构的靶点;但看不到几何细节,冷启动泛化弱。
- 对接 / FEP:需要结构,慢,但有物理基础,对新化学型的外推相对可靠。
- 实际组合:用 DTI 模型做大规模粗筛和脱靶排查,对重点靶点用基于结构的方法精算。
上手提示
- 必须报冷启动划分的结果,只报 random 划分等于没评估;
- DAVIS / KIBA 都是激酶数据,跨家族泛化能力需另行验证;
- DAVIS 中 10000 nM 是删失值不是测量值,别当真值训练;
- 先建「指纹 + 序列特征 + GBDT」基线,很多深度模型赢不过它。
延伸资源
- 工具箱:173《TDC》、178《DeepPurpose》;数据来源:228《BindingDB》;
- 蛋白表示:194《ESM》;基于结构的方法:182《AutoDock Vina》、201《OpenFE》;
- 评测陷阱:169《Benchmark 陷阱》。