1. ADMET 预测概述:背景、应用场景与常见任务
做药物设计这么多年,我越来越觉得 ADMET 预测才是真正的「守门员」。先说说概念吧。
ADMET 是五个词的首字母:吸收(Absorption)、分布(Distribution)、代谢(Metabolism)、排泄(Excretion)、毒性(Toxicity)。说白了,就是化合物进入体内后的一系列命运。你想想看,一个化合物活性再漂亮,如果到了体内被肝脏快速代谢掉,或者毒性太大,那前面做的所有优化都白费了。
我遇到过不少团队,把全部精力放在提高活性上,结果到动物实验阶段才发现 PK 数据惨不忍睹。回头再改结构,时间成本、资金成本都翻了好几倍。
1.1 为什么 ADMET 如此重要
如果你去翻翻药物研发的历史数据,会发现一个扎心的事实:约 40% 的临床候选药物因为 ADMET 问题被淘汰。这不是小概率事件,而是行业常态。
- 活性强 ≠ 成药性好:很多高活性化合物溶解性差,口服吸收率不到 10%。
- 选择性高 ≠ 安全性高:比如有些化合物对靶点很专一,但会抑制 hERG 离子通道,引发心脏毒性。
- 体外数据好 ≠ 体内表现好:代谢稳定性、血浆蛋白结合率这些因素,体外很难完全模拟。
我个人习惯是在项目早期就引入 ADMET 筛选,而不是等到优化完活性再补做。这样做的好处很明显——避免「活性好、ADMET 差」的无效迭代。
核心观点:ADMET 预测不是药物研发的「后期验证」,而是「早期决策」的一部分。越早介入,研发效率越高。
1.2 常见的 ADMET 预测任务
ADMET 预测涉及的具体任务很多,我把最常见的整理成一张表,方便你快速了解。
| 类别 | 常见任务 | 简单描述 | 为什么重要 |
|---|---|---|---|
| 吸收 | Caco-2 渗透性、口服生物利用度、溶解度 | 评估化合物能否被肠道吸收进入血液循环 | 口服药物必须跨过这道门槛 |
| 分布 | 血浆蛋白结合率、血脑屏障穿透、组织分布体积 | 化合物在体内不同组织间的分配情况 | 影响药效持续时间和靶点可及性 |
| 代谢 | 肝微粒体稳定性、CYP 酶抑制/诱导、代谢产物预测 | 肝脏对化合物的代谢速度和方式 | 决定药物的半衰期和代谢性药物相互作用 |
| 排泄 | 肾清除率、胆汁排泄、半衰期预测 | 化合物从体内被清除的途径和速率 | 影响给药方案和蓄积毒性 |
| 毒性 | hERG 抑制、AMES 致突变性、肝毒性、急性毒性 LD50 | 评估化合物可能引发的毒性反应 | 直接关系到临床安全性 |
这里我想强调一点:不同任务的数据量和数据质量差异很大。比如 Caco-2 渗透性数据相对规整,而肝毒性数据往往不平衡(大部分化合物无毒,少数有毒)。这种不平衡在后续做交叉验证时,需要特别注意分层策略。
1.3 应用场景:从虚拟筛选到临床前优化
ADMET 预测覆盖了药物研发的多个阶段,每个阶段侧重点不同。
- 虚拟筛选阶段:对几万甚至几十万个化合物批量预测,快速过滤掉 ADMET 性质最差的那批。说白了就是个「粗筛」,通常用简单模型,比如基于分子指纹的随机森林就够了。
- 先导化合物优化:此时候选化合物数量少一些,可能需要更精确的回归模型。我记得有个项目需要预测大鼠口服生物利用度,我们用了梯度提升树配合留一法交叉验证,效果比单纯用线性模型好很多。
- 候选化合物评估:这个阶段要出报告给毒理部门,模型的不确定性必须量化。交叉验证的方差、预测区间都要展示出来。
我曾经遇到一个坑:在虚拟筛选阶段用了太复杂的模型(比如图神经网络),结果候选化合物只有几十个的时候,模型预测效果反而变差了。后来我总结,模型复杂度要和数据量匹配,不是越高级越好。
避坑提醒:不同应用场景下,对模型「可解释性」的要求也不同。虚拟筛选可以接受黑盒模型,但到了临床前评估阶段,药代研究团队通常会要求你解释哪些结构片段导致代谢稳定性差。这时候,树模型的特征重要性或者 SHAP 值就很有用了。
1.4 数据质量:ADMET 预测的根基
不管模型多先进,如果数据质量不行,一切白搭。我在整理公共数据集时发现几个普遍问题:
- 数据来源不一致:不同实验室的测量条件不同,直接合并会导致批次效应。
- 数据稀疏性:比如血浆蛋白结合率数据很多,但血脑屏障穿透数据很少。
- 数据噪声:有些实验重复性差,同一个化合物在不同批次里的测量值能差一倍。
对于这些问题,我的建议是:交叉验证策略必须考虑数据分组。如果数据来自多个实验室,最好按实验室来源做分组交叉验证,而不是简单随机拆分,否则会高估模型泛化能力。
嗯,下面这张图梳理了 ADMET 预测的总体知识脉络,方便你建立全局感。
1.5 那些年我踩过的坑(与交叉验证的交集)
讲到这里,我想分享几个实际教训。虽然是第一课,但这些经验能帮你理解为什么交叉验证在 ADMET 预测中如此重要。
- 教训一:直接随机拆分,后果严重。我曾经有个项目预测血浆蛋白结合率,数据来自 4 个不同实验室。随机交叉验证做出来 R² 0.8,看着不错。结果用按实验室分组交叉验证一测,R² 直接掉到 0.5。原来模型学到了实验室偏差,而不是真实的结构-性质关系。
- 教训二:忘记数据不平衡。有一次预测肝毒性,毒性样本只占 5%。简单 K 折下,有的折里一例毒性样本都没有,模型根本学不到东西。后来改用了分层 K 折,每个折里的正例比例保持一致,效果才稳定下来。
- 教训三:时间维度没考虑。我收集了一批近 5 年的数据,用随机交叉验证去验证模型,结果还挺好。但用时间序列交叉验证(早期数据训练,近期数据验证),效果就差很多。因为化合物设计和筛选策略在变化,训练集和测试集的数据分布会漂移。
个人建议:刚开始学习 ADMET 预测时,先别急着跑模型。花点时间搞清楚你的数据来源、分布和潜在偏差。你会发现在数据上多花 1 小时,能省下后面调模型 10 小时。
嗯,以上就是 ADMET 预测的概览。从下节课开始,我们会正式进入交叉验证的实操部分,包括具体的 Python 代码实现和不同场景下的验证策略选择。