4. 数据收集策略与来源归纳总结

数据收集,是整个ADMET项目的起点,也是决定模型天花板的关键一步。

说白了,模型再牛,喂进去的数据不行,出来的结果就是垃圾。我就是这个观点。所以这一章,我们专门聊聊数据从哪来、怎么收、怎么管。

4.1 数据来源全景图

数据来源其实就两大阵营:公共数据库 和 自有实验数据。

我个人习惯,先摸清楚公共资源里有什么,再考虑要不要砸钱做实验。你想想看,如果已有的数据就能解决问题,何必重复造轮子?

ADMET数据收集核心来源 数据源 公共数据库 自有实验数据 ChEMBL / PubChem DrugBank / ADMETlab 体外ADMET测定 体内PK数据 数据清洗与标准化 模型训练输入

4.2 公共数据库详解

我遇到过不少新手,一上来就问「公共数据库到底用哪个好?」。嗯,这里要注意,没有「最好」的数据库,只有「最适合」你项目的库。

我列个表,你看看区别就清楚了。

数据库名称 特点 主要数据类型 典型应用
ChEMBL 手动整理,质控极严 化合物活性、ADMET 分类模型、回归模型
PubChem 数据量巨大,噪音多 生物活性、理化性质 分子指纹、虚拟筛选
DrugBank 聚焦上市/在研药物 药物靶点、代谢信息 成药性分析、阳性样本
ADMETlab 专为ADMET设计 吸收、分布、代谢、毒性 多任务学习、端点预测
PDBbind 结合亲和力数据主力 蛋白-配体结合常数 打分函数、对接验证
个人技巧:ChEMBL 的质控做得非常好,但数据量有限。如果你要做大规模预训练,PubChem 是不错的选择。我以前做过一个项目,只用 ChEMBL 训练出来的模型在小数据集上表现极好,但一到真实场景就崩了。后来把 PubChem 的数据混进去,泛化能力直接上了一个台阶。

4.3 自有实验数据策略

公共数据虽然好,但有些端点,比如肾毒性、眼毒性,公共库里几乎找不到足够样本。这时候就得靠自己产数据。

我记得有一次做某靶点的肝毒性预测,公共库里只有不到200个阳性样本,结果模型训练出来一塌糊涂。后来我们补了80个内部测定数据,效果才勉强过关。

4.3.1 体外数据收集

体外数据,说白了就是用细胞或酶来做实验。常见指标包括:

  • Caco-2 渗透性:模拟肠道吸收
  • 肝微粒体稳定性:看化合物在肝里停留多久
  • CYP 抑制:是否干扰代谢酶
  • hERG 抑制:心脏毒性风险评估
  • 细胞毒性 (IC50):基础毒性判断

这些数据最干净,噪音最小。我建议,如果预算允许,至少做核心端点的体外实验,用来做模型的「金标准」验证集。

4.3.2 体内数据收集

体内数据就是动物实验了。说实话,这玩意成本高、周期长,但价值也最大。

我们用大鼠、小鼠做 PK 实验,测药时曲线 (AUC)、半衰期 (t1/2)、生物利用度 (F%)。这些数据公共库里极少,可遇不可求。

避坑指南:我曾经接手过一个项目,甲方丢给我一堆内部体内数据,信誓旦旦说「都是标准协议做的」。结果一检查,有的按灌胃给药,有的是静脉注射,还有的连动物品系都没标注。这种数据根本没法直接进模型,光清洗就花了三周。所以——实验前统一标准,实验后做好元数据记录,后面能省太多时间。

4.4 数据收集的执行策略

项目启动后,数据收集不能盲目「先收再挑」。我一般按三步走:

  1. 盘点存量:先把内部已有的数据梳理清楚,看覆盖哪些端点、有多少样本。
  2. 清查公共资源:针对缺失的端点,去 ChEMBL、ADMETlab 搜一遍,评估可用数据量。
  3. 制定补盲计划:公共库也填不了的坑,才启动实验补数据。优先补核心端点,比如吸收和毒性。

举个实际例子。我最近在做一个大模型项目,目标是预测 20 个ADMET端点。第一步,我们发现内部有 8 个端点的体外数据,共约 15 万条。第二步,从 ChEMBL 和 ADMETlab 补充了 6 个端点的数据,约 8 万条。最后,针对剩下的 6 个毒性端点——因为实在太稀缺——我们启动了体外实验计划,预计再花半年产出 2 万条数据。整个数据收集团队,分三组并行跑:公共爬取组、数据清洗组、实验对接组。

你现在看,是不是觉得「并行推进」才是正解?

4.5 数据质量与格式标准化

不管数据从哪来,最终要喂进模型,格式必须统一。

我通常要求所有数据统一输出为 CSV 格式,包含以下必要列:

smiles, endpoint_name, endpoint_value, unit, source, confidence_level
Cc1ccccc1, logD, 2.3, logD, chEMBL, 1
Cc1ccccc1C(=O)O, hERG_pIC50, 5.2, pIC50, internal, 2
重点:confidence_level 是我特别加入的字段。1 表示数据来源可靠(比如来自 ChEMBL 或内部标准实验),2 表示一般(如 PubChem 或文献数据),3 表示存疑(如 AI 预测值)。建模时,你可以根据置信度给不同权重,这招能显著提升模型鲁棒性。

关于单元统一,很多刚入行的朋友容易踩坑。比如 logD 有的实验是 pH 7.4 测的,有的用 pH 5.5,差得远。所以标准化时,必须记录实验条件。

我一般会做一张「实验条件映射表」:

端点 默认单位 备注
logP / logD 无量纲 标注 pH 条件
Permeability (Caco-2) 10^-6 cm/s 区分 A->B 和 B->A
hERG inhibition pIC50 (M) 无
Microsomal stability CLint (µL/min/mg) 标注是否加 NADPH
Cytotoxicity IC50 (µM) 标注细胞系和时间

嗯,到这里,数据收集的策略和来源已经讲得差不多了。你手头的项目需要哪些数据,现在心里有数了吗?