第1节:课程导论与ADMET预测模型概述
各位工程师朋友,欢迎来到这门课。我先做个自我介绍——我在ADMET预测和SVA验证领域摸爬滚打了十多年,踩过不少坑,也总结了一些管用的招。这门课就是要把这些经验掰开揉碎了讲给你们听。
先说个背景。新药研发里,候选化合物因为ADMET性质不合格而失败的,占了将近一半。我见过一个项目,分子活性做得漂亮极了,结果一测肝微粒体代谢,半衰期不到5分钟——白高兴一场。所以,早做ADMET预测,能省下大笔时间和经费。
什么是ADMET?为什么我们关心它?
ADMET是五个词的缩写:吸收(Absorption)、分布(Distribution)、代谢(Metabolism)、排泄(Excretion)、毒性(Toxicity)。说白了,就是药物在体内从“进门”到“出门”的全过程。
| 性质 | 核心问题 | 常用指标 |
|---|---|---|
| 吸收 | 药物能不能进入血液循环? | Caco-2通透性、logP、溶解度 |
| 分布 | 药物到了哪些组织? | Vd、血浆蛋白结合率 |
| 代谢 | 药物怎么被分解? | 肝微粒体清除率、CYP抑制 |
| 排泄 | 药物怎么离开身体? | 肾清除率、半衰期 |
| 毒性 | 药物会不会引起不良反应? | hERG抑制、AMES试验、肝毒性 |
我习惯把ADMET预测看作“化学结构到生物学行为的翻译器”。你输入一个分子结构,模型输出一组数值和风险标签。但翻译器也会出错,这才有了咱们这门课要讲的故障排查。
预测模型的种类与工作流
目前主流的ADMET预测模型分三类:
- 基于规则(Rule-based):比如Lipinski五规则、Veber规则。简单快速,但太粗糙。
- 基于物理(Physics-based):比如分子动力学模拟、QSAR(定量构效关系)。精准,但计算成本高。
- 基于机器学习(ML-based):随机森林、XGBoost、图神经网络。现在最火,但依赖数据质量。
举个例子,我用RDKit算一个分子的logP:
from rdkit import Chem
from rdkit.Chem import Descriptors
mol = Chem.MolFromSmiles('CC(C)C1=CC=C(C=C1)C(C)C')
logP = Descriptors.MolLogP(mol)
print(logP) # 输出:4.1 左右
这段代码很直白,但你想想看——如果骨架解析失败,或者SMILES有手性歧义,结果就全错了。这就是我们后续要排查的方向。
核心原则:ADMET预测不是“算出来就完事”,而是“算出来以后要质疑它”。模型的输出永远只是假设,验证才是真相。
SVA验证——让预测可信的关键
SVA(Structural Validation & Assurance)是我自己团队定义的框架,核心思想是:
- 结构完整性检查:输入分子有没有错误?官能团是否被正确处理?
- 模型适用域评估:当前分子是否在模型训练数据的化学空间内?
- 输出合理性验证:预测值是否符合物理化学常识?
- 多模型交叉比对:不同模型结果是否一致?如果不一致,哪个更可信?
我在项目中遇到过这样一个案例:一个带硝基的化合物,某模型预测hERG抑制风险很低。但我查了训练集,发现硝基化合物只占0.3%——这种预测基本就是瞎猜。后来我们用SVA的适用域评估直接标红了这个样本,避免了一次错误的决策。
小技巧:建立你自己的“模型黑名单”。记录那些经常在某个化学系列上出错的模型,下次遇到类似结构直接打上“需谨慎”标签。
当前挑战与课程地图
做ADMET预测的人常遇到三个痛点:
- 数据噪声大——公开数据集中标签错误率可能超过10%
- 模型不透明——深度学习的“黑箱”让你很难解释预测原因
- SVA被忽视——很多团队拿到预测结果就直接用,不做验证
为了让你看清我们这门课的整体结构,我画了一张图:
图里从三大支柱展开到四个核心子模块,最后汇集到实践输出。咱们这门课就按照这个逻辑走:先打好基础,再学排查,最后用SVA收网。
准备工作与环境搭建
为了跟着后面的实操章节一起动手,我建议你准备好以下环境:
- Python 3.8+ 并安装 RDKit、scikit-learn、pandas、matplotlib
- 一个公开ADMET数据集(比如TDC的ADMET benchmark)
- 如果是Windows用户,建议用WSL或者Docker跑Linux环境
安装RDKit的命令很简单:
conda install -c conda-forge rdkit
# 或者
pip install rdkit-pypi
曾经踩过的坑:我建议用conda安装,别用pip。pip版RDKit在某些Python版本上会缺失部分描述符计算接口。我因为这个排查了两天才发现是安装问题。
好了,导论部分就到这里。你已经清楚了ADMET是什么、模型有哪些、SVA的定位,以及我们这门课的地图。后面每一章都会围绕实际故障案例展开,带着代码和参数配置一步步做。准备好,我们开始正题。