4. 数据收集策略与来源归纳总结
数据收集,是整个ADMET项目的起点,也是决定模型天花板的关键一步。
说白了,模型再牛,喂进去的数据不行,出来的结果就是垃圾。我就是这个观点。所以这一章,我们专门聊聊数据从哪来、怎么收、怎么管。
4.1 数据来源全景图
数据来源其实就两大阵营:公共数据库 和 自有实验数据。
我个人习惯,先摸清楚公共资源里有什么,再考虑要不要砸钱做实验。你想想看,如果已有的数据就能解决问题,何必重复造轮子?
4.2 公共数据库详解
我遇到过不少新手,一上来就问「公共数据库到底用哪个好?」。嗯,这里要注意,没有「最好」的数据库,只有「最适合」你项目的库。
我列个表,你看看区别就清楚了。
| 数据库名称 | 特点 | 主要数据类型 | 典型应用 |
|---|---|---|---|
| ChEMBL | 手动整理,质控极严 | 化合物活性、ADMET | 分类模型、回归模型 |
| PubChem | 数据量巨大,噪音多 | 生物活性、理化性质 | 分子指纹、虚拟筛选 |
| DrugBank | 聚焦上市/在研药物 | 药物靶点、代谢信息 | 成药性分析、阳性样本 |
| ADMETlab | 专为ADMET设计 | 吸收、分布、代谢、毒性 | 多任务学习、端点预测 |
| PDBbind | 结合亲和力数据主力 | 蛋白-配体结合常数 | 打分函数、对接验证 |
4.3 自有实验数据策略
公共数据虽然好,但有些端点,比如肾毒性、眼毒性,公共库里几乎找不到足够样本。这时候就得靠自己产数据。
我记得有一次做某靶点的肝毒性预测,公共库里只有不到200个阳性样本,结果模型训练出来一塌糊涂。后来我们补了80个内部测定数据,效果才勉强过关。
4.3.1 体外数据收集
体外数据,说白了就是用细胞或酶来做实验。常见指标包括:
- Caco-2 渗透性:模拟肠道吸收
- 肝微粒体稳定性:看化合物在肝里停留多久
- CYP 抑制:是否干扰代谢酶
- hERG 抑制:心脏毒性风险评估
- 细胞毒性 (IC50):基础毒性判断
这些数据最干净,噪音最小。我建议,如果预算允许,至少做核心端点的体外实验,用来做模型的「金标准」验证集。
4.3.2 体内数据收集
体内数据就是动物实验了。说实话,这玩意成本高、周期长,但价值也最大。
我们用大鼠、小鼠做 PK 实验,测药时曲线 (AUC)、半衰期 (t1/2)、生物利用度 (F%)。这些数据公共库里极少,可遇不可求。
4.4 数据收集的执行策略
项目启动后,数据收集不能盲目「先收再挑」。我一般按三步走:
- 盘点存量:先把内部已有的数据梳理清楚,看覆盖哪些端点、有多少样本。
- 清查公共资源:针对缺失的端点,去 ChEMBL、ADMETlab 搜一遍,评估可用数据量。
- 制定补盲计划:公共库也填不了的坑,才启动实验补数据。优先补核心端点,比如吸收和毒性。
举个实际例子。我最近在做一个大模型项目,目标是预测 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
关于单元统一,很多刚入行的朋友容易踩坑。比如 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) | 标注细胞系和时间 |
嗯,到这里,数据收集的策略和来源已经讲得差不多了。你手头的项目需要哪些数据,现在心里有数了吗?