课程导论:ADMET预测的重要性与分子描述符的核心作用

大家好,我是老周。做计算化学这行快十五年了,今天咱们聊聊ADMET预测。说实话,我刚入行那会儿,总觉得这玩意儿就是锦上添花,真正拍板还得靠实验数据。直到有一次,我们一个辛辛苦苦筛了两年的先导化合物,在动物实验阶段因为肝脏毒性翻了车……嗯,从那以后,我再也不敢小看ADMET预测了。

为什么ADMET预测这么重要?

你想想看,一个新药从研发到上市,平均要花10-15年,投入超过10亿美元。而其中因为ADMET性质不良导致的失败,占了临床候选药物的40%以上。这不是个小数目。

我给大家拉个数据,看着更直观:

药物临床失败原因占比
失败原因 占比 典型问题
ADMET性质不良 40-45% 毒性、代谢快、吸收差
疗效不足 25-30% 靶点结合力弱、选择性差
商业原因 10-15% 市场规模、竞争格局
临床安全性 10-12% 脱靶效应、免疫原性
其他 5-10% 配方、生产、专利

看到了吗?ADMET问题是头号杀手。我有个朋友在药企做早期筛选,他们一个项目组的35个候选分子,ADMET预测能筛掉28个。剩下那7个,最后真正走到临床的只有1个。这就是现实。

什么是ADMET?

ADMET是五个英文单词的缩写:

  • 吸收 (Absorption) —— 药物能不能被人体吸收?口服还是注射?
  • 分布 (Distribution) —— 药物到了体内会跑到哪些器官?够不够快?
  • 代谢 (Metabolism) —— 肝脏会不会把它降解掉?半衰期多长?
  • 排泄 (Excretion) —— 从哪排出去?肾脏还是肠道?
  • 毒性 (Toxicity) —— 会不会伤肝?有没有心脏毒性?

说白了,ADMET就是在问:这药进了人体后,怎么走、怎么用、怎么走、安不安全。每一个环节出了问题,前期投入基本就打了水漂。

我的小技巧:在做ADMET预测时,不要只看单一性质。我习惯先把吸收和毒性这两头盯死——吸收不好的,后面再有效也白搭;毒性不过关的,代谢再稳定也没用。

分子描述符在这里扮演什么角色?

讲完ADMET的重要性,咱们来聊聊它的核心工具——分子描述符。

你想想,ADMET预测本质上是个数学建模问题。我们给模型输入分子的结构信息,输出预测的ADMET性质数值。那么,怎么把分子结构变成计算机能懂的数学语言?就是靠分子描述符。

我做了这么多年模型,有个很深的体会:模型的好坏,七分靠描述符,三分靠算法。同样的神经网络,你用对了描述符,预测准确率能翻一倍。反过来,描述符选错了,再好的算法也救不了。

举个例子,我之前带一个实习生做Caco-2细胞渗透性预测。他选了20多个分子描述符,模型跑出来R²才0.3。我一查,他用的全是拓扑指数,什么Wiener指数、Zagreb指数,没有一个反映极性和氢键。后来我把极性表面积、氢键受体供体数加进去,模型R²直接跳到0.78。你看,选对描述符就是这么关键。

分子描述符的类型

分子描述符分很多种,我给大家梳理一下:

常用分子描述符类型
类型 代表描述符 适合预测的性质
2D拓扑描述符 Wiener指数、分子连接性指数 理化性质、分配系数
3D分子场描述符 CoMFA、CoMSIA 结合亲和力、选择性
量子化学描述符 HOMO/LUMO能级、静电势 反应活性、代谢位点
药效团描述符 Golpe、CATS 靶点相互作用、毒性
指纹图谱描述符 ECFP4、MACCS 多样性分析、相似性搜索
分子性质描述符 LogP、TPSA、HBD/HBA ADMET几乎所有性质

每种描述符都有自己的长处和短板。比如ECFP4指纹,做相似性搜索特别好,但用在定量预测上就不太灵光。而LogP和TPSA这类基础性质描述符,虽然简单,却是ADMET预测的常青树——我敢说,90%的ADMET模型都离不开它们。

核心要点:选择分子描述符,不是越多越好,而是要对症下药。预测水溶性就多放极性描述符,预测代谢稳定性就考虑量子化学参数。一个真正好的模型,通常只用5-15个深思熟虑的描述符,而不是50-100个随便堆砌的变量。

一个简单的例子:计算分子描述符

讲了这么多理论,咱们看段代码。用RDKiT算几个常用描述符,其实很简单:

from rdkit import Chem
from rdkit.Chem import Descriptors

mol = Chem.MolFromSmiles('Cc1ccccc1O')  # 对甲基苯酚

logp = Descriptors.MolLogP(mol)
tpsa = Descriptors.TPSA(mol)
hbd = Descriptors.NumHDonors(mol)
hba = Descriptors.NumHAcceptors(mol)
mw = Descriptors.MolWt(mol)

print(f'LogP: {logp:.2f}')
print(f'TPSA: {tpsa:.2f} Ų')
print(f'氢键供体: {hbd}')
print(f'氢键受体: {hba}')
print(f'分子量: {mw:.2f} Da')

这段代码算出来的这五个描述符,搭配别的特征,基本就能搭一个不错的ADMET模型框架。我个人习惯在写预测管线时,先把这套基础描述符跑通,再一步步加更复杂的参数。

注意了:算LogP的时候,不同工具包的结果可能差很多。RDKiT算出来的和ChemAxon算出来的,有时候能差0.5个Log单位。所以我在项目里会统一用一个工具,全程保持一致,不然最后模型预测的可靠性会大打折扣。

这张图帮你理清思路

好了,说了这么多,咱们用一张图来总结ADMET预测和分子描述符之间的关系。这也是本课程的整体框架:

ADMET预测与分子描述符选择——知识框架 分子结构输入 (SMILES/SDF/PDB) 分子描述符计算与选择 2D拓扑/指纹 3D/量子化学 分子性质(LogP/TPSA...) 药效团/拓扑 组合/混合描述符 ADMET预测模型 (QSAR/ML/DL) ADMET性质预测结果 (吸收/分布/代谢/排泄/毒性)

从这张框架图你就能看出来,分子描述符是连接分子结构和ADMET预测模型的桥梁。桥搭得稳不稳,直接决定了预测准不准。在接下来的29章里,我会带着大家逐一深入每种描述符的原理、计算方法和选择策略,一起把这座桥搭好。

好的,今天的课就到这里。咱们下次见。