从"生数据"到对接结果:semdock 让虚拟筛选不再受制于 ZINC

STAR PROTOCOLS · 每日一篇 · 第 012 期

从"生数据"到对接结果:semdock 让虚拟筛选不再受制于 ZINC

原文:Emon S 等(孟加拉国伊斯兰大学生物技术与遗传工程系), STAR Protocols (2026)|DOI: 10.1016/j.xpro.2026.104822|PMC13615501|2026-09-07|开放获取|中文编译解读 · 2026-10-20

这篇方案解决什么问题

基于分子对接的虚拟筛选是大规模化合物库筛选、锁定候选活性分子的常规手段。此前的 jamdock-suite 已把"从建库到对接评估"整条流程自动化——但它有个硬伤:化合物库生成只能依赖 ZINC 数据库的外部服务器。用户自带的化合物集合(PubChem、ChEMBL、供应商目录、天然产物数据库、自建库)进不去流程,还得自己手工预处理。

本文发布的 semdock 工作流正是为补上这一环:直接吃 SDF、SMILES、CSV 三种最常见格式的原始化学数据集,自动完成从"生结构"到"可对接 PDBQT 文件"的全套配体准备,并新增按配体分配 CPU 核的并行对接(实测比传统多线程快约 30%)与自动化的对接后分析。

四大亮点(原文 Highlights):

  1. 支持从原始 SDF、SMILES、CSV 数据集直接启动虚拟筛选;
  2. 自动化配体准备:从原始结构一路到可直接对接的 PDBQT 文件;
  3. 每个配体独占一个 CPU 核的并行对接;
  4. 按阈值过滤并整理虚拟筛选结果,输出带分子描述符的数据表。

工作流结构:四个模块接力

模块 来源 职责
sem_prep 本文新增(含 3 个脚本) 解析并标准化输入数据集(input_handler.py)、质子化(protonate.sh)、3D 构象生成与能量最小化(generate_3d.py),输出 PDBQT
jamreceptor jamdock-suite(Data S3) 受体结构清洗、分配 Gasteiger 电荷、转 PDBQT;用内置 fpocket 自动识别结合口袋并生成对接网格参数
sem_dock 本文新增 调用 AutoDock Vina 引擎,按配体分核并行对接
sem_filter 本文新增(另有 fail_check 脚本,Data S6) 处理 Vina 输出,按结合能阈值或 Top-N 排名过滤,生成三个 CSV 结果表;可选 SimScore 构象收敛性评分
原版 jamdock-suite 的五个脚本(jamlib / jamreceptor / jamqvina / jamresume / jamrank)中,semdock 替换了"建库"(jamlib→sem_prep)与"对接"(jamqvina→sem_dock)两个环节,保留了受体准备等其余能力,并继承 jamrank 的 SimScore 计算思路。

材料与软件清单(关键资源表)

类别 名称 来源 / 标识
数据 虚拟筛选流水线 Bash/Python 脚本 本文;Zenodo: 10.5281/zenodo.19998830;GitHub: elrando/semdock
数据 虚拟筛选化合物库 ZINC 数据库(zinc.docking.org)
数据 维生素 D 核受体配体结合域晶体结构 PDB: 1IE9
数据 盐皮质激素受体配体结合域晶体结构 PDB: 3VHU
数据 LOV 光传感域晶体结构 PDB: 4R38
数据 孕激素受体配体结合域晶体结构 PDB: 1SQN
系统 Ubuntu 24.04 LTS ubuntu.com
语言 Python 3 python.org
工具 GNU Wget 1.21.4 / nano 7.2 / curl 8.5.0 / git 2.43.0 GNU Project 等
构建 Cmake 3.28.3、Boost 1.83 Kitware / Boost C++ Libraries
环境 Conda 26.1.0 Anaconda
化学 RDKit 2025.09.2 rdkit.org(Zenodo: 10.5281/zenodo.17495409)
化学 Meeko 0.7.1(PDBQT 转换) Forli Lab(GitHub: forlilab/Meeko)
化学 Dimorphite-DL(质子化) Durrant Lab(PyPI)
对接 AutoDock Vina 1.2.7(本文有修改版) 官方 GitHub: ccsb-scripps/AutoDock-Vina;修改版: elrando/AutoDock-Vina
并行 GNU Parallel GNU Project(Zenodo: 19701238)
可视化 PyMOL 3.1.0 Open-Source Schrödinger(GitHub: schrodinger/pymol-open-source)

本研究为纯计算工作流,不产生新实体材料。补充材料 Data S1(详细执行手册)、S2–S6(各模块代码)、S7(验证用 FDA 化合物库 CSV)随文发布。联系作者:Jahangir Md. Alam(jahangir@btge.iu.ac.bd)。

分步方案

Step 1 · 环境安装

在 Linux 环境安装 semdock 工作流及全部依赖(细节见 Data S1:Ubuntu 24.04、Python 3、RDKit、Meeko、Dimorphite-DL、GNU Parallel、修改版 Vina 等)。建议用 Conda 管理依赖。

Step 2 · 准备配体输入数据

  • 输入支持 SDF、SMILES、CSV 三种格式;
  • CSV 只要求含一列 SMILES——从 ZINC、PubChem、ChEMBL 下载的数据通常自带 SMILES 列,无需任何预处理即可直接使用;
  • 验证用库:ZINC 下载的 3,230 个 FDA 批准化合物(CSV,含化合物标识符与 canonical SMILES,Data S7)。

Step 3 · 自动化配体准备(sem_prep,五个子步骤)

  1. 标准化用 RDKit 统一化合价/电荷等来源差异;
  2. 质子化用 Dimorphite-DL 在 pH 7.4 下指定质子化态——每个化合物只取单一质子化态(效率与可扩展性的取舍,见局限性);
  3. 3D 构象生成RDKit 的 ETKDGv3 距离几何算法;
  4. 能量最小化MMFF94 力场,参数缺失时自动回退到 UFF;
  5. 格式转换用 Meeko 把优化后的 3D 结构转成对接就绪的 PDBQT。

全程保留化合物原始标识符(保证对接与后续分析可追溯),每一阶段都记录处理日志,成功与失败分子分列。

Step 4 · 受体准备(jamreceptor)

  • 从 RCSB PDB 下载目标蛋白结构(验证用四个:1IE9、3VHU、4R38、1SQN);
  • 受体结构清洗 → 分配 Gasteiger 电荷 → 转 PDBQT;
  • 内置 fpocket 自动识别结合口袋,生成对接网格(grid)参数。

Step 5 · 并行分子对接(sem_dock)

  • 引擎:AutoDock Vina(选 Vina 而非原版 jamqvina 所用的 QuickVina 2——QVina 2 虽平均快约 2.3 倍,但 Vina 精度更高,本工作流优先保证预测质量);
  • 参数:exhaustiveness 32、最多 9 个结合模式、能量范围 5 kcal/mol(保留与最优姿态能量差 5 kcal/mol 以内的所有结合姿态);
  • 并行策略:可用 CPU 核按配体为单位分配,每个配体独立对接——相比"全部核同跑一个对接任务"的多线程模式,负载更均衡,减少因配体复杂度差异造成的 CPU 空转;
  • 验证环境:KVM 虚拟机(AMD EPYC 9334 32 核、32 GB RAM),分配 30 核。

Step 6 · 对接后分析(sem_filter)

处理 Vina 输出,按结合能排名,支持两种过滤方式:设结合能阈值,或直接取 Top-N。输出三个 CSV 数据表:

输出文件 内容
表 1 全部已对接配体的结合能
表 2 仅过滤/排名后的化合物
表 3 过滤后化合物 + 分子描述符(分子量 MW、拓扑极性表面积 TPSA、氢键供体 HBD、氢键受体 HBA、可旋转键 RotB、脂水分配系数 LogP)

可选 SimScore 评分(继承自 jamrank):度量同一配体各对接姿态间的相似性,反映姿态收敛程度,作为化合物排序的辅助指标。三个表均保留配体文件名、来源数据库与来源标识符(ZINC ID、PubChem CID 等),可直接接入下游化学信息学分析、机器学习或迭代筛选。

验证结果(预期结果长什么样)

  • 配体准备成功率 98.17%:3,230 个 FDA 批准化合物(结构极其多样——多肽、大环、高电荷、多手性中心药物俱全)中 3,171 个全流程成功,仅 59 个(1.83%)失败;
  • 对接提速约 30%:同一化合物库(3,171 个)对四个靶点,逐配体并行耗时 7–10 小时,传统 30 线程多线程模式需 10–15 小时(相同硬件与参数);
  • 生物学合理性保持:四个靶点中,已知共晶配体全部进入 Top 榜单;预测结合姿态与晶体结构中的实验构象高度吻合(PyMOL 叠合目检);
  • 失败化合物分析见 Troubleshooting。

Troubleshooting:为什么会有 1.83% 失败?

失败几乎都发生在构象生成阶段。查看失败分子结构,共性是拓扑刚性极强:桥环/多环骨架、螺环连接点、多个手性中心。这类结构让 ETKDGv3 的扭转与立体化学约束难以生成化学上合理的 3D 构象,导致后续优化与 PDBQT 转换无法完成。

问题 原因 处理建议
配体制备失败 刚性结构 + ETKDGv3 约束限制 本工作流为评估全自动性能未人工修正;实际项目中可人工指定构象、或分批调整构象生成参数后重跑
对接预测不准 刚性受体对接不考虑蛋白柔性 高动态结合位点的靶点慎用;把结合能/姿态视为早期优先级排序的近似
某些化合物漏筛 每配体单一质子化态、单一最优构象 对重点候选可补充多质子化态/互变异构体单独处理
内存吃紧 每个对接进程独立占内存 大搜索空间(盲对接)项目需预留充足内存

局限性

  1. 刚性受体:不考虑蛋白柔性,预测的结合能与姿态是近似值,适合早期优先级筛选,不适合替代更精细的采样方法;
  2. 单质子化态 + 单构象:为效率牺牲了化学采样,可能漏掉与结合相关的质子化态、互变异构体、立体化学变体或构象;
  3. 无 GPU 加速:以普通 CPU 系统的可及性为设计目标;且每进程独立占内存,盲对接等宽搜索空间场景内存需求可观;
  4. 打分≠真实结合:对接得分、排名与 SimScore 不能区分真结合物与假阳性,实验验证不可省略——筛出的化合物只应作为待检验的假设。

尽管如此,semdock 补齐了 jamdock-suite 最大的短板(只能用 ZINC 库),用 98.17% 的制备成功率和四靶点验证证明了可靠性,让药物重定位、精选化合物库筛选、自建库分析等场景都能从"生数据"一键起步。

与原版 jamdock-suite 的对照速查

环节 jamdock-suite(原版) semdock(扩展版)
化合物库来源 仅 ZINC 数据库服务器 任意 SDF / SMILES / CSV 数据集
配体制备 不含(由 ZINC 出库即"成品") RDKit 标准化 → Dimorphite-DL(pH 7.4)→ ETKDGv3 → MMFF94/UFF → Meeko
对接引擎 QuickVina 2(快约 2.3 倍) AutoDock Vina(精度优先)
并行方式 多线程共跑单任务 每配体独占一核(快约 30%)
结果整理 jamrank sem_filter(三表输出 + 描述符)+ 可选 SimScore
姿态收敛指标 SimScore(jamrank) SimScore(继承)

特别声明

1、本页面内容包含部分的内容是基于公开信息的合理引用;引用内容仅为补充信息,不代表本站立场。

2、若认为本页面引用内容涉及侵权,请及时与本站联系,我们将第一时间处理。

3、其他媒体/个人如需使用本页面原创内容,需注明“来源:[生知库]”并获得授权;使用引用内容的,需自行联系原作者获得许可。

4、投稿及合作请联系:info@biocloudy.com。