Skip to content

分子对接流水线 — 使用说明

在哪里输入命令

所有命令在 Windows 终端中输入,有以下几种方式:

方法一:VS Code 终端(推荐)
用 VS Code 打开 F:\project 文件夹,按 Ctrl+` 打开终端,直接在里面输入命令。

方法二:PowerShell
Win + R,输入 powershell,回车,进入后切换到项目目录再运行。

方法三:在 Claude Code 对话框中
命令前加 ! 让 Claude 帮你执行,例如:

! python F:\project\docking\dock.py --pdb 1HVR --smiles "CCO"

快速开始

bash
conda activate docking
cd F:\project\docking
python dock.py --pdb 1HVR --smiles "CC(C)Cc1ccc(cc1)C(C)C(=O)O"

运行结束后,项目文件夹(projects/1HVR_时间戳/)里会自动生成:

  • analysis/report.html — 可在浏览器打开的完整 HTML 报告
  • analysis/scores.csv — 各姿态打分表
  • docking/poses.pdbqt — 对接姿态(用 PyMOL 打开)

每次使用的完整流程:

  1. 查到目标蛋白的 PDB ID(如 1HVR,从 RCSB PDB 搜索)
  2. 查到配体的 SMILES 字符串(从 PubChem 搜索化合物名称,复制 Canonical SMILES)
  3. 打开终端,激活环境并运行命令(首次需先安装环境,见下方)
  4. 等待 1–5 分钟(终端会显示进度)
  5. 用浏览器打开 projects/对应文件夹/analysis/report.html 查看结果

环境安装(首次使用,只做一次)

bash
cd F:\project\docking
conda env create -f environment.yml   # 创建 conda 环境(约 5-10 分钟)
conda activate docking
python check_env.py                   # 验证所有依赖已正常安装

前提:已安装 Miniconda 或 Anaconda。


参数说明

参数必填默认说明
--pdb4 字母 PDB ID,如 1HVR
--smiles配体 SMILES 字符串
--project自动生成自定义项目文件夹名
--enginevina对接引擎:vina(CPU)或 gnina(GPU,见下方)
--exhaustiveness32搜索深度(8=快速,32=标准,128=精细,见下方说明)
--n_poses10输出姿态数量
--center X Y Z自动识别手动指定结合口袋中心坐标(Å)
--box_size X Y Z自动估算对接 Box 三维尺寸(Å)
--chainA使用的蛋白质链
--blind盲对接:搜索整个蛋白质表面(建议 --exhaustiveness 32+
--ligand_nameLIG配体标识符(用于文件命名)
--gpu使用 GPU(仅 --engine gnina 有效)

Exhaustiveness 参数说明

--exhaustiveness 控制 AutoDock Vina 随机搜索的并行尝试次数

Vina 使用随机优化算法在对接 Box 内搜索配体的最优结合姿态。每次运行会从多个随机初始点出发寻找能量最低构象,exhaustiveness 就是这些独立随机搜索的数量。值越大,搜索越充分,结果越可靠,但耗时也越长。

适用场景典型耗时
8快速初筛,结果不可靠几秒
32日常使用(默认)数十秒
64柔性较大的配体1~2 分钟
128SCI 发表、自对接验证数分钟

何时需要提高 exhaustiveness?

  • 配体分子量大(> 500 Da)或可旋转键多(> 10 个)
  • 自对接验证 RMSD ≥ 2.0 Å(说明搜索未找到晶体位姿)
  • 盲对接(搜索空间远大于精准对接)
  • 需要写入 SCI 论文方法段,要求结果可重复

常用命令示例

bash
# 基础使用(自动识别共晶配体位置)
python dock.py --pdb 1HVR --smiles "CCO"

# 精细搜索 + 自定义项目名
python dock.py --pdb 1HVR --smiles "CCO" --exhaustiveness 128 --project HIV_protease

# 手动指定结合口袋(从文献/PyMOL 获取坐标,见下方说明)
python dock.py --pdb 3EML --smiles "CCO" --center 10.5 20.3 -5.1 --box_size 25 25 25

# 盲对接:搜索整个蛋白质表面(适合无共晶配体时)
python dock.py --pdb 3EML --smiles "CCO" --blind --exhaustiveness 32

# 使用非 A 链
python dock.py --pdb 1HVR --smiles "CCO" --chain B

GPU 加速说明

当前状态(Windows 原生)

AutoDock Vina 仅支持 CPU,在 Windows 上开箱即用,无需额外配置。
对于常规分子对接(单配体),CPU 模式完全够用(通常 1–5 分钟/次)。

启用 GPU 加速:GNINA(需要 WSL2)

GNINA 是基于 CNN 深度学习的对接引擎,支持 GPU,但只有 Linux 原生二进制
Windows 11 + WSL2 可以直接使用 NVIDIA GPU,步骤如下:

bash
# 1. 开启 WSL2(PowerShell 管理员模式运行)
wsl --install -d Ubuntu-22.04

# 2. 在 WSL2 Ubuntu 里安装 GNINA
wget https://github.com/gnina/gnina/releases/latest/download/gnina
chmod +x gnina
sudo mv gnina /usr/local/bin/

# 3. 验证 GPU 可用
gnina --version
nvidia-smi   # 应能看到 GPU 信息

# 4. 在 WSL2 里运行对接
cd /mnt/f/project/docking
conda activate docking
python dock.py --pdb 1HVR --smiles "CCO" --engine gnina --gpu

GNINA 使用 CNN 对姿态重打分,在结合自由能预测精度上通常优于 Vina,
适合对重要靶点进行更精细的分析。

两种引擎对比

AutoDock VinaGNINA
系统Windows / Mac / LinuxLinux / WSL2
GPU✓ NVIDIA CUDA
打分函数经验力场经验力场 + CNN 重打分
速度(单配体)1–5 min0.5–2 min(GPU)
适用场景日常对接高精度分析

方法介绍

本流水线将分子对接分为四个步骤:

1. 蛋白质准备

从 RCSB 蛋白质数据库下载 PDB 结构(首次下载后缓存到 _shared/proteins/,同一靶点不重复下载)。使用 PDBFixerOpenMM 对结构进行预处理:补全缺失残基和原子,替换非标准残基,去除结晶水和小分子(HETATM),并在 pH 7.4 条件下加氢。最后用 OpenBabel 转换为 AutoDock 所需的 PDBQT 格式。

2. 结合口袋识别

结合口袋的选择直接决定对接质量,是最重要的参数之一。本流水线支持三种策略:

策略一:共晶配体自动识别(推荐,默认)

若 PDB 结构中包含共晶配体(即原结构中已有小分子与蛋白共结晶),程序自动提取该配体坐标,计算其几何中心作为对接 Box 中心,并根据配体空间范围加 10 Å 余量估算 Box 尺寸(每维限制在 15–40 Å)。

适用条件:PDB 文件含有 HETATM 记录中的小分子(非水分子、非金属离子)。

bash
# 无需额外参数,程序自动处理
python dock.py --pdb 1HVR --smiles "你的配体SMILES"

日志中会提示识别到的配体及坐标,例如:

Binding site from co-crystal ligand 'VX4' (chain A, 34 atoms): [8.47, 30.12, -5.63]

策略二:手动指定坐标(精准定位)

当 PDB 无共晶配体,或你有文献证据表明特定口袋位置时,通过 --center X Y Z 手动指定 Box 中心。

如何从文献/数据库获取坐标:

方法 A:RCSB PDB 网站 Mol 查看器*

  1. 打开 https://www.rcsb.org/structure/你的PDBID,点击 3D View
  2. 在左侧结构树中点击关键残基(如活性位点残基)
  3. 右侧面板 → Atom Info 显示该原子的 XYZ 坐标
  4. 对多个活性位点残基取平均值即为口袋中心

方法 B:PyMOL 计算质心(最精确)

python
# 在 PyMOL 命令行中:

# 1. 打开结构
fetch 1HVR          # 或 load /path/to/receptor.pdb

# 2. 选中已知的活性位点残基(从文献中查阅关键残基编号)
select active_site, resi 25+26+50+84+85+86+89

# 3. 计算质心
centerofmass active_site
# 输出示例:Center of mass: [8.47, 30.12, -5.63]

# 4. 若有共晶配体,直接用配体质心
select lig, resn VX4   # VX4 替换为实际配体三字母代码
centerofmass lig

方法 C:从文献直接读取

许多对接论文直接报告 Grid Box 坐标,可在文章 Methods 部分查找如下描述:

"The docking box was centered at (x = 8.5, y = 30.1, z = −5.6) with dimensions 25 × 25 × 25 Å"

Box 尺寸建议

  • 已知口袋较小(肽类底物结合口袋):--box_size 20 20 20
  • 常规小分子口袋:--box_size 25 25 25(默认值,通常适用)
  • 口袋较大或有弹性:--box_size 30 30 30
bash
# 手动指定示例
python dock.py --pdb 3EML --smiles "你的配体SMILES" \
    --center 8.47 30.12 -5.63 \
    --box_size 25 25 25

策略三:盲对接 --blind(探索性搜索)

当完全不知道结合位点时,使用盲对接在整个蛋白质表面搜索。程序自动计算蛋白质原子的空间范围,生成覆盖整个蛋白的 Box(最大不超过 Vina 的 126 Å 上限)。

优点:不需要预知任何口袋信息,可发现意外的变构位点。
缺点:搜索空间极大,需要更高 exhaustiveness 才能充分采样,且打分精度略低于精准定位。

bash
# 盲对接,建议 exhaustiveness >= 32
python dock.py --pdb 3EML --smiles "你的配体SMILES" --blind --exhaustiveness 32

# 更彻底的探索
python dock.py --pdb 3EML --smiles "你的配体SMILES" --blind --exhaustiveness 64

三种策略选择总结

情景推荐策略
PDB 有共晶配体(HETATM 小分子)自动识别(默认,无需参数)
PDB 无配体,但文献有坐标/关键残基手动指定 --center X Y Z
PDB 无配体,文献无坐标,探索性研究盲对接 --blind --exhaustiveness 32+
验证已知抑制剂的结合模式手动指定(用已知晶体结构坐标)

自对接验证(SCI 投稿必备)

当 PDB 结构包含共晶配体时(即使用策略一"自动识别"),流水线会自动执行自对接验证:将共晶配体从原始 PDB 提取出来,以完全相同的参数重新对接,计算最优姿态与晶体坐标的 RMSD 值。

RMSD评估含义
< 2.0 Å✅ PASS对接方案可再现晶体结构,方法可靠
≥ 2.0 Å❌ FAIL方案无法再现晶体结构,结果可信度低

报告中的展示report.html 中会出现"Method Validation"卡片,显示:RMSD 值、配体名称、最佳姿态编号、原子数,以及绿色(PASS)或红色(FAIL)状态。

SCI 论文方法段写法

"Method validation: the co-crystal ligand [XXX] was re-docked into the prepared receptor using identical parameters. The top-ranked binding pose showed an RMSD of X.XX Å relative to the crystallographic coordinates (threshold: < 2.0 Å), confirming the reliability of the docking protocol."

无共晶配体时(手动指定坐标或盲对接):自对接验证自动跳过,不报错。

3. 配体准备

从 SMILES 字符串出发,通过 RDKit 的 ETKDG 算法生成三维构象,经 MMFF94 力场几何优化后,用 OpenBabel 添加 Gasteiger 部分电荷并转换为 PDBQT 格式。

4. 分子对接

使用 AutoDock Vina 1.2(或 GNINA)在设定的搜索空间内进行构象采样和打分。Vina 采用基于知识的经验打分函数,综合考虑空间互补性、氢键、疏水相互作用等。输出打分(kcal/mol,越负越好)及各结合姿态坐标。

结果解读

打分 (kcal/mol)评估参考意义
< −9EXCELLENT预测结合力极强,值得深入研究
−9 ~ −7GOOD预测结合力较强
> −7WEAK预测结合力较弱

⚠️ 打分仅反映预测的结合自由能,不代表实际生物活性。命中化合物需进一步通过实验(SPR、ITC、酶活抑制等)验证。


参考文献

  1. AutoDock Vina 1.2
    Eberhardt J, Santos-Martins D, Tillack AF, Forli S.
    AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings.
    J. Chem. Inf. Model. 2021, 61(8), 3891–3898.
    DOI: 10.1021/acs.jcim.1c00203

  2. AutoDock Vina(原版)
    Trott O, Olson AJ.
    AutoDock Vina: Improving the Speed and Accuracy of Docking with a New Scoring Function, Efficient Optimization, and Multithreading.
    J. Comput. Chem. 2010, 31(2), 455–461.
    DOI: 10.1002/jcc.21334

  3. GNINA
    McNutt AT, Francoeur P, Aggarwal R, Masuda T, Meli R, Ragoza M, Meli J, Bhati A, Goncearenco A, Kalidindi S, Miao Z, Valkov E, Popov M, Imhof G, Schmidtke P, Slentam V, Vajda S, Bhattacharya S, Brenk R, Forli S, Case DA, Durrant JD.
    GNINA 1.0: Molecular Docking with Deep Learning.
    J. Cheminform. 2021, 13, 43.
    DOI: 10.1186/s13321-021-00522-2

  4. OpenMM / PDBFixer
    Eastman P, et al.
    OpenMM 7: Rapid Development of High Performance Algorithms for Molecular Dynamics.
    PLOS Comput. Biol. 2017, 13(7), e1005659.
    DOI: 10.1371/journal.pcbi.1005659

  5. RDKit
    Landrum G.
    RDKit: Open-Source Cheminformatics. rdkit.org. Accessed 2025.

  6. ETKDG 构象生成
    Riniker S, Landrum GA.
    Better Informed Distance Geometry: Using What We Know To Improve Conformation Generation.
    J. Chem. Inf. Model. 2015, 55(12), 2562–2574.
    DOI: 10.1021/acs.jcim.5b00654

  7. OpenBabel
    O'Boyle NM, Banck M, James CA, Morley C, Vandermeersch T, Hutchison GR.
    Open Babel: An Open Chemical Toolbox.
    J. Cheminform. 2011, 3, 33.
    DOI: 10.1186/1758-2946-3-33

  8. RCSB 蛋白质数据库
    Berman HM, et al.
    The Protein Data Bank.
    Nucleic Acids Res. 2000, 28(1), 235–242.
    DOI: 10.1093/nar/28.1.235


文件结构

F:\project\docking\
├── dock.py              ← 主入口(运行这个)
├── config.yaml          ← 默认参数配置
├── environment.yml      ← conda 环境
├── check_env.py         ← 环境验证
├── 使用说明.md          ← 本文件
├── _shared/
│   └── proteins/        ← PDB 文件缓存(自动管理)
├── scripts/             ← 各步骤模块
│   ├── receptor.py      ← 蛋白质准备
│   ├── ligand.py        ← 配体准备
│   ├── binding_site.py  ← 结合口袋识别
│   ├── vina_runner.py   ← Vina 对接
│   ├── gnina_runner.py  ← GNINA 对接(GPU)
│   ├── analysis.py      ← 结果解析
│   └── report.py        ← HTML 报告生成
└── projects/
    └── {项目名}/         ← 每次运行自动创建
        ├── prepared/     ← 预处理后的 PDBQT 文件
        ├── docking/      ← 对接结果 + Vina 日志
        └── analysis/
            ├── scores.csv
            └── report.html  ← 浏览器打开此文件查看报告

个人科研与运维文档 · 内容持续修订