Rosetta评分函数在结合亲和力预测中的应用 - 第3节
1. 范德华力(Lennard-Jones 势)
范德华力,说白了就是原子间的“近身肉搏”。距离远了,互相吸引;靠太近了,电子云重叠,排斥力爆炸式上升。 Rosetta 里用 Lennard-Jones 12-6 势能模型来描述:fa_atr = Σ ε_ij [ (r0_ij / r_ij)^12 - 2 * (r0_ij / r_ij)^6 ]
fa_rep = Σ ε_ij * (r0_ij / r_ij)^12
- **fa_atr(吸引项)**:-1/r^6,远距离的色散力。我在做蛋白质-蛋白质对接时,经常发现这个项贡献很大。两团疏水表面一靠近,这个负值就会往下掉,说明结合得好。
- **fa_rep(排斥项)**:+1/r^12,模拟原子间的“保罗不相容原理”。**一旦出现原子重叠,这个值会瞬间飙升,告诉你这个构型不可能。**
**重要:** 我见过不少新手一看到能量值正得离谱,就以为评分函数坏了。其实这时候看看 fa_rep 是不是特别大。大概率是原子撞在一起了。解决办法通常是做一步“能量最小化”(minimization),或者检查输入结构是不是有 clashing。
你怎么直观感受它?跑个简单例子就知道。这行命令可以输出两个原子在不同距离下的 Lennard-Jones 能量:
$Rosetta/main/source/bin/score_jd2.linuxgccrelease -s 1ubq.pdb -score:weights ref2015 > score.sc
grep -E "^ATOM " 1ubq.pdb | head -10
但我不建议你直接拿命令行当计算器。Rosetta 内部把 LJ 参数写死在 `LennardJonesPotential` 里,每个原子类型(比如 `C`、`CA`、`N`、`O`)都有对应的 `r0` 和 `ε`。这些参数是在 `params` 文件中定义的。
2. 静电相互作用
静电这玩意儿,蛋白质里到处都是。带正电的侧链(Lys、Arg)和带负电的(Glu、Asp)之间会产生库仑力。 Rosetta 用了 **Coulomb 势**,但做了一点调整——加了一个距离依赖的介电常数 `ε(r)`。fa_elec = Σ (q_i * q_j) / (ε_0 * ε_r * r_ij)
在 `ref2015` 里,`ε_r` 不是固定的 80 或 2,而是一个 **sigmoidal 函数**:
- **短距离**(< 5.5 Å):介电常数低(~4),模拟局部环境。
- **长距离**(> 5.5 Å):介电常数接近 80,模拟水溶液屏蔽。
为什么要这样搞?我曾经犯过傻,直接用固定介电常数跑小分子对接。结果发现,带同号的基团明明应该排斥,却因为忽略了溶剂的屏蔽效应,产生了虚假吸引。后来切到 `fa_elec` 默认的 sigmoidal 介电函数,结果才正常。
**电荷分配也很关键。** Rosetta 用的不是经典力场的点电荷,而是 **partial charges**,从 `mm_std_params` 文件里读。不同的小分子,你得保证它的参数文件(`.params`)里的 `PDB_ROTAMERS` 和 `CHI` 定义好了,否则电荷算出来是错的。
3. 氢键
氢键,这门课的核心之一。蛋白质的二级结构、配体识别、酶催化,都离不开它。 Rosetta 对氢键的处理非常精细。它有独立的 `hbond` 项,而不是把它藏到静电或 LJ 里。hbond_sr_bb = 主链-主链侧链,短程
hbond_lr_bb = 主链-主链侧链,长程(二级结构之间的)
hbond_sc = 侧链-侧链
hbond_bb_sc = 主链-侧链
**打分基于几何参数**:氢键供体(D-H)、受体(A)以及它们形成的角度和距离。
Rosetta 氢键的能量计算,本质上是查表。它预先计算好了不同几何配置下的氢键强度,存在一个“氢键势能图”里。你在输出文件里看到的 `hbond_sc`,就是从这个图里插值查出来的,而不是实时地用库仑公式算。
**我踩过最大的坑**: 用 `ref2015` 打分,但忘了检查配体上的氢键供体/受体定义是否正确。结果呢?明明能做氢键的配体,评分函数说它几乎没有氢键贡献。后来发现是 `.params` 文件里 `TYPE` 那一栏写成了 `C`(碳),而不是 `OC`(羰基氧)。改过来之后,亲和力预测的相关系数直接提升了 0.2。
4. 溶剂化效应
分子从疏水环境跑进水里的过程,能量变化很大。Rosetta 里用 **Lazaridis-Karplus (LK) 模型** 来处理,也叫 `fa_sol`。 LK 模型的核心思想:**每个原子周围的溶剂,其有序程度和密度会受邻近原子的影响。** 溶剂化自由能不是简单的对原子表面积求和,而是考虑了一个“高斯重叠”模型。fa_sol = Σ (ΔG_ref_i - Σ_j ΔG_free_i * f(r_ij, λ))
翻译成人话:每个原子 i 有一个“参考溶剂化自由能”(`ΔG_ref`),如果它被其他原子(j)包围,那就从参考值里扣除一部分。扣多少,取决于原子 j 的极性、距离和衰减参数 `λ`。
- **疏水原子**(C):`ΔG_ref` 是正的(溶进来不利),但被其他疏水原子包住时,`f(r)` 接近 1,`ΔG_free` 也是正的,一减,总能量就小了——**疏水效应**。
- **极性原子**(O、N):`ΔG_ref` 是负的(溶进来有利),但如果它周围是疏水环境,`f(r)` 不发挥作用,极性基团没被“保护”好,能量就会升高。
5. 构象熵项
熵,是个让人头疼的东西。打分函数总想破坏它,但结合亲和力是自由能变化(ΔG = ΔH - TΔS),你不可能忽略熵。 Rosetta 的 `ref2015` 里没有单独显式的熵项,而是通过以下方式隐式包含: - **主链熵**: 使用“unfolded state”的参考能量。Rosetta 参考的是**未折叠的、完全溶剂暴露的构象**。内部分子的主链自由度被冻结了,这部分熵损失已经在打分函数里通过“参考态”扣除了。 - **侧链熵**: 主要体现在 `fa_dun` 项(侧链二面角势能)里。`fa_dun` 基于 Ramachandran 图和侧链扭角库,反映的是侧链的可达构象数。如果一个侧链在结合后只有一种构象,`fa_dun` 会升高(因为真实体系里,侧链被卡住,熵损失大);如果侧链自由度大,`fa_dun` 就比较低。
**实用技巧:** 当你做点突变扫描时(比如计算结合能变化 ΔΔG),经常发现突变后的 `fa_dun` 项变化很大。这个变化往往反映了侧链熵的改变。如果突变后 `fa_dun` 变大,说明侧链构象自由度降低,结合熵不利。反过来,如果 `fa_dun` 变小,熵效应可能对结合有利。
6. 能量项如何组装?
下面这张图,你应该刻在脑子里。它展示了这些物理项如何组合成总分。7. 各能量项关键参数对比
这张表,我建议你直接存起来。面试或者写文章时经常用到。| 能量项 | 作用范围 | 权重(ref2015) | 对结合有利方向 |
|---|---|---|---|
| fa_atr | 所有原子对 | -0.231 | 负值越大(即越负) |
| fa_rep | 所有原子对 | +0.559 | 正值越小(即接近 0) |
| fa_elec | 极性原子对 | +0.210 | 负值(静电互补) |
| hbond_* | 供体-受体对 | +0.586 ~ +1.170 | 负值(形成强氢键) |
| fa_sol | 所有原子 | +0.530 | 负值(疏水效应) |
| fa_dun | 侧链骨架 | +0.560 | 越低越好(熵有利) |
8 避坑指南与个人经验
1. **别只盯着总分看**。我最开始时被坑过,总能量很低,但分解后一看,`fa_rep` 和 `fa_sol` 都很高,不是好结合的迹象。要学会看 `per_residue` 能量。 2. **氢键项权重其实很大**。权重值只是乘数,实际氢键的原始能量(从势能面查的)可能很大。比如一个完美的 backbone N-H···O=C 氢键,`hbond_sr_bb` 能给到 -3~-4 REU(Rosetta Energy Unit)。这对最终结合的贡献非常可观。 3. **熵项是隐性高手**。做刚性对接时,熵项基本不变。但做柔性对接或自由度很大的侧链突变时,`fa_dun` 会波动。如果你预测的结合能不太对,可以先看 `fa_dun` 是否异常。 4. **调试时用 `-out:file:score_only`**。这样只看总分,不输出结构文件,跑得快。但我想看分解项时,会用 `-score:weights ref2015 -score:output_terms`,把每个 term 都打印出来。
**一个小实验:** 用 Rosetta 的 `score_jd2` 对同一个蛋白质-配体复合物,分别跑两次,一次用 `ref2015`,一次用 `beta_nov16`。你会发现,在某些体系里(比如含有较多芳香环的配体),`fa_atr` 变化不大,但 `fa_elec` 和 `hbond` 差异明显。这是 `beta_nov16` 调整了静电和氢键参数所致。