1. 虚拟筛选概述与 AutoDock 简介

虚拟筛选到底在做什么?

说白了,虚拟筛选就是用计算机模拟药物分子和靶点蛋白能不能“对上眼”。做实验前先算一把,能省下大量湿实验的成本和时间。我入行时第一个项目就是帮一个课题组筛选针对某个激酶的抑制剂,当时他们手上有一百万个化合物,一个一个测?那得测到猴年马月。虚拟筛选一周就给出两百个候选,后来验证了十来个有活性——效率一下就上来了。

虚拟筛选的流程其实很直观:

  1. 靶点准备:拿到蛋白三维结构(PDB 文件),去水、加氢、修补缺失残基。
  2. 化合物库准备:把库里的分子转成三维构象,分配电荷,生成对接格式。
  3. 分子对接:用软件(比如 AutoDock)把每个分子放到结合位点里,算打分。
  4. 排序筛选:按打分排序,挑出前几百或前几十个分子。
  5. 实验验证:把候选取出来做活性测试。

注意:虚拟筛选中 打分函数 的准确性非常关键。我曾经遇到过某次筛选用同一套流程,换了个打分模式就把真正有活性的分子排到了几百名开外。所以后来我习惯在正式跑大规模筛选前,先用已知活性分子做一次“回活”验证。

为什么你需要了解 AutoDock?

AutoDock 是分子对接领域最老牌的开源软件之一。嗯,它最早是 1998 年由 Scripps 研究所发布的。算起来比我入行还早好几年。我记得那时候还是命令行界面,输参数全靠写脚本。后来出了 AutoDock Vina,速度提升了好几个数量级。

主要应用场景包括:

  • 先导化合物发现:从大库中快速锁定有潜力的分子。
  • 结合模式预测:帮你看抑制剂是怎么怼进活性口袋的。
  • 构象搜索:探索配体可能的柔性构象。
  • 虚拟筛选管道:和 PyRx、ADFR 等工具配合,搭建高通量流程。
AutoDock 版本演进
版本 发布年份 特点
AutoDock 3 1998 经典对接,力场打分
AutoDock 4 2007 支持柔性侧链,改进打分
AutoDock Vina 2010 速度提升数十倍,原子类型简化
AutoDock-GPU 2020 GPU 加速,适合超大规模库

我个人建议新手直接从 AutoDock Vina 开始。配置简单,跑起来快。你想想看,如果你的课题需要筛选十万个化合物,用老版 AutoDock 可能要跑好几天,Vina 几个小时就搞定了。

小技巧:安装完成后用 vina --version 验证是否成功:

vina --version
AutoDock Vina 1.2.3

虚拟筛选流程图

下面这张图概括了我平时做虚拟筛选的完整路径。每个环节都有对应的工具和注意点。

虚拟筛选核心流程 靶点结构准备 去水、加氢、修复 化合物库准备 构象生成、加电荷 分子对接 AutoDock Vina 计算 打分与排序 Top N 候选输出 实验验证 活性测试 ⚠️ 避坑指南 我曾经在整个流程跑完后才发现蛋白的活性位点标错了位置…… 所以现在我一定会在对接前用已知共晶配体做一次“复现”测试。

AutoDock 工具链一览

你可能会问,学 AutoDock 要装哪些东西?我习惯这样配:

  • AutoDock Tools (ADT):图形界面,做可视化准备很方便。
  • AutoDock Vina:对接引擎,命令行执行。
  • OpenBabel:格式转换神器,我经常用它把 SDF 转成 PDBQT。
  • Python 脚本:批量处理、数据分析,我自己写了个小脚本自动跑多个化合物。

重要提醒:不要直接在 Windows 下双击 Vina 可执行文件!它会一闪而过。正确做法是在命令行终端里跑。曾经有学生跑来问我“Vina怎么打不开”,我一看原来他以为那是安装包……

一个简单的虚拟筛选管道示例

我平时用 Bash 脚本串联整个流程。下面是核心步骤的伪命令(简化版):

# 准备受体
prepare_receptor -r protein.pdb -o protein.pdbqt

# 准备配体(批量处理)
for mol in library/*.sdf; do
  obabel $mol -O ${mol%.sdf}.pdbqt -m
done

# 定义对接盒子(以中心坐标 10 20 30 为例)
vina --receptor protein.pdbqt \
     --ligand ligand.pdbqt \
     --center_x 10 --center_y 20 --center_z 30 \
     --size_x 20 --size_y 20 --size_z 20 \
     --out output.pdbqt \
     --log output.log

# 提取最低能量构象
grep "REMARK VINA RESULT" output.pdbqt | head -1

嗯,这个管道看起来简单,实际跑的时候坑不少。我刚做的时候经常遇到配体原子类型不匹配、盒子太大导致假阳性之类的问题。后来慢慢摸索出一套检查清单:

  • 检查受体是否有非标准残基?
  • 配体电荷分配是否合理?
  • 对接盒子是否覆盖了结合口袋核心区域?
  • 测试跑一两个已知阳性分子看打分是否合理?

如果你能把上面这些点都把控好,虚拟筛选就已经成功了一大半。