分子对接基本原理
说实话,我刚入行那会儿,总觉得分子对接就是拿个小分子往蛋白口袋里一塞,能塞进去就行。后来被项目毒打了几轮,才明白这里面门道多着呢。这一章咱就把对接的底层逻辑讲透——锁钥模型、诱导契合,还有那个让人又爱又恨的能量计算。
锁钥模型——经典刚体对接理论
锁钥模型是1894年Emil Fischer提出来的,距今一百多年了。说白了,就是认为受体和配体像锁和钥匙一样,形状完美匹配才能结合。这个思想在早期分子对接里占据了绝对统治地位。
你想想看,最早的对接算法基本都是刚体对接。蛋白口袋的形状固定,配体的构象也固定,算算俩形状能不能卡进去就完事。我在早期的虚拟筛选项目里,经常用这种刚体对接做初筛,速度确实快,一个化合物几秒钟就能跑完。
- 受体结合位点形状固定,不存在构象变化
- 配体在对接前后构象不变
- 结合过程是单步的,没有中间态
但做久了你会发现,这个模型有个致命缺陷——真实的蛋白不可能一动不动。我记得有个项目,用一个已知的激酶晶体结构去对接一批化合物,结果对接得分最高的化合物,实验做出来根本没有活性。后来查文献才发现,那个蛋白的DFG-motif在结合不同配体时,会翻转180度。这就不是锁钥模型能解释的了。
我的经验:锁钥模型只适合处理那些结合口袋刚性很强、没有明显构象变化的靶点,比如一些跨膜转运蛋白的口袋。做虚拟筛选之前,建议先查一下这个靶点有没有已知的构象变化,再决定用不用刚体对接。
诱导契合理论——柔性对接的起源
1958年,Daniel Koshland提出了诱导契合理论。这个理论说:蛋白和配体结合的时候,两者都会发生构象变化,互相适应。实际上结合口袋的氨基酸侧链、loop区域,甚至整个结构域都可能重新排列。
| 特性 | 锁钥模型 | 诱导契合理论 |
|---|---|---|
| 受体构象 | 固定不变 | 结合后发生变化 |
| 配体构象 | 刚体 | 可柔性调整 |
| 结合过程 | 一步到位 | 多步,含构象调整 |
| 能量特征 | 以形状互补为主 | 构象变化伴随能量代价 |
| 算法复杂度 | 低,速度快 | 高,计算量大 |
为什么要提这个?因为这直接决定了对接算法的设计思想。我后来做的一个项目,是关于一个GPCR受体的配体筛选。GPCR的胞外loop区极其灵活,用刚体对接算出来的结合模式,和最终解析的共晶结构完全对不上。后来换成诱导契合对接,加了侧链柔性优化,才拿到了合理的结果。
注意:诱导契合虽然更贴近真实,但不是所有场合都适用。曾经我在一个项目里,无脑打开了所有柔性选项,结果一个化合物跑了快两个小时,最后还因为搜索空间太大,找到了一个不合理的假阳性结合模式。该刚则刚,该柔则柔,这个度得把握好。
对接中的能量计算
能量计算是对接的核心,也是参数调试的重灾区。我踩过的坑有一箩筐,这里把关键项拆开讲清楚。
对接的能量计算通常包含以下几个部分:
- 范德华相互作用:用Lennard-Jones势能描述,收尾项很敏感。参数稍微偏移,计算结果就会差很多
- 静电相互作用:库仑力计算,有些打分函数不考虑溶剂效应,会导致极性强的小分子被过度偏好
- 去溶剂化效应:配体从水溶液进入蛋白口袋,要脱掉水合壳,这个能量代价很大
- 熵效应:配体的构象自由度被限制,会损失平动/转动/振动熵
举个例子,我在调Autodock Vina的参数时,发现它的打分函数就强调了范德华和静电项,去溶剂化项的权重相对较低。所以对极性很强的配体,Vina往往会给出偏高的结合能。遇到这种情况,我通常会额外用一个基于GB/SA模型的打分函数做重打分。
常用打分函数能量项对比
| 打分函数 | 范德华 | 静电 | 去溶剂化 | 熵项 | 氢键 |
|---|---|---|---|---|---|
| AutoDock Vina | ✔ | ✔ | 内置在静电中 | 隐含 | 通过范德华近似 |
| Glide SP/XP | ✔ | ✔ | ✔ 显式计算 | ✔ 含配体熵 | ✔ 角度依赖 |
| GOLD (GoldScore) | ✔ | ✔ | ✔ 疏水项 | 隐含 | ✔ 键长依赖 |
| DrugScore (知识基础) | ✔ | ✔ | ✔ 原子对 | 隐含 | ✔ 距离依赖 |
这里有个概念容易混淆:结合自由能是 ΔG = ΔH - TΔS,但大多数对接打分函数只近似计算焓变项(ΔH),熵项(ΔS)要么忽略,要么用一个简单的配体旋转键个数来估算。这就会导致一个问题——焓补偿效应被忽略。
我做过一个项目,先拿了一个已知的弱活性化合物做基准对接,跑出来的打分竟然比活性化合物还要低。仔细排查后发现,弱活性化合物有更多的氢键供体基团,打分函数给的静电项分数很高,但去溶剂化代价和熵损失没算进去。这就是典型的打分函数误导案例。
避坑指南:如果配体含有大量极性基团或柔性侧链,一定要手动检查去溶剂化项和熵项的贡献。可以先跑一个已知的活性-非活性对照集,看看打分函数能不能正确排序,再决定要不要调整权重。
实际对接时,能量计算的参数调整可以通过修改配置文件来实现。以AutoDock Vina为例,它的默认参数在大多数场景下表现不错,但如果你处理的体系比较特殊,可以尝试调整能量函数的权重。
# Vina 配置文件示例
receptor = receptor.pdbqt
ligand = ligand.pdbqt
center_x = 15.0
center_y = 20.0
center_z = -5.0
size_x = 20
size_y = 20
size_z = 20
# 对接精度(exhaustiveness)
exhaustiveness = 8
# 能量范围(kcal/mol)
energy_range = 3
你可以看到,这里主要控制的是搜索算法的参数,而不是直接调整能量函数。但如果你用更灵活的对接框架,比如rDock或者Open Babel结合自定义打分函数,就可以直接控制每个能量项的系数了。
亲自踩过的坑:曾经我试图手动调整vdW的LJ参数,想让对接结果更贴合实验值。结果调了两周,实验数据拟合倒是勉强能看了,但一换个测试集,效果马上崩掉。能量项之间的耦合效应非常复杂,不是简单调整一个系数就能解决的。建议初学者不要轻易动能量函数,先用默认参数跑通整个流程再谈优化。
最后,我把这三个核心概念串起来,画了一张图帮大家理解它们之间的关系。
看到这张图,你应该能理解三个概念不是孤立的。锁钥模型是最原始的假设,诱导契合作了修正,但计算成本上去了。能量计算则是贯穿在两种模型中的核心工具,只是不同的模型对能量项的侧重点不一样。
我个人经验是:做虚拟筛选的时候,先用锁钥模型的快速算法跑一轮,把排名前20%的化合物拿出来;然后用诱导契合的柔性对接做第二轮;最后再用高精度的MM/GBSA或者FEP做能量重打分。这个三层筛选策略,在几个项目中表现都不错,既能控制计算成本,又能拿到合理的结合模式。
- 锁钥模型:形状互补,刚体对接,速度快但忽略构象变化
- 诱导契合理论:构象互相适应,更贴近真实但计算昂贵
- 能量计算四项核心:范德华(LJ势能)、静电(库仑)、去溶剂化、熵效应
- 打分函数各有侧重,需要根据靶点特性选择或调整
- 推荐三层筛选策略:刚体初筛 → 柔性重对接 → 高精度重打分