GNINA 由匹兹堡大学 Koes 组开发,是在 AutoDock Vina / smina 代码谱系上加入卷积神经网络打分的开源对接程序。它把配体-受体复合物体素化成 3D 网格,用 CNN 直接判断姿势好坏,再与经验打分结合。GPU 加速让这一步在实用速度内完成。
安装
# 最省事:官方预编译二进制
wget https://github.com/gnina/gnina/releases/latest/download/gnina
chmod +x gnina && ./gnina --version
# 或用 Docker(含 CUDA 环境)
docker pull gnina/gnina
自行编译需要 CUDA、libmolgrid、OpenBabel 等依赖,链条较长。除非要改源码,直接用二进制或容器。CPU 也能跑,但 CNN 打分会慢很多。
基本用法
# 用共晶配体自动定盒子,最省心
gnina -r receptor.pdb -l ligands.sdf \
--autobox_ligand ref_ligand.sdf --autobox_add 4 \
--exhaustiveness 16 --num_modes 9 --seed 42 \
--cnn_scoring rescore -o out.sdf --log out.log
GNINA 相比 Vina 有两个直接的工程便利:直接读 PDB / SDF,不必转 PDBQT(省掉 Meeko 那一步),以及 --autobox_ligand 自动按参考配体定盒子,消除了手工填坐标这个高频错误源。
四种 CNN 打分模式
| 模式 | 行为 | 速度 | 建议 |
|---|---|---|---|
none |
只用经验打分(等价 smina) | 最快 | 超大库初筛 |
rescore |
经验打分搜索,CNN 只对最终姿势重打分 | 快 | 默认推荐,性价比最高 |
refinement |
CNN 参与姿势精修 | 慢约 10 倍 | 少量重点分子 |
all |
全程 CNN 参与搜索 | 最慢 | 研究用途 |
怎么读输出的三个分数
- minimizedAffinity:Vina 类经验打分,kcal/mol,越负越好。
- CNNscore:CNN 判断该姿势「像不像真实结合姿势」的概率,0~1,越大越好。它评价的是姿势可信度,不是亲和力。
- CNNaffinity:CNN 预测的亲和力(pK 尺度),越大越好。
三者含义不同,别混用。常见做法是先按 CNNscore 过滤掉姿势不可信的结果,再在剩下的里按 CNNaffinity 或经验打分排序。
CNN 重打分到底值不值
- 姿势预测确有提升:在 PDBbind 类基准上,GNINA 的 CNN 重打分把 top-1 姿势 RMSD ≤ 2 Å 的成功率较纯 Vina 提高了可观的幅度,这是它最扎实的收益。
- 亲和力排序提升有限:虚拟筛选富集度的改善因靶点而异,有些体系明显、有些几乎没有。不要预期它能解决打分函数的根本问题。
- 存在训练集偏置:CNN 在 PDBbind 等结构数据上训练,对与训练分布相近的体系表现更好,对新颖化学型或罕见靶点家族要谨慎。
- 务实用法:Vina/smina 快速初筛 → GNINA
rescore重排 top 5~10% → 对最终候选上 MM/GBSA 或 FEP。逐级精化,成本和精度都可控。
上手提示
- 直接读 PDB/SDF +
--autobox_ligand,比 Vina 少踩两个坑; - 默认用
--cnn_scoring rescore,性价比最好; - 分清
CNNscore(姿势可信度)与CNNaffinity(亲和力预测),别混用; - 它主要改善姿势预测,对富集度的提升因靶点而异,需自行验证。
延伸资源
- 基础对接:182《AutoDock Vina》;论文背景:097《AutoDock Vina 论文精读》、099《GNINA 论文精读》;
- 深度学习对接对照:184《DiffDock》、188《Uni-Mol Docking V2》;打分函数局限:095《Docking Score》;
- 教程见 016《GNINA 教程》。