第3章 分子对接基础:对接算法、刚性对接与柔性对接、评分函数
这一章咱们聊聊分子对接的底层逻辑。说白了,对接就是回答一个问题:配体怎么结合到受体上,结合得有多牢?我入行那会儿,实验室师兄跟我说“对接就是个三维拼图游戏”,后来我发现,这拼图不光要拼上,还得算清楚拼得紧不紧。好,我们拆开来看。
3.1 对接算法:搜索空间怎么穷尽?
分子对接的第一步,是要在受体结合位点里,找到配体最可能的摆放姿势。这个搜索空间有多大?你想想看,一个可旋转键超过10个的配体,构象组合就能到百万甚至亿级。搜索算法的作用,就是在这么大空间里快速定位到“对的区域”。
我个人习惯把对接算法分成两大类来讲:系统搜索和随机/启发式搜索。它们在“精细度”和“速度”上各有取舍。
系统搜索法
这类方法把搜索空间划分成网格,或者把配体拆成片段逐步生长。代表性的技术有:
- 网格搜索:将受体结合腔离散成三维网格点,配体在网格点上平移和旋转。优点是穷尽,缺点是维度一高直接爆炸。我记得以前做过一个网格搜索脚本,配体才5个可旋转键,跑了两天没出结果……从此老老实实换随机算法。
- 片段生长:把配体拆成刚性片段,从锚点片段开始逐步连接。像 Dock 6 里的片段生长法,适合有明确锚定基团的分子。
- 构象系综枚举:预先枚举配体的低能构象,再分别做刚性匹配。适合柔性小分子,但构象库大了也很吃内存。
随机/启发式搜索
这类方法引入了随机性,在搜索速度和全局寻优能力上更均衡。主流算法包括:
- 遗传算法(GA):把配体的位置、取向、二面角编码成“染色体”,通过交叉、变异、选择来迭代。AutoDock 4 用的就是拉马克遗传算法,我之前做激酶项目时用它调过一批抑制剂,收敛速度比网格搜索快至少一个数量级。
- 模拟退火(SA):从高温开始,随机扰动配体状态,逐渐降温到“冻结”。优势是理论上能收敛到全局最优,但参数(退火速率)得反复调。
- 蒙特卡洛(MC):随机采样构象,按 Metropolis 准则接受或拒绝。适合处理大量局部极小值的情况。
| 算法类别 | 代表方法 | 搜索全局能力 | 计算成本 | 适用场景 |
|---|---|---|---|---|
| 系统搜索 | 网格搜索、片段生长 | 高(理论穷尽) | 极高 | 刚性小分子、已知结合模式验证 |
| 遗传算法 | GA(AutoDock) | 较高 | 中等 | 柔性配体、先导化合物优化 |
| 模拟退火 | SA(AutoDock Vina 早期) | 较高(依赖降温策略) | 中等 | 中等柔性分子 |
| 蒙特卡洛 | MC(RosettaLigand) | 中等 | 中等偏高 | 蛋白-肽段对接 |
3.2 刚性对接与柔性对接:精度和速度的博弈
早期分子对接大多用刚性对接——受体和配体都固定,只做平移和旋转。这有点像两个乐高积木硬拼,拼不上就是拼不上。后来大家发现,配体和受体在结合时都会发生诱导契合,尤其是侧链的重排。所以柔性处理成了对接精度的关键瓶颈。
我做过一个比较测试:同一对激酶-抑制剂复合物,用刚性对接打分很高,但跟晶体结构一比对——RMSD 跑了 2.8 Å,明显对不上。换成半柔性对接后,RMSD 降到 1.1 Å。嗯,这就是柔性的价值。
三种模式的对比
- 刚性对接:受体和配体都视为刚体。速度最快,但只能处理“锁钥模型”的体系。适合大通量虚拟筛选的预过滤。
- 半柔性对接:配体柔性(旋转键采样),受体刚性。这是目前最常用的模式,兼顾了效率和精度。AutoDock Vina 和 Glide SP 用的都是这个策略。
- 全柔性对接:配体和受体侧链都柔性。计算成本非常高,通常只用于少数候选化合物的精细优化。RosettaLigand 和 GOLD 的柔性模式属于这一类。
| 对接模式 | 受体柔性 | 配体柔性 | 典型速度 | 适用阶段 |
|---|---|---|---|---|
| 刚性对接 | 无 | 无 | 极快(秒级/分子) | 百万级虚拟筛选初筛 |
| 半柔性对接 | 无 | 可旋转键采样 | 中等(分钟级/分子) | 先导化合物优化、SAR分析 |
| 全柔性对接 | 侧链柔性 | 完全柔性 | 慢(小时级/分子) | 候选化合物精细验证 |
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 实战中的权衡与组合策略
好了,三大块都讲完了。但实际项目里,它们不是孤立使用的。我习惯把对接流程设计成一个分级漏斗:
- 第一级:刚性对接 + 经验评分 —— 用最快的方式过滤掉明显不结合的分子,通常可以筛掉 60-70%。
- 第二级:半柔性对接 + 交叉评分 —— 对通过初筛的分子做精细化,同时用两种以上评分函数取交集。
- 第三级:柔性局部精修 + MM/GBSA 重打分 —— 对最后的候选分子,用全柔性对接或 MD 采样后做更精确的结合自由能计算。
这个流程帮我避过不少坑。记得有个激酶项目,第一级刚性对接筛出了 120 个分子,第二级半柔性交叉评分后剩下 18 个,最后 MM/GBSA 重打分只保留了 5 个——这 5 个在后续活性测试里有 3 个达到了纳摩尔级。你看,每加一层精度,噪声就少一截。