3. 对接软件与引擎选型
在高通量分子对接流程中,引擎选型不是“哪个软件最好”的单一问题,而是“哪个引擎的搜索策略、打分函数、输入输出格式和批处理接口,最匹配当前靶点规模、配体库特征与算力条件”的组合决策。本节围绕四类常用工具展开:AutoDock Vina、Smina、Gnina 与 DiffDock,重点说明它们各自的特点、输入输出约定,以及如何接入批量调度。
一、四类引擎的定位差异
AutoDock Vina 是经典的经验打分函数对接引擎,采用迭代局部搜索与蒙特卡洛采样,速度快、依赖少,适合大规模虚拟筛选的第一轮粗筛。它的打分函数以范德华、氢键、疏水与去溶剂化项为主,输出亲和力(kcal/mol),数值越低表示预测结合越强。Vina 的输入是受体 PDBQT 与配体 PDBQT,输出为 PDBQT 姿态与日志中的打分表。
Smina 是 Vina 的衍生与增强版本,保留了 Vina 的打分框架,同时加入更灵活的局部优化、自定义打分项和更细的采样控制。它适合在 Vina 粗筛后做二次精修,或对特定体系调整权重。Smina 的输入输出与 Vina 高度兼容,命令行参数也大量沿用,因此迁移成本低。
Gnina 在 Vina 基础上引入卷积神经网络(CNN)打分与姿态重打分,能够利用受体-配体三维网格特征提升富集能力。它适合在粗筛后对候选分子做重排序,尤其当靶点口袋具有复杂形状或需要区分相似配体时。Gnina 的输入同样以 PDBQT 为主,输出除 Vina 打分外,还给出 CNN 打分与 CNN 亲和力,便于多指标联合筛选。
DiffDock 属于基于扩散生成模型的对接方法,不依赖传统采样与经验打分,而是从配体构象分布中学习并生成姿态。它适合处理柔性配体、口袋较浅或传统打分区分度不足的场景,但计算成本高、对受体准备与 GPU 资源要求更敏感。DiffDock 的输入通常是受体 PDB 与配体 SMILES 或 SDF,输出为预测姿态及其置信度分数。
二、输入输出格式与准备要点
Vina、Smina、Gnina 共享 PDBQT 输入体系。受体准备通常包括去水、加氢、分配电荷与原子类型,最终生成受体 PDBQT;配体则从 SDF/MOL2 经 Meeko 或 Open Babel 转为 PDBQT。需要特别注意的是,PDBQT 中的原子类型与可旋转键定义会直接影响采样空间,配体准备阶段应检查可旋转键数量是否合理,避免把环内键误设为可旋转。
DiffDock 的输入更接近原始结构:受体用 PDB,配体用 SMILES 或 SDF。它不要求 PDBQT,但要求受体与配体的链、残基编号、质子化状态尽量规范。若受体来自 AlphaFold 预测模型,需先检查口袋区域侧链朝向与质子化状态,否则扩散模型可能生成看似合理但实际不可用的姿态。
输出方面,Vina/Smina/Gnina 都会给出多个姿态及其打分,通常按打分升序排列。Gnina 额外输出 CNN 打分与 CNN 亲和力,建议同时保留 Vina 打分与 CNN 打分两列,便于后续用加权或分层策略筛选。DiffDock 输出每个配体的多个置信度排序姿态,置信度分数可用于过滤低质量预测。
三、批处理接口与调度接入
Vina 的批处理最直接:用 --config 指定受体、口袋中心与尺寸,再用 shell 循环或 GNU Parallel 对配体目录逐个调用。例如:
for lig in ligands/*.pdbqt; do
vina --receptor receptor.pdbqt \
--ligand "$lig" \
--center_x 12.5 --center_y 8.3 --center_z -4.1 \
--size_x 22 --size_y 22 --size_z 22 \
--exhaustiveness 8 --num_modes 9 \
--out "out/$(basename "$lig" .pdbqt)_out.pdbqt" \
--log "log/$(basename "$lig" .pdbqt).log"
done
Smina 的调用方式与 Vina 类似,但可加入 --score_only 对已有姿态重打分,或通过 --custom_scoring 调整权重。Gnina 在 Vina 参数基础上增加 --cnn_scoring 与 --cnn 模型选择,适合在粗筛结果上做二次重打分。DiffDock 通常以 Python 脚本批量推理,输入为配体 SMILES 列表与受体 PDB,输出为每个配体的多个姿态文件与置信度表。
四、选型决策与组合策略
实际项目中,常见组合是“Vina 粗筛 → Gnina 重排序 → 少量 DiffDock 验证”。若配体库规模在十万级,先用 Vina 以较低 exhaustiveness 快速过滤,保留打分前 5%~10% 的候选;再用 Gnina 对候选做 CNN 重打分,按 CNN 亲和力排序;最后对排名最靠前的几十个分子用 DiffDock 生成姿态,观察其置信度与口袋匹配情况。Smina 则适合在中间环节对特定靶点做参数微调或局部优化。
选型时还需考虑算力与时间预算:Vina 单配体通常秒级到分钟级,Gnina 因 CNN 推理会慢数倍,DiffDock 在 GPU 上也可能需要数十秒到数分钟。若集群以 CPU 为主,优先 Vina/Smina;若 GPU 充足,可把 Gnina 与 DiffDock 纳入流水线。最终判断依据不是单一打分,而是打分分布、姿态合理性、关键氢键与疏水接触是否保留,以及多引擎结果的一致性。