2. 搜索范围参数概述:center_x/y/z 和 size_x/y/z 的含义
好,咱们正式开始聊参数。上一章我提过,AutoDock Vina 本质上是个空间搜索问题。你的配体分子,在受体的口袋里怎么放、怎么转,才能让能量最低?
搜索范围就是告诉 Vina:你在这个框里找就行,别跑远了。
这个框由两组参数定义——center 和 size。说白了,就是一个三维空间里的 立方体盒子。
2.1 center_x/y/z:盒子的中心点
三个维度:x、y、z。单位是埃(Å)。
这个值告诉你盒子的几何中心在哪儿。我刚开始做对接的时候,习惯把中心直接对准受体口袋的质心。后来发现,有些口袋形状不规则,质心不一定就是最优搜索起点。
怎么定?看你的受体结构文件(通常是 .pdbqt)。用 PyMOL 或者 Chimera 量一下口袋中心坐标,填进去就行。
一个简单的例子:
center_x = 15.0
center_y = 22.5
center_z = -3.8
这就是盒子中心在 (15.0, 22.5, -3.8) 这个点。
2.2 size_x/y/z:盒子的边长
同样是三个维度,单位也是埃(Å)。
它定义了盒子在 x、y、z 三个方向的长度。注意,是对称地往两边延伸。比如 size_x = 20,那盒子在 x 轴方向上,从中心往左 10 Å,往右 10 Å。
嗯,这里有个常见坑——盒子太小。
常见错误:盒子小于配体尺寸
我曾经见过有人把 size 设成 10×10×10,但配体本身就有 12×8×6 那么大。结果呢?配体有一部分在盒子外,Vina 压根儿不会去搜那些位置。最后对接结果全是错的,还找了好久原因。
我曾经见过有人把 size 设成 10×10×10,但配体本身就有 12×8×6 那么大。结果呢?配体有一部分在盒子外,Vina 压根儿不会去搜那些位置。最后对接结果全是错的,还找了好久原因。
所以,size 必须大于配体最长轴。一般我建议至少大 2-3 Å,给旋转留点余量。
2.3 为什么是两个三元组?
你想想看,只用 center,盒子就定不了大小;只用 size,盒子就不知道往哪儿放。两者缺一不可。
它们的关系可以用一张图说清楚:
核心公式:
盒子左边界 = center_x - size_x / 2
盒子右边界 = center_x + size_x / 2
// y 和 z 同理
2.4 参数速查表
| 参数 | 含义 | 单位 | 典型范围 | 常见错误 |
|---|---|---|---|---|
| center_x | 盒子中心的 x 坐标 | Å | 依赖受体结构 | 忽略口袋深度 |
| center_y | 盒子中心的 y 坐标 | Å | 依赖受体结构 | 坐标取自不同构象 |
| center_z | 盒子中心的 z 坐标 | Å | 依赖受体结构 | 忘记对称性 |
| size_x | 盒子在 x 方向总长度 | Å | 15-30(一般口袋) | 小于配体尺寸 |
| size_y | 盒子在 y 方向总长度 | Å | 15-30(一般口袋) | 超出受体边界 |
| size_z | 盒子在 z 方向总长度 | Å | 15-30(一般口袋) | 三个方向不均衡 |
一个小技巧:
我第一次做新手项目时,把 size_x/y/z 全设成 22.5。后来发现口袋只在 y 方向特别长,其他方向很窄。改成 size_x=18, size_y=26, size_z=16 之后,对接速度快了 30%,结果也更准了。说白了,别偷懒用正方形盒子,尽量贴合口袋形状。
我第一次做新手项目时,把 size_x/y/z 全设成 22.5。后来发现口袋只在 y 方向特别长,其他方向很窄。改成 size_x=18, size_y=26, size_z=16 之后,对接速度快了 30%,结果也更准了。说白了,别偷懒用正方形盒子,尽量贴合口袋形状。
2.5 一个完整的配置示例
比如你有个受体,口袋中心大约在 (12.5, -4.3, 8.0),配体最长轴约 18 Å。配置文件这么写:
receptor = receptor.pdbqt
ligand = ligand.pdbqt
center_x = 12.5
center_y = -4.3
center_z = 8.0
size_x = 22
size_y = 22
size_z = 22
exhaustiveness = 8
num_modes = 9
energy_range = 3.0
size 设成 22,比配体的 18 大了 4 Å。两侧各多 2 Å,旋转空间够了。
注意看,exhaustiveness 和 num_modes 我也顺手写上了,这些后面章节会细聊。今天先记住:找对 center,给足 size。
避坑清单:
- ❌ size 设成整数倍后忘记检查是否覆盖配体全运动范围
- ❌ center 直接从其它软件复制,没注意原点偏移
- ❌ 三个 size 值差异过大导致搜索浪费(比如 x=40, y=10, z=10)
- ✅ 我习惯先跑一次快速预测(exhaustiveness=1),看配体落在盒子哪个位置,再微调 center