1. 分子对接概述:基本原理、应用场景与常用软件

做计算化学这么多年,我始终觉得分子对接是药物设计里最「接地气」的一项技术。它不像量子化学那样动不动就几十个核跑几天,也不像分子动力学模拟动不动就上微秒级轨迹。对接的目标很明确——给你一个靶点蛋白和一个小分子配体,告诉你能不能结合,结合得有多牢。

说白了,分子对接就是模拟钥匙开锁的过程。只不过这把钥匙(配体)和锁(受体)都是柔性的,位置、角度、构象都会变。

1.1 基本原理:受体-配体复合物的形成背后

我刚入行时觉得对接挺玄乎的,觉得不就是把分子怼进去算个能量吗?其实没那么简单。一个完整的对接过程,核心就两件事:采样和打分。

采样,就是在蛋白质的活性口袋附近,穷举配体的所有可能的取向和构象。你想想看,一个可旋转键多于10个的分子,自由度已经大得吓人了。采样算法的目的,就是在这片巨大的构象空间里,找到那把能「对上暗号」的姿势。

打分呢,就是给每种姿势算一个结合自由能。结合得越强,打分越负。但注意,这个分数可不一定准。我在项目中遇到过好几次打分结果很漂亮,对接姿势看着也合理,结果一测活性,完全不符。这里的坑我后面会讲。

目前主流的采样算法大概分三类:

  • 系统搜索法:把空间分割成网格,遍历所有可能。最早期的DOCK就是这路子。优点是全,缺点是慢得离谱。
  • 随机搜索法:像模拟退火、遗传算法这类。AutoDock Vina用的是迭代局部搜索,我个人习惯说它像「先跳远再微调」。
  • 确定性搜索法:基于分子动力学或能量最小化。对起始结构很敏感,容易掉进局部最优。

打分函数也有三大流派:

类型 代表 优点 缺点
基于力场 AMBER、CHARMM 物理意义清晰 溶剂化效应难处理
基于经验 AutoDock Vina、Glide 速度快、拟合实验数据 外推能力差
基于知识 DrugScore、ITScore 利用了PDB统计规律 依赖数据库质量

嗯,这里要注意:现在机器学习打分函数越来越火,但其实大多还是在上述框架下做修正。别把ML当成万能药。

1.2 应用场景:能从对接中得到什么?

很多同学觉得对接只能做虚拟筛选,其实能做的事情挺多的。我按项目经验排了个序:

  1. 虚拟筛选:从百万级化合物库中挑出候选分子。一个中等规模的对接库,跑到亿级也不是新鲜事。
  2. 结合模式预测:已知活性分子,想知道它到底是怎么嵌在口袋里的。比如做SAR(构效关系)分析时,对接姿势会直接影响你的优化方向。
  3. 反向对接:拿一个已知药物,去搜它可能作用的靶点。这叫drug repurposing(老药新用),疫情期间很多人做过这个。
  4. 点突变影响评估:比如某个氨基酸突变导致耐药性,对接能帮你解释为什么药效变差了。
  5. 参数优化前的预处理:这一点是我自己特别强调的。对接参数不好,后面所有特征构建都是白搭。我们这个课程会花大量篇幅讲这个。

为什么会这样?因为很多人在对接阶段图省事,用了默认参数就跑了。结果特征全是噪音,再去跑图神经网络、随机森林,效果怎么可能好?

1.3 常用软件:各有什么特色?

我用过的对接软件不下十种,下面这些是目前社区里最常用、生命力也最强的。我个人建议初学者至少掌握两种:一个免费的(比如AutoDock Vina),一个商业的(比如Glide或GOLD)。

软件 开源/免费 主要特点 我个人的使用感受
AutoDock Vina 开源免费 速度快,迭代局部搜索,并行化好 做大规模虚拟筛选的首选
AutoDock4 开源免费 支持柔性侧链,打分函数老牌 适合做精细对接,但慢
Glide (Schrödinger) 商业 SP/XP/HTVS三级精度,打分函数经典 精度最高的商业软件之一
GOLD 商业 遗传算法,支持柔性对接 做药物设计项目时经常用
DOCK6 开源免费 基于网格的匹配算法 适合处理带金属离子的环境
RosettaLigand 开源免费 基于蒙特卡洛与能量最小化 精度很高,但计算资源需求大
LeDock 免费 速度极快,适合超大规模筛选 我曾在学术界用过,部署友好

我建议你如果做产业级项目,至少备一个商业软件。为什么?因为商业软件的默认参数往往经过了大量实验验证,你至少可以用它来「校准」你的开源流程。我曾经在一个项目中,用Vina跑出来的分数排名跟Glide完全反着来,后来发现是封装脚本里少写了一个加氢步骤——嗯,那次教训很深。

1.4 你需要关注的关键参数

做对接光会点运行按钮是不够的。我在之前的教程里反复强调一个理念:参数没调好,对接等于白做。下面这几个参数是我在任何项目中都会优先检查的:

  • 盒子(Box)位置与大小:太大则引入噪声,太小则漏掉真实结合位点。我通常会把设好的盒子导出成PDB来目视验证。
  • 配体柔性处理:可旋转键的设定直接影响搜索维度。在Vina里可以用--flex时加上侧链柔性,但计算时间翻倍。
  • 构象数目:并不是越多越好。一般10~20个构象足够覆盖低能态。我曾见过有人设100个,跑了一周,结果前20个构象基本一样。
  • 打分阈值与排名策略:你是按第一构象排序,还是按Boltzmann加权平均?做法不同结果可能天差地别。

⚠️ 特别注意:加氢和质子化状态的设定。很多对接出问题,根本原因不是算法,而是配体或受体的原子类型和形式状态设错了。pH环境不对,结果肯定不对。我建议做对接前,先用pdb2pqr或reduce工具跑一遍受体质子化。

1.5 本课程的核心视角:为什么参数优化与特征构建要协同?

在我做机器学习驱动分子设计时发现一个瓶颈:要么是对接参数不够鲁棒导致特征噪声大,要么是特征工程过于粗糙导致打分函数学不到本质。所以这套课程的主线是:把对接参数的敏感度分析和特征构建的降噪能力结合在一起。

举个例子,比如你发现同一个配体,打随机数种子跑五次,结果排名能差20%。这时候你该做两件事:一是查对接参数的稳定性,二是看你的特征表征是否能容忍这种波动。后面我们会用实际数据来示范。

下面这张图是我们这套课程的顶层知识框架。你会发现,对接参数优化和特征构建不是两个孤立的过程,而是一个迭代的循环。

📘 本课程知识协同框架 ① 受体与配体预处理 加氢 / 质子化 / 格式转换 ② 参数预处理与探测 盒子定义 / 柔性键 / 搜索深度 ③ 分子对接执行与采样 AutoDock Vina / Glide / GOLD ④ 对接结果排序与聚类 能量排名 / RMSD 聚类 ⑤ 参数敏感度分析 稳定性 / 鲁棒性 / 收敛性 ⑥ 特征构建与消噪 能量项分解 / 空间描述符 / 指纹编码 迭代优化反馈 🔁 参数优化与特征构建协同循环

💡 跟我自己的经验来看,大多数人在第①和②步就省事了。后面所有结果都会跟着出问题。我会在接下来的几章里,手把手带你过一遍每个预处理步骤的检查清单。你会发现,花10分钟调盒子,能省掉后面三天排查错误的时间。

好了,这一章先到这里。下一块我们会具体讲:怎么获取和处理高质量的受体结构。这个坑更多,我们到时候慢慢聊。