第3章 分子对接基础:对接算法、刚性对接与柔性对接、评分函数

这一章咱们聊聊分子对接的底层逻辑。说白了,对接就是回答一个问题:配体怎么结合到受体上,结合得有多牢?我入行那会儿,实验室师兄跟我说“对接就是个三维拼图游戏”,后来我发现,这拼图不光要拼上,还得算清楚拼得紧不紧。好,我们拆开来看。

本章核心脉络: 对接算法解决“怎么找” → 刚性与柔性解决“精度与速度的权衡” → 评分函数解决“怎么评价”。三块拼起来,才是完整的对接预测。
分子对接基础框架图 分子对接基础框架 受体结构 + 配体结构 ① 对接算法(搜索空间) 系统搜索:网格 / 片段生长 随机搜索:GA / SA / MC ② 柔性处理策略 刚性对接(速度优先) 半柔性对接(配体柔性) 全柔性对接(精度优先) ③ 评分函数 基于力场(物理) 基于经验(回归) 基于知识(统计) 结合模式排序 + 打分 候选先导化合物 实际项目中,半柔性对接 + 经验评分 是起步阶段最稳的组合

3.1 对接算法:搜索空间怎么穷尽?

分子对接的第一步,是要在受体结合位点里,找到配体最可能的摆放姿势。这个搜索空间有多大?你想想看,一个可旋转键超过10个的配体,构象组合就能到百万甚至亿级。搜索算法的作用,就是在这么大空间里快速定位到“对的区域”。

我个人习惯把对接算法分成两大类来讲:系统搜索和随机/启发式搜索。它们在“精细度”和“速度”上各有取舍。

系统搜索法

这类方法把搜索空间划分成网格,或者把配体拆成片段逐步生长。代表性的技术有:

  • 网格搜索:将受体结合腔离散成三维网格点,配体在网格点上平移和旋转。优点是穷尽,缺点是维度一高直接爆炸。我记得以前做过一个网格搜索脚本,配体才5个可旋转键,跑了两天没出结果……从此老老实实换随机算法。
  • 片段生长:把配体拆成刚性片段,从锚点片段开始逐步连接。像 Dock 6 里的片段生长法,适合有明确锚定基团的分子。
  • 构象系综枚举:预先枚举配体的低能构象,再分别做刚性匹配。适合柔性小分子,但构象库大了也很吃内存。

随机/启发式搜索

这类方法引入了随机性,在搜索速度和全局寻优能力上更均衡。主流算法包括:

  • 遗传算法(GA):把配体的位置、取向、二面角编码成“染色体”,通过交叉、变异、选择来迭代。AutoDock 4 用的就是拉马克遗传算法,我之前做激酶项目时用它调过一批抑制剂,收敛速度比网格搜索快至少一个数量级。
  • 模拟退火(SA):从高温开始,随机扰动配体状态,逐渐降温到“冻结”。优势是理论上能收敛到全局最优,但参数(退火速率)得反复调。
  • 蒙特卡洛(MC):随机采样构象,按 Metropolis 准则接受或拒绝。适合处理大量局部极小值的情况。
常见对接算法对比
算法类别 代表方法 搜索全局能力 计算成本 适用场景
系统搜索 网格搜索、片段生长 高(理论穷尽) 极高 刚性小分子、已知结合模式验证
遗传算法 GA(AutoDock) 较高 中等 柔性配体、先导化合物优化
模拟退火 SA(AutoDock Vina 早期) 较高(依赖降温策略) 中等 中等柔性分子
蒙特卡洛 MC(RosettaLigand) 中等 中等偏高 蛋白-肽段对接
我的个人经验:如果是先导化合物优化的第一轮筛选,我建议先用 GA 或 MC 做粗搜索,再用网格搜索在排名靠前的构象附近做局部精修。这样速度和精度都能兼顾,别一上来就上最耗时的算法。

3.2 刚性对接与柔性对接:精度和速度的博弈

早期分子对接大多用刚性对接——受体和配体都固定,只做平移和旋转。这有点像两个乐高积木硬拼,拼不上就是拼不上。后来大家发现,配体和受体在结合时都会发生诱导契合,尤其是侧链的重排。所以柔性处理成了对接精度的关键瓶颈。

我做过一个比较测试:同一对激酶-抑制剂复合物,用刚性对接打分很高,但跟晶体结构一比对——RMSD 跑了 2.8 Å,明显对不上。换成半柔性对接后,RMSD 降到 1.1 Å。嗯,这就是柔性的价值。

三种模式的对比

  • 刚性对接:受体和配体都视为刚体。速度最快,但只能处理“锁钥模型”的体系。适合大通量虚拟筛选的预过滤。
  • 半柔性对接:配体柔性(旋转键采样),受体刚性。这是目前最常用的模式,兼顾了效率和精度。AutoDock Vina 和 Glide SP 用的都是这个策略。
  • 全柔性对接:配体和受体侧链都柔性。计算成本非常高,通常只用于少数候选化合物的精细优化。RosettaLigand 和 GOLD 的柔性模式属于这一类。
刚性 vs 半柔性 vs 全柔性对接
对接模式 受体柔性 配体柔性 典型速度 适用阶段
刚性对接 无 无 极快(秒级/分子) 百万级虚拟筛选初筛
半柔性对接 无 可旋转键采样 中等(分钟级/分子) 先导化合物优化、SAR分析
全柔性对接 侧链柔性 完全柔性 慢(小时级/分子) 候选化合物精细验证
避坑提醒:我曾经接了一个项目,直接把全柔性对接用在500个分子的筛选中,结果跑了整整两周还没跑完……后来改成半柔性 + 侧链预构象库,3天就出结果了。柔性一定按需选择,别盲目追求“全柔性”。

3.3 评分函数:怎么判断对接好不好?

算法找到了摆放姿势,但好不好还得靠评分函数来量化。评分函数本质上是结合自由能的近似估算模型。我常说,评分函数是对接的“眼睛”——它告诉你哪个构象更像真的。

目前主流的评分函数分三大类,它们的哲学完全不同:

基于力场的评分函数

直接从分子力场(如 Amber、CHARMM)中提取能量项:范德华 + 静电 + 键伸缩/弯曲/扭转(有时也包括去溶剂化)。优点是物理意义明确,缺点是忽略熵效应和极化效应,算出来的结合能绝对值通常偏高。

# 一个简化的力场评分项示例(伪代码)
score = w_vdw * sum(van_der_Waals) +
        w_elec * sum(electrostatic) +
        w_desolv * sum(desolvation_penalty)

我在做 GPCR 项目时,力场评分对疏水口袋的分子打分偏高,后来加了去溶剂化校正项才把假阳性压下去。

基于经验的评分函数

通过对已知复合物的结合数据做多元线性回归,拟合出各能量项的权重。像 ChemScore、GlideScore 都是这个路子。优势是计算快,劣势是对训练集外的骨架预测不稳定。

# 经验评分函数的通用形式
Score = C0 +
        C1 * (疏水接触面积) +
        C2 * (氢键数) +
        C3 * (旋转键熵损失) +
        C4 * (金属配位贡献)

基于知识的评分函数

从已知的蛋白质-配体复合物结构中提取原子对间的距离分布,通过 Boltzmann 转换得到“势能”。代表有 DrugScore、ITScore。说白了,它学的不是物理,而是统计偏好。这种评分对同源体系的预测往往更稳定。

三类评分函数对比
类型 理论基础 计算速度 泛化能力 典型代表
基于力场 物理能量项 较慢 中等 AmberScore、DOCK 能量评分
基于经验 回归拟合 快 依赖训练集 GlideScore、ChemScore
基于知识 统计分布 快 对同源体系较好 DrugScore、ITScore
关键认知:没有一种评分函数在所有体系上都表现最佳。我个人的做法是:先用一种经验评分做初筛,对排名靠前的分子再用两种不同原理的评分做交叉验证。如果力场评分和经验评分都认为某个分子是好的,那它的可信度就高很多。

3.4 实战中的权衡与组合策略

好了,三大块都讲完了。但实际项目里,它们不是孤立使用的。我习惯把对接流程设计成一个分级漏斗:

  1. 第一级:刚性对接 + 经验评分 —— 用最快的方式过滤掉明显不结合的分子,通常可以筛掉 60-70%。
  2. 第二级:半柔性对接 + 交叉评分 —— 对通过初筛的分子做精细化,同时用两种以上评分函数取交集。
  3. 第三级:柔性局部精修 + MM/GBSA 重打分 —— 对最后的候选分子,用全柔性对接或 MD 采样后做更精确的结合自由能计算。

这个流程帮我避过不少坑。记得有个激酶项目,第一级刚性对接筛出了 120 个分子,第二级半柔性交叉评分后剩下 18 个,最后 MM/GBSA 重打分只保留了 5 个——这 5 个在后续活性测试里有 3 个达到了纳摩尔级。你看,每加一层精度,噪声就少一截。

小建议:如果你刚接触分子对接,先从半柔性对接 + 经验评分入手,把流程跑通。等你对体系的“打分规律”有了感觉,再逐步引入更复杂的柔性策略和评分组合。别一口气全上,会崩的。