099

GNINA 论文精读:CNN 打分如何改变传统 Docking

GNINA 用 CNN 重打分改变了传统对接的评分方式。这篇讲清论文的方法、评估结果与真实的能力边界。

GNINA(Koes 组)把三维卷积神经网络引入对接打分。它的核心思想是:不用人工设计的能量项,而是让 CNN 从复合物的三维结构直接学习「这个姿势像不像真的」

方法:体素化 + 3D CNN

# 表示方法
#
# 1) 把结合位点划分成三维格点(如 24×24×24 Å,0.5 Å 分辨率)
#
# 2) 每个格点记录附近原子的「密度」
#    不同原子类型用不同的通道:
#      蛋白侧:C、N、O、S、芳香碳、氢键供体、受体...
#      配体侧:同样的分类
#    → 得到一个多通道的三维张量(类似彩色 3D 图像)
#
# 3) 用 3D 卷积网络处理这个张量
#    卷积核学习局部的空间模式
#    (如「疏水碳靠近疏水碳」「供体正对受体」)
#
# 4) 输出两个预测:
#    CNNscore:    该姿势是「好姿势」的概率(分类)
#    CNNaffinity: 预测的结合亲和力(回归)
#
# 训练数据:
#   CrossDocked2020(见 240)—— 交叉对接生成的大量姿势,
#   每个姿势有与原生姿势的 RMSD 标注
#   → 正样本:RMSD ≤ 2 Å;负样本:RMSD > 4 Å

关键设计选择

  • 用交叉对接数据而非只用晶体结构这是方法的关键。只用晶体结构训练,模型只见过「正确姿势」,学不会区分好坏。交叉对接提供了大量质量各异的姿势作为负样本;
  • 数据增强:对同一复合物做随机旋转与平移,让模型学习旋转不变性(3D CNN 本身不具备旋转等变性);
  • 两个输出头:姿势分类与亲和力回归共享特征提取器,多任务学习;
  • 集成多个模型:GNINA 默认使用多个 CNN 模型的集成,提高稳定性。

三种使用模式

模式 CNN 的作用 相对速度
none 不用(等价 smina)
rescore 经验打分搜索,CNN 只对最终姿势重打分 约 2×
refinement CNN 参与姿势精修 约 20×
all 全程 CNN 参与搜索 最慢

rescore 是性价比最优的模式:用快速的经验打分做搜索(生成候选姿势),只用 CNN 做最后的排序——这样既获得了 CNN 的判别力,又避免了 CNN 在搜索循环中的高昂成本。

论文报告的结果与后续评估

  • 姿势预测的改善是扎实的:在多个测试集上,CNN 重打分把 top-1 姿势 RMSD ≤ 2 Å 的成功率相对纯 Vina/smina 提高了可观的幅度。这是 GNINA 最可靠的贡献
  • 虚拟筛选富集的改善因体系而异:在某些靶点上明显,某些上几乎没有。不应期待它普遍解决打分函数问题
  • 亲和力预测的相关性有限:CNNaffinity 与实测活性的相关性仍然不高——这与所有基于结构的活性预测方法面临同样的困难(见 095《Docking Score》)。

数据泄漏的质疑

# 对基于结构的 ML 打分函数的普遍质疑(见 238)
#
# 核心问题:
#   多项独立研究发现,在 PDBbind、DUD-E 等基准上,
#   「只用配体特征、完全不看蛋白」的模型
#   也能取得接近的成绩
#
# 含义:
#   模型可能在学「什么样的配体通常有活性」
#   而非「这个配体与这个蛋白如何相互作用」
#
# 对 GNINA 的具体影响:
#   - 姿势预测任务受影响较小
#     (因为它判断的是几何合理性,配体本身信息不足以判断)
#   - 亲和力预测任务受影响较大
#
# 必要的对照:
#   评估任何基于结构的 ML 打分函数时,
#   都应同时报告「只用配体特征」的基线
#   → 差距不大 = 结构信息未被真正利用

三个分数的正确用法

  • minimizedAffinity:经验打分(kcal/mol),越负越好;
  • CNNscore姿势可信度(0~1),不是亲和力
  • CNNaffinity:CNN 预测的亲和力(pK 尺度),越大越好;
  • 推荐的组合方式:先用 CNNscore 过滤掉姿势不可信的结果(如 < 0.5),再在剩余的里按 CNNaffinity 或经验打分排序。混用这三个是常见的误用(见 337《用 GNINA 做 Rescoring》)。

训练分布偏置

  • 训练数据来自 PDB 中的复合物:因此对与训练分布相近的蛋白家族表现更好,对新颖靶点或罕见家族要谨慎;
  • 姿势由 smina 生成:模型可能过度适应 smina 的搜索偏好,对其它来源的姿势(如 DiffDock 生成的)判别力可能下降;
  • 应对在自家靶点上用已知活性/非活性分子验证富集效果,而非直接采信公开基准的成绩。

工程上的贡献

除算法外,GNINA 的几个工程改进对实用性影响很大:

  • 直接读 PDB/SDF:不必转 PDBQT,省掉一个高频出错的环节;
  • --autobox_ligand:用参考配体自动定盒子,消除了手工填坐标这个常见错误源;
  • GPU 加速:让 CNN 打分在实用速度内完成;
  • 开源:完整代码与预训练模型可用。

关键要点

  • 关键设计是用交叉对接数据训练——只用晶体结构学不会区分好坏姿势;
  • 姿势预测的改善扎实,虚拟筛选富集的改善因体系而异
  • CNNscore 是姿势可信度,CNNaffinity 才是亲和力——混用是常见误用;
  • 评估此类方法必须设「只用配体特征」的对照基线。

延伸资源