主题
分子对接流水线 — 使用说明
在哪里输入命令
所有命令在 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 打开)
每次使用的完整流程:
- 查到目标蛋白的 PDB ID(如
1HVR,从 RCSB PDB 搜索) - 查到配体的 SMILES 字符串(从 PubChem 搜索化合物名称,复制 Canonical SMILES)
- 打开终端,激活环境并运行命令(首次需先安装环境,见下方)
- 等待 1–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。
参数说明
| 参数 | 必填 | 默认 | 说明 |
|---|---|---|---|
--pdb | ✓ | — | 4 字母 PDB ID,如 1HVR |
--smiles | ✓ | — | 配体 SMILES 字符串 |
--project | 自动生成 | 自定义项目文件夹名 | |
--engine | vina | 对接引擎:vina(CPU)或 gnina(GPU,见下方) | |
--exhaustiveness | 32 | 搜索深度(8=快速,32=标准,128=精细,见下方说明) | |
--n_poses | 10 | 输出姿态数量 | |
--center X Y Z | 自动识别 | 手动指定结合口袋中心坐标(Å) | |
--box_size X Y Z | 自动估算 | 对接 Box 三维尺寸(Å) | |
--chain | A | 使用的蛋白质链 | |
--blind | — | 盲对接:搜索整个蛋白质表面(建议 --exhaustiveness 32+) | |
--ligand_name | LIG | 配体标识符(用于文件命名) | |
--gpu | — | 使用 GPU(仅 --engine gnina 有效) |
Exhaustiveness 参数说明
--exhaustiveness 控制 AutoDock Vina 随机搜索的并行尝试次数。
Vina 使用随机优化算法在对接 Box 内搜索配体的最优结合姿态。每次运行会从多个随机初始点出发寻找能量最低构象,exhaustiveness 就是这些独立随机搜索的数量。值越大,搜索越充分,结果越可靠,但耗时也越长。
| 值 | 适用场景 | 典型耗时 |
|---|---|---|
| 8 | 快速初筛,结果不可靠 | 几秒 |
| 32 | 日常使用(默认) | 数十秒 |
| 64 | 柔性较大的配体 | 1~2 分钟 |
| 128 | SCI 发表、自对接验证 | 数分钟 |
何时需要提高 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 BGPU 加速说明
当前状态(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 --gpuGNINA 使用 CNN 对姿态重打分,在结合自由能预测精度上通常优于 Vina,
适合对重要靶点进行更精细的分析。
两种引擎对比
| AutoDock Vina | GNINA | |
|---|---|---|
| 系统 | Windows / Mac / Linux | Linux / WSL2 |
| GPU | ✗ | ✓ NVIDIA CUDA |
| 打分函数 | 经验力场 | 经验力场 + CNN 重打分 |
| 速度(单配体) | 1–5 min | 0.5–2 min(GPU) |
| 适用场景 | 日常对接 | 高精度分析 |
方法介绍
本流水线将分子对接分为四个步骤:
1. 蛋白质准备
从 RCSB 蛋白质数据库下载 PDB 结构(首次下载后缓存到 _shared/proteins/,同一靶点不重复下载)。使用 PDBFixer 和 OpenMM 对结构进行预处理:补全缺失残基和原子,替换非标准残基,去除结晶水和小分子(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 查看器*
- 打开
https://www.rcsb.org/structure/你的PDBID,点击 3D View - 在左侧结构树中点击关键残基(如活性位点残基)
- 右侧面板 → Atom Info 显示该原子的 XYZ 坐标
- 对多个活性位点残基取平均值即为口袋中心
方法 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) | 评估 | 参考意义 |
|---|---|---|
| < −9 | EXCELLENT | 预测结合力极强,值得深入研究 |
| −9 ~ −7 | GOOD | 预测结合力较强 |
| > −7 | WEAK | 预测结合力较弱 |
⚠️ 打分仅反映预测的结合自由能,不代表实际生物活性。命中化合物需进一步通过实验(SPR、ITC、酶活抑制等)验证。
参考文献
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.1c00203AutoDock 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.21334GNINA
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-2OpenMM / 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.1005659RDKit
Landrum G.
RDKit: Open-Source Cheminformatics. rdkit.org. Accessed 2025.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.5b00654OpenBabel
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-33RCSB 蛋白质数据库
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 ← 浏览器打开此文件查看报告