第4章 打分函数:半经验力场、基于知识的打分与一致性评分

打分函数是分子对接的“裁判员”。对接算法负责给配体找姿势,打分函数负责判断哪个姿势靠谱。你想想看,姿势生成得再多,评分不准也是白搭。我个人习惯把打分函数看作整个对接流程的“命门”——选对了,对接结果才有参考价值;选错了,后面做虚拟筛选基本就是碰运气。

本章咱们就聊三种主流的打分思路:AutoDock 自带的半经验力场、从已知结构里“学”出来的基于知识的打分,以及把多种打分揉在一起的一致性评分。我会结合自己踩过的坑和项目中的经验来拆解,希望能帮你建立起选型直觉。

4.1 打分函数到底在算什么?

简化到骨子里,打分函数就是在估算结合自由能 ΔG。ΔG 越负,结合越强。但你我都知道,真正的自由能计算(比如 FEP)成本太高,对接场景下根本跑不动。所以打分函数做了大量近似——用几个关键能量项的组合来逼近 ΔG。

我在做早期药物发现项目时遇到过一种情况:对接排名前 10 的化合物,湿实验测出来只有 2 个有活性。后来排查发现,是打分函数对某些官能团的去溶剂化惩罚算偏了。从那以后我就明白,打分函数的每一项都有物理意义,不能只盯着总分看。

目前主流打分函数可以归为三大类,我画了一张图帮你直观对比:

分子对接打分函数类型对比 半经验力场 范德华 + 静电 + 氢键 去溶剂化 + 扭转熵惩罚 基于知识的打分 原子对偏好统计 从 PDB 结构反推势能 一致性评分 多打分函数融合 加权 / 排序 / 投票 ✅ 适合场景 AutoDock 默认、速度快 物理项可解释性强 适用于常规药物对接 ✅ 适合场景 大数据虚拟筛选 含金属体系有优势 依赖训练集质量 ✅ 适合场景 结果需要高可信度 消除单个函数偏差 计算量较大 核心原则:没有万能打分函数,组合使用 + 理解物理意义 才是正解 我建议根据靶点类型、数据规模和计算资源来选择,而不是盲目追求“最新”

4.2 半经验力场:AutoDock 的看家本领

AutoDock 4 用的是半经验力场,我做了这么多年对接,最常用的还是它。为啥?因为它把物理项和经验修正结合得比较平衡,跑得快,结果也稳。

打分函数长这样:

ΔG = ΔG_vdw + ΔG_hbond + ΔG_elec + ΔG_desolv + ΔG_tors

每一项拆开来看:

  • ΔG_vdw — 范德华力。用 Lennard-Jones 12-6 或 8-4 势能算。我在做激酶抑制剂项目时发现,配体在疏水腔里的 VDW 项往往占了总分的 60% 以上,这步算不准后面全白搭。
  • ΔG_hbond — 氢键。方向性和距离都有要求,AutoDock 用了一个平滑的 12-10 势能来模拟。记得别把距离容忍设得太大,我一般取 3.5 Å 以内。
  • ΔG_elec — 静电。基于库仑定律,需要配体和受体都有部分电荷。电荷来源我建议用 Gasteiger,和 AutoDock 的兼容性最好。
  • ΔG_desolv — 去溶剂化能。配体从水溶液进入结合口袋,得脱掉表面水分子,这个惩罚项很重要。我曾经因为忘调去溶剂化参数,导致一批极性化合物打分虚高,后来排查了整整两天……
  • ΔG_tors — 扭转自由能。配体越柔顺,结合时的熵损失越大。可旋转键每多一根,惩罚大约增加 0.3–0.5 kcal/mol。

这些项通过实验数据拟合出来的系数加权求和。AutoDock 4 的默认系数是从 188 个已知复合物拟合得到的,覆盖了大部分药物-靶点类型。

小技巧:如果你对接的体系带有金属离子(比如 Zn²⁺、Mg²⁺),建议打开 AutoDock4 的金属配位修正,或者用 AutoDock4Zn 专用参数集。普通半经验力场对金属配位的描述偏弱。

4.3 基于知识的打分:让数据说话

另一种思路是干脆不假设物理公式,直接从已知的蛋白-配体结构里“学”出规律。这就是基于知识的打分,也叫统计势方法。

核心操作:统计每个原子对(比如 C-O、N-H)在结合界面出现的频率,用 Boltzmann 公式倒推出势能。

W(r) = -kBT · ln[ ρ(r) / ρ*(r) ]

其中 ρ(r) 是实际结构中原子对在距离 r 出现的概率密度,ρ*(r) 是参考状态下的概率。比值为正说明在该距离下排斥,为负说明吸引。

典型的代表有 PMF、DrugScore、ITScore。这些工具不依赖对接软件内部的力场参数,独立性强。我在做含铋化合物的虚拟筛选时用过 PMF,效果出乎意料——因为半经验力场对重金属描述很弱,反而统计势从已知结构中学到了配位规律。

避坑指南:我曾经踩过一个坑——拿基于知识的打分函数去评价一个与训练集完全不同的化学空间,结果排名完全随机。说白了,统计势的泛化能力取决于训练集的覆盖度。你用的配体骨架如果训练集里几乎没有,那这个分数基本靠猜。

和半经验力场对比,区别很明显:

对比维度 半经验力场 基于知识的打分
理论基础 物理化学 + 经验参数 统计力学 + 结构数据库
计算速度 快(毫秒级) 较快(微秒级)
可解释性 高,每项有物理意义 中,依赖训练集分布
对金属离子 弱,需要特殊处理 强,如果训练集包含金属蛋白
外推能力 较强,物理项通用 弱,受限于训练集空间
我的建议:在常规药物-靶点对接中,优先用半经验力场。如果靶点是金属蛋白或非标准氨基酸体系,加上一个基于知识的打分做交叉验证,会更稳妥。

4.4 一致性评分:别把鸡蛋放一个篮子里

我遇到过不少同学,拿着一种打分函数的结果就直接下单合成,结果合成出来没有活性,项目白白浪费两个月。一个更聪明的做法是一致性评分。

一致性评分不是一种新的打分函数,而是一种策略——把多个打分函数的结果综合起来,降低单一函数的偏差。

常见的方式有三种:

  1. 加权平均法 — 每个打分函数给一个权重(可以通过验证集优化),然后算加权总分。权重怎么定?我习惯用已知活性化合物的排名一致性来反推。
  2. 排序融合法 — 对每个打分函数分别排序,然后取各化合物排名位置的均值或中位数作为最终排序。这种方法对异常值不敏感,我在实际项目中最常用。
  3. 投票法 — 设定一个阈值,比如前 10% 算“合格”,然后看一个化合物被多少个打分函数选为合格。得票多的优先考虑。

举个例子,我去年做一个虚拟筛选项目,用了三种打分函数:AutoDock 的半经验力场、PMF、X-Score。单个函数 top 50 的重合度只有 30% 左右,但一致性评分 top 30 的化合物在湿实验中的命中率达到了 67%,比单个函数提升了近一倍。

效率提示:一致性评分虽然效果好,但计算量是线性增加的。我建议在虚拟筛选的初筛阶段用单个半经验力场快速过滤,只对 top 10–20% 的化合物做多函数一致评分,这样效率和精度能兼顾。

4.5 实践建议:选型三部曲

聊了这么多理论,最后给你一套我自己的选型思路:

  • 第一步:看靶点。普通激酶、GPCR、蛋白酶,用 AutoDock 半经验力场足够了。金属酶、核受体等特殊体系,准备一个基于知识的打分做辅助。
  • 第二步:看数据量。几十个化合物可以跑细致的一致评分;几千个化合物,先用半经验力场粗筛,再对 top 做一致评分。
  • 第三步:看决策。如果对接结果要支撑合成决策,至少用两种不同原理的打分函数交叉验证。我见过太多项目因为单一打分函数“看起来很美”而翻车。

最后再叮嘱一句:打分函数是工具,不是真理。它帮你缩小候选范围,但不能替代湿实验。理解每个能量项在算什么,比盲目追求高分重要得多。嗯,这一章就聊到这儿,希望下次你打开 AutoDock 的时候,能对那个最终分数有更深一层的理解。