FlexX 是 BioSolveIT 的对接程序,采用增量构建(incremental construction)算法——与 AutoDock Vina 的随机搜索路线不同,它把配体拆成片段,逐步放入口袋并生长。理解这两条路线的差别,有助于判断什么时候该用哪种对接方法。
增量构建怎么工作
- 1. 拆分:把配体沿可旋转键切成刚性片段;
- 2. 选锚点:挑一个「基础片段」(通常是刚性大、相互作用潜力高的部分,如一个含氢键供受体的环);
- 3. 放置锚点:把基础片段以多种方式放入口袋,按相互作用打分保留最好的若干个;
- 4. 逐步生长:依次加回其余片段,每加一个就枚举其构象并打分,保留最优的若干分支;
- 5. 最终排序:完整分子的姿势按打分排序。
两条路线的对比
| 维度 | 增量构建(FlexX 类) | 随机搜索(Vina 类) |
|---|---|---|
| 搜索方式 | 确定性、逐步生长 | 随机采样 + 局部优化 |
| 可复现性 | 天然确定 | 需固定随机种子 |
| 速度 | 通常较快 | 取决于 exhaustiveness |
| 柔性大分子 | 片段多时分支爆炸 | 相对更稳 |
| 片段生长设计 | 天然契合 | 不直接支持 |
| 失败模式 | 早期锚点放错则全错 | 采样不足则漏掉正确姿势 |
增量构建的固有风险是「早期决策错误无法挽回」:如果基础片段放的位置就不对,后面生长得再好也是错的。这与随机搜索的失败模式(采样不足)性质不同。
它天然适合片段生长设计
基于片段的药物发现(FBDD)中,你已经知道一个小片段的结合位置(通常有共晶结构),需要在它基础上生长出更大的分子。增量构建的逻辑与这个任务完全吻合:固定已知片段作为锚点,只搜索新加部分的构象。这比整个分子重新对接更可靠,也更快。
对接算法的选择逻辑
- 常规虚拟筛选:Vina / smina(见 182《AutoDock Vina》)——免费、成熟、易并行,是默认选择。
- 需要重排序:GNINA 的 CNN 重打分(见 183《GNINA》),改善姿势预测。
- 口袋未知:DiffDock 等盲对接(见 184《DiffDock》)。
- 片段生长 / 约束对接:增量构建方法,或用 smina 的
--autobox+ 位置约束近似实现。 - 受体柔性重要:集合对接(见 302《MolSoft ICM-Pro》)。
- 最终精化:MM/GBSA 或 FEP(见 201《OpenFE》)。
用开源做约束对接
# smina 支持位置约束,可近似实现「固定片段生长」
# 方法一:用参考配体的原子位置做约束
smina -r receptor.pdb -l grown_ligand.sdf \
--autobox_ligand fragment.sdf --autobox_add 6 \
--seed 42 --exhaustiveness 32 -o out.sdf
# 方法二:RDKit 约束嵌入 —— 保持核心骨架的三维位置
from rdkit import Chem
from rdkit.Chem import AllChem
core = Chem.MolFromMolFile("fragment.sdf") # 已知结合姿势的片段
mol = Chem.AddHs(Chem.MolFromSmiles(grown_smiles))
match = mol.GetSubstructMatch(core)
cmap = {match[i]: core.GetConformer().GetAtomPosition(i)
for i in range(core.GetNumAtoms())}
AllChem.ConstrainedEmbed(mol, core, randomseed=0xf00d)
# 生成的构象保持核心片段位置不变,只搜索新增部分
ConstrainedEmbed 是做片段生长和类似物设计时非常实用的一个函数:保证同一系列分子的共同骨架处于相同位置,这样比较它们的对接结果才有意义。
共同的边界
无论哪种算法,对接的根本限制不变:打分函数与实测亲和力的相关性弱。算法的差别主要体现在姿势预测上,而不是排序能力。选算法时应该问「它能不能给出正确的结合姿势」,而不是「它的分数准不准」。先做重对接验证(RMSD ≤ 2 Å)永远是第一步。
提示
商业软件功能与定价变动较快,本文为方向性介绍,采购前请核对官方最新信息。对接算法的差别主要在姿势预测,打分与实测活性的弱相关是所有方法的共同限制。
延伸资源
- 同系列:303《BioSolveIT SeeSAR》、304《BioSolveIT HYDE》、306《BioSolveIT ReCore》;开源对接:182《AutoDock Vina》、183《GNINA》;
- 片段设计见「实战流程」模块;打分函数:095《Docking Score》。