009

Harvard TDC 资源导航:药物 AI 任务、数据集与评测方法

TDC 的资源导航把任务、数据集与评测方法串成一张地图。这篇给出按需求查找资源的实用路径。

TDC 除了数据集本身,还提供了一套任务与评测方法的导航。它的实用价值在于:当你有一个具体问题时,能快速找到「有没有现成的数据集、别人做到什么水平、该用什么指标」。

按需求查找的路径

# 【场景一】:我要做某个 ADMET 性质的预测
#
#   1) 查有没有对应的数据集
from tdc.utils import retrieve_dataset_names
print(retrieve_dataset_names("ADME"))
print(retrieve_dataset_names("Tox"))

#   2) 看该任务的排行榜,了解合理的性能范围
#      → 【这是最有价值的信息】:
#        知道 SOTA 在哪,就知道自己的模型是否正常

#   3) 用 Benchmark Group 跑一遍标准评测
#      → 确认自己的流程没问题

# 【场景二】:我要做 DTI 预测
#
#   1) 选数据集:BindingDB、DAVIS、KIBA
#   2) 【关键:用 cold_split】(见 133)
#   3) 【必做平凡基线对照】(见 157)

# 【场景三】:我要做分子生成
#
#   1) tdc.generation 模块
#   2) 但生成任务的评测建议用 GuacaMol/MOSES(见 135、136)
#   3) TDC 的 oracle 功能提供了打分函数

from tdc import Oracle
oracle = Oracle(name="QED")
print(oracle(["CCO", "c1ccccc1"]))

# 可用的 oracle 包括:
#   QED、SA、LogP、DRD2、GSK3B、JNK3、
#   以及多个多目标组合
# → 【这些是分子优化任务的标准打分函数】

# 【场景四】:我想知道某类任务有哪些方法
#   → 看该任务排行榜上的提交,
#     顺着找对应的论文与代码

TDC 的核心模块

模块 内容 典型用途
single_pred ADME、Tox、HTS、QM、Yields 性质预测
multi_pred DTI、DDI、PPI、GDA、Catalyst 关系预测
generation MolGen、RetroSyn、Reaction 生成任务
Oracle 标准打分函数 分子优化
benchmark_group 标准化评测组 规范比较
chem_utils 分子处理工具 数据清洗
evaluator 各类评价指标 评测

数据处理工具

# TDC 内置了一些实用的数据处理功能

from tdc.single_pred import ADME
data = ADME(name="Caco2_Wang")

# 查看标签分布
data.label_distribution()

# 二值化(回归 → 分类)
data.binarize(threshold=-5.0, order="ascending")

# 转换标签尺度
data.convert_to_log()

# 获取数据统计
print(data.get_data().describe())

# ---- DTI 特有的处理 ----
from tdc.multi_pred import DTI
dti = DTI(name="BindingDB_Kd")

# 【处理重复测量】—— 同一药物-靶点对多次测定
dti.harmonize_affinities(mode="max_affinity")   # 或 "mean"

# 【转对数尺度】—— 必做
dti.convert_to_log(form="binding")

# 【按阈值筛选靶点/药物】
dti.get_split(method="cold_split", column_name="Drug")

# ---- 分子处理工具 ----
from tdc.chem_utils import MolConvert
converter = MolConvert(src="SMILES", dst="Graph2D")
# 支持 SMILES → SELFIES、Graph、PyG、DGL 等

# 【这些工具的价值】:
#   省去自己写数据处理的时间,
#   且处理方式与公开基准一致 → 结果可比

排行榜的正确用法

  • 作为性能范围的参考这是排行榜最有价值的用法。知道某类任务的 SOTA 在什么水平,就能判断自己的结果是否合理;
  • 用作自检如果你在自家数据上的指标远好于 TDC 排行榜的最好成绩,先怀疑自己的评测有泄漏
  • 顺藤摸瓜找方法:排行榜上的提交通常有论文与代码链接;
  • 不要用作方法优劣的判据
    • 排行榜有过拟合的动机(见 169《Benchmark 陷阱》);
    • 名次差异可能在噪声范围内;
    • 在 TDC 上好不代表在你的化学空间上好。
  • 关注方差而非只看均值:TDC 的评测报告标准差——如果前几名的差距小于标准差,名次没有意义

与其它资源的配合

需求 资源
标准任务与评测 TDC
原始活性数据 ChEMBL(见 226《ChEMBL》)、PubChem
结构数据 PDB、AlphaFold DB
靶点证据 Open Targets(见 154《AI 靶点发现模型》
基因依赖性 DepMap
虚拟筛选基准 DUD-E、LIT-PCBA(见 241《DUD-E》242《LIT-PCBA》
生成模型评测 GuacaMol、MOSES(见 135《GuacaMol 论文精读》136《MOSES 论文精读》
数据质量导向的基准 Polaris

一个务实的使用建议

# 【把 TDC 当作「参照系」而非「目标」】
#
# 正确的用法:
#   1) 用 TDC 确认自己的流程正常
#      在标准任务上达到接近 SOTA 的水平
#
#   2) 用 TDC 了解某类任务的难度
#      如果 SOTA 的 AUC 只有 0.75,
#      说明这个任务本身就难
#      → 不要期望在自家数据上做到 0.95
#
#   3) 用 TDC 的划分方式与评测规范
#      即使用自己的数据,也照这个规范做
#
# 【错误的用法】:
#   把提升 TDC 排行榜名次当作目标
#   → 与实际项目价值脱节
#
# 【最重要的一步】:
#   最终必须在【自己的数据】上验证
#   用时间划分,模拟真实部署
#   → TDC 上的表现与你的项目可能毫无关系

关键要点

  • 排行榜最有价值的用法是了解某类任务的合理性能范围,而非追名次;
  • 自家指标远好于 TDC 最好成绩 → 先怀疑评测有泄漏
  • Oracle 模块提供了分子优化任务的标准打分函数,可直接用;
  • 把 TDC 当参照系而非目标——最终必须在自己的数据上用时间划分验证。

延伸资源