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 必须大于配体最长轴。一般我建议至少大 2-3 Å,给旋转留点余量。

2.3 为什么是两个三元组?

你想想看,只用 center,盒子就定不了大小;只用 size,盒子就不知道往哪儿放。两者缺一不可。

它们的关系可以用一张图说清楚:

搜索盒子结构:center 与 size 的关系 中心 size_x / 2 size_x / 2 size_y / 2 size_y / 2 size_z / 2 盒子边界 = center ± size/2 (每个维度独立计算)
核心公式:
盒子左边界 = 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%,结果也更准了。说白了,别偷懒用正方形盒子,尽量贴合口袋形状。

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