# ADMET分子描述符一致性校验概述

1. ADMET分子描述符一致性校验概述

做药物研发的朋友应该都有体会——ADMET(吸收、分布、代谢、排泄、毒性)这五个字母,决定了化合物的临床命运。

我见过太多案例:化合物活性漂亮,换成自己的环境一算,描述符值差了30%以上。这种现象背后只有一个原因——计算流程不一致。

说白了,ADMET分子描述符一致性校验,就是确保同一化合物在不同环境下的计算结果保持一致。这件事比很多人想象的重要得多。

1.1 什么是ADMET分子描述符

ADMET分子描述符,是用计算方法从分子结构里提取的数字特征。这些特征直接反映药物在体内的行为。

拿我手头一个实际项目举例,常用的ADMET描述符包括这几类:

类型 典型描述符 单位/范围 我在项目中踩过的坑
物理化学性质 logP、分子量、H键供体/受体 logP通常0~5 不同软件算logP差异可达2个单位
吸收相关 Caco-2渗透性、人肠吸收率 %或级别 体外实验和计算值常对不上
分布相关 血浆蛋白结合率、表观分布容积 %、L/kg 蛋白结合率>99%时计算极不稳定
代谢相关 CYP酶抑制/诱导、半衰期 μM、小时 CYP2D6底物预测不同软件有分歧
排泄相关 清除率、肾排泄分数 mL/min/kg 种属缩放参数常出错
毒性相关 AMES致突变性、hERG阻断 阳性/阴性、IC50 hERG预测假阳性率偏高

每个描述符的计算口径、输入格式、参数设置都可能导致结果漂移。这也就是我为什么会投入精力做一致性校验的原因。

1.2 为什么需要一致性校验

你有没有遇到过这种场景?

在A平台算的logP是3.2,转到B平台变成3.9。前者说化合物脂溶性恰到好处,后者告诉你可能有毒性风险。你信哪个?

我曾经帮一家CRO做技术评审,发现他们的描述符流水线里,同一化合物的分子量在不同步骤竟然差了0.5 Da。追踪后发现是拓扑结构解析版本不一致造成的。

这里有个关键点要记住:

ADMET一致性校验解决的核心问题

  • 不同软件间描述符值可比较
  • 同一软件不同版本结果可复现
  • 团队协作时的"语言"统一
  • 向监管机构提交时经得起推敲

说白了,没有一致性校验,你的模型预测再准也没用——源头数据都是飘的。

1.3 不一致的主要来源

在实际工作中,我发现不一致的来源无非这几种:

  1. 软件实现差异——不同软件对同一描述符的定义不同。比如logP,有的用Hansch碎片法,有的用原子类型法。
  2. 参数设置差异——pH值、温度、离子强度等参数不同,计算结果跟着变。
  3. 输入文件差异——SMILES编码方式、分子格式、构象选取都会影响结果。
  4. 版本演进——软件升级后,底层算法变了,结果自然不一样。

一个小技巧:我习惯在项目启动前,先拿20个标准分子跑一遍全流程。把结果钉在那里,后面所有人的计算都以此为基准。这叫"锚定法",比事后追查高效得多。

1.4 校验的核心工作流

那么,一致性校验到底怎么做?我个人习惯把它拆成四个阶段:

下面这张图是我在实际项目中总结出来的结构:

ADMET一致性校验核心流程 阶段1 标准分子库准备 阶段2 多平台并行计算 阶段3 结果对比与统计 阶段4 偏差分析与报告 迭代优化 每个阶段输出的中间结果 都需要在固化前做一致性检查 最终报告包含偏差阈值、置信区间 和可接受的差异范围

你看,四个阶段形成了一个闭环。第4阶段发现问题后,可以回到第1阶段重新校准标准分子库,或者调整计算参数。

1.5 常用的工具和库

既然是实战,工具必须得跟上。我整理了一套常用方案:

我推荐的标准技术栈

  • RDKit —— 开源分子信息学工具包,基本没它搞不定的描述符
  • ADMET Predictor / Derek Nexus —— 商业软件,适合工业级应用
  • scipy.stats / pandas —— 对比分析、偏差计算
  • matplotlib / seaborn —— 可视化,一眼看出差异

举个例子,用RDKit算logP的代码片段:

from rdkit import Chem
from rdkit.Chem import Descriptors

mol = Chem.MolFromSmiles('c1ccccc1CCO')
logP = Descriptors.MolLogP(mol)
print(f'logP (RDKit): {logP:.2f}')

同样的分子,换一个软件算,结果可能就不一样了。为什么会这样?因为底层算法不同。

RDKit用的是Wildman-Crippen方法,其他软件可能用Ghose-Crippen或原子贡献法。这不是谁对谁错的问题,而是你需要知道差异在哪里。

1.6 校验的评判标准

一致性是否通过,得有个尺度。我处理项目时一般这么定:

偏差范围 评判结果 应对措施
|Δ| < 5% ✅ 完全一致 直接使用,无需修正
5% ≤ |Δ| < 15% ⚠️ 轻度偏差 确认参数设置是否一致
15% ≤ |Δ| < 30% 🟡 中度偏差 回溯输入文件与版本差异
|Δ| ≥ 30% 🔴 严重不一致 停止流程,排查根本原因

特别提醒:我遇到过一种情况——两个平台算的logP差了40%,最后发现是其中一个平台的SMILES解析器把羧基解码成了酯键。这种问题不在描述符本身,而在输入解析层。所以校验不能只看输出,要看整个计算链路。

1.7 本章小结

到现在,你应该对ADMET一致性校验有个整体认知了。

我总结一下这章的核心要点:

  • ADMET描述符的一致性校验,本质上是保证计算环境和流程的可复现性
  • 不一致的根源有三:软件实现、参数设置、输入格式
  • 校验流程是闭环迭代的,不是一次性工作
  • 评判标准需要提前定好,不要等出结果了再拍脑袋

嗯,接下来我们会走进细节,从标准分子库的构建开始,一步步把校验流程搭建起来。这些内容才是真正的实战干货。