3、评分函数简介:基于物理的评分、经验评分、基于机器学习的评分函数及其局限性
说到蛋白-配体打分,圈子里有句话叫「无打分,不虚拟筛选」。但究竟怎么打分才靠谱,这问题我琢磨了快十年。 我个人习惯把评分函数分成三大流派:基于物理的、经验的、机器学习的。每个流派都有自己的看家本事,也都有各自的软肋。 先别急着选边站,咱们一个个拆开看。
3.1 基于物理的评分:从第一性原理出发
这类评分函数,说白了就是直接算物理量。它不依赖实验数据,全靠力场参数和统计力学。
3.1.1 核心原理
基于物理的评分把结合自由能拆成几项:
- 范德华相互作用——用 Lennard-Jones 势能算
- 静电相互作用——库仑定律加 PB/GB 模型处理溶剂效应
- 去溶剂化惩罚——把水和配体/蛋白的相互作用换成配体-蛋白相互作用,能量差就是惩罚项
- 熵变——转动、平动、构象熵的损失
举个例子:MM/GBSA 方法就是典型的基于物理打分。我曾在一次激酶抑制剂优化项目里用过它,对活性排序的准确率还不错,但耗时太长——跑几百个化合物就要好几天。
3.1.2 优点与局限
| 优点 | 局限 |
|---|---|
| 有明确的物理意义 | 计算成本极高,不适合大规模虚拟筛选 |
| 不依赖实验数据,适用性广 | 力场参数的精度有限,尤其对金属离子处理不好 |
| 能处理构象变化 | 熵变估算不准确,通常低估结合熵损失 |
你想想看,一个蛋白有几千个原子,配体又有几十个原子,对每一个构象都要算两两相互作用。说白了这方法理论漂亮,实际跑起来很痛苦。
3.2 经验评分:用实验数据拟合出来的「捷径」
经验评分函数走的是另一条路——它不纠缠物理细节,而是用大量已知结合数据去拟合一个打分公式。
3.2.1 常见的经验评分项
- 氢键数——给每个氢键一个固定能量贡献
- 疏水接触面积——疏水项通常和接触面积成正比
- 旋转键扭转惩罚——配体的柔性越大,付出熵代价越多
- 芳香堆积——π-π 和 cation-π 相互作用
经典案例:GlideScore、ChemScore 都是经验评分。它们拟合出来的系数大致长这样:
ΔG ≈ w1 * N_hbond + w2 * S_hydrophobic + w3 * N_rot_bonds + w4 * π_stack_term
注意每个系数 w 都不是物理常数,而是统计出来的经验值。我在做激酶选择性项目时,就踩过这个坑——
我曾有一次... 试图把 ChemScore 的参数直接迁移到一个全新的骨架体系上。结果排序完全失效,活性化合物全部排到了后 30%。原因很简单——拟合用的训练集全是已知抑制剂,新骨架的结合模式差异很大,经验系数根本不适用。
3.2.2 经验打分的硬伤
- 训练集偏差——拟合数据主要来自常见靶标,遇到非常见体系容易翻车
- 项与项之间相关性——比如疏水接触和范德华作用往往高度耦合,但公式里当成独立项
- 适用范围窄——对同一靶标系列内有效,但对不同靶标迁移性差
3.3 基于机器学习的评分:数据驱动的新时代
这两年,ML-based 评分函数越来越火。我个人的经验是,数据足够大、系统足够新时,ML 的打分往往碾压传统方法。但这里水也很深。
3.3.1 典型做法
- 特征输入:原子对距离、相互作用指纹、理化性质、图神经网络节点特征
- 模型选择:随机森林、XGBoost、3D-CNN、图神经网络
- 输出:回归任务输出 pIC50/pKd,分类任务输出结合/非结合
举个简单的随机森林打分流程:
1. 准备训练集:PDBbind + ChEMBL 结合数据
2. 提取特征:每对原子距离 + 原子类型 + 静电势
3. 训练随机森林回归模型
4. 对候选分子输出预测结合亲和力
一个技巧:我建议不要直接用默认参数。尝试调一下树的深度、叶子节点最小样本数、特征采样比例。有时候把树的深度从默认值砍掉一半,过拟合能降低不少。
3.3.2 真正的局限
| 问题 | 说明 |
|---|---|
| 数据质量 | PDBbind 里的实验数据精度本身不高,Kd 和 Ki 可能相差 10 倍 |
| 过拟合严重 | 模型记住训练集里的模式和噪音,在新靶标上失效 |
| 可解释性差 | 为什么打高分?哪些相互作用起了关键作用?很难回答 |
| 骨架外推弱 | 训练集里没有的新骨架,模型几乎学不到有效信号 |
为什么会这样?其实很简单——ML 模型说白了就是「记住」了训练数据的分布。当你的测试分子和训练集分子长得太像,成绩自然漂亮;一旦跳出那个分布,分数就乱了。
一个深刻的教训:我曾经用 Graph Neural Network 在一个公开数据集上跑出了 R² 0.85 的成绩。当时激动得不行,结果换到我们自己筛选出的新分子上,R² 直接跌到 0.15。嗯,从那以后我对任何「评测集表现」都抱着怀疑态度。
3.4 三种评分函数对比总览
下面这张图把三者的内核、输入、输出、局限一次理清:
3.5 小结与选型建议
到这你该看出来了——没有完美的评分函数。你选哪个,取决于手里的牌:
- 算力充足、体系小众:试试基于物理的方法,至少物理意义明确
- 项目中期、需要快速排序:经验评分是个不错的平衡点
- 数据量大、骨架多样:ML 方法上限高,但一定要做严格的交叉验证
我的一个习惯:我会同时跑两到三种评分函数,看它们的交集和一致趋势。如果基于物理和经验的打分同时给某分子高分,ML 也看好它——那这个分子大概率是真阳性。反过来,一旦有一家给出异常值,我就会多留个心眼。
嗯,评分函数这块水确实深。但搞清楚每种方法的局限性,至少能帮你避开那些一眼假的结果。带着这个认知,咱们后面聊聊怎么用交叉验证来客观衡量这些打分的真实水平。