AI 制药:从分子生成到 ADMET 预测的算力管线
说明:本篇为综述/无第一手实验数据,采用公开文献与行业实践路线。
实验目标
AI 制药是"智算×科学计算"结合的典型行业:分子动力学(超算)提供构象数据,生成模型与 ADMET 预测(智算)提供候选与筛选,两者循环迭代。本篇目标:拆解一条完整的新药发现算力管线——分子表示 → 生成模型 → 虚拟筛选(对接/动力学)→ ADMET 预测 → 湿实验闭环,讲清每个环节用什么模型、吃多少算力、数据从哪来,以及"虚拟筛选的坑"(对接打分不可靠、数据偏差、过拟合公共数据集)如何工程化规避。
代码逐段拆解
第一段:分子表示与数据加载
python
# 用 RDKit 把 SMILES 转成图/特征(管线入口)
from rdkit import Chem
from rdkit.Chem import Descriptors, rdMolDescriptors
def smiles_to_features(smiles):
mol = Chem.MolFromSmiles(smiles)
if mol is None:
return None # 无效 SMILES 直接过滤
return {
'n_atoms': mol.GetNumAtoms(),
'mw': Descriptors.MolWt(mol),
'logp': Descriptors.MolLogP(mol), # 脂溶性
'tpsa': rdMolDescriptors.CalcTPSA(mol), # 极性表面积
'rotb': rdMolDescriptors.CalcNumRotatableBonds(mol),
}要点:
- SMILES 是入口,RDKit 是标准工具:SMILES 一行字符串表示分子,RDKit 解析并计算描述符;
MolFromSmiles返回None就是脏数据,管线第一件事是过滤。 - 描述符是"规则特征":MW/logP/TPSA 是传统 QSAR 的特征,和深度学习表征(图/3D 构象)互补——好的管线两者都用。
- 分子表征三种形态:字符串(SMILES,供生成模型)、图(原子/键,供 GNN)、3D 构象(供几何模型与对接)——每种形态对应一类模型,管线要维护三套数据视图。
第二段:虚拟筛选与打分
python
# 对接打分(示意):分子与靶点结合能,常用 AutoDock/Vina
def docking_score(smiles, pdb_id):
# 实际对接:准备配体/受体 → 搜索构象 → 打分函数
# 这里示意打分函数的核心思想:结合自由能近似
return -8.3 # kcal/mol 级,示意值
# 多轮筛选逻辑:粗筛(规则/ADMET) → 中筛(对接) → 细筛(动力学)
candidates = load_smiles('enumerated_library.csv') # 枚举库,可数百万
rules_hit = [s for s in candidates if smiles_to_features(s)['logp'] < 5]
docked = sorted(rules_hit, key=docking_score)[:500] # 对接打分取前 500
# 最后 20-50 个进分子动力学精筛(超算,贵)要点:
- 漏斗式筛选:候选空间从数百万级逐级收敛——规则过滤(秒级)→ 对接打分(分钟级)→ 分子动力学(天级)。算力成本递增几个数量级,所以每级只放过最靠前的。
- 对接打分不可靠是公开事实:打分函数是近似(结合自由能的廉价代理),排序可以,绝对值不可信;行业共识是"对接用于排序与富集,不用于绝对判定"。
- 动力学精筛贵但准:分子动力学(04 章 ML 势函数篇的技术)模拟结合稳定性,是最接近湿实验的计算验证,但每分子天级算力——只能用在最后几十个。
原理讲解
管线的四类模型与算力画像
| 环节 | 模型类型 | 数据 | 算力画像 |
|---|---|---|---|
| 分子生成 | RNN/Transformer/扩散 | 已知药物 SMILES 库 | 智算:训练重、推理轻 |
| 性质/ADMET 预测 | GNN/Transformer | 公共+专有标注 | 智算:中等 |
| 对接 | 打分函数/几何算法 | 靶点结构 | 超算:并行枚举 |
| 分子动力学 | 势函数(经典/ML) | 力场/DFT 数据 | 超算:最重 |
双栈分工清晰:生成+ADMET(数据驱动的智算)与对接+动力学(物理驱动的超算)交替使用,形成"AI 生成假设 → 物理验证假设 → 反馈修正 AI"的闭环——这就是"智算×超算互相促进"在制药行业的具象。
三大坑与工程规避
- 数据偏差:公共数据集(如 ChEMBL)偏已有药物空间,生成的分子偏向已知化学——用"多样性奖励"与专有数据补充。
- 公共基准过拟合:许多模型在 MoleculeNet 等基准"刷分",真实场景泛化差——验收必须用留出集与活性实验回测,而不是 benchmark 分数。
- 湿实验闭环成本:计算筛选的终点是湿实验,回测反馈(阳性率、命中率)必须回流训练——没有闭环的管线只是"生成器",不是"发现引擎"。
实验结果
(估算口径,非实测;典型管线规模)
| 环节 | 候选数 | 单步耗时 | 算力 |
|---|---|---|---|
| 枚举库生成 | 10⁵-10⁷ | 秒级/分子 | 智算 GPU |
| 规则过滤 | 剩 10-50% | 秒级 | CPU 即可 |
| 对接打分 | 剩 10³-10⁴ | 分钟级/分子 | 超算并行 |
| 动力学精筛 | 剩 20-50 | 天级/分子 | 超算最重 |
| 湿实验验证 | 剩 3-10 | 周-月 | 实验 |
工程启示
- 管线先搭漏斗再谈模型:先定各级筛选的收敛比例与算力预算,再选模型——"能筛多少"比"模型多准"更先决定成败。
- 打分只排序、不绝对:对接/ADMET 分数都当"排序工具"用,绝对判定交给动力学与湿实验。
- 三套分子视图要统一管理:SMILES/图/3D 构象是同一分子的不同投影,管线要保证三视图一致(同一 ID 体系),否则上下游数据错位。
- 闭环是护城河:湿实验回测数据回流到训练集与模型更新,是 AI 制药管线区别于"论文 demo"的分水岭——数据飞轮比模型本身更值钱。
下一篇预告:制药管线离不开高质量数据,下一篇补上地基——"科学数据管线:从实验数据到训练集的工程化"。