You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Autodock4自动化脚本实现配体库批量对接?

AutoDock4 批量配体对接自动化方案

我正在使用Autodock4进行分子对接,需求是实现配体库中每个配体的自动批量对接。我已拥有Autodock Vina的实现脚本如下:

#! /bin/bash

for f in ligand_*.pdbqt; do
    b=`basename $f .pdbqt`
    echo Processing ligand $b
    mkdir -p $b
    vina --config conf.txt --ligand $f --out ${b}/out.pdbqt --log ${b}/log.txt
done

但Autodock4参数众多且对接过程会生成多种格式文件,我难以编写类似的自动化脚本。请问能否实现该自动对接流程?若通过合理准备蛋白并编写相似脚本是否可行?常规对接会生成蛋白和配体的特定文件,是否有替代方法?

一、AutoDock4 批量对接完全可行

AutoDock4的批量对接逻辑和Vina核心一致:通过循环遍历配体库,为每个配体单独执行对接流程,同时对生成的多格式输出文件做归类管理。只要提前完成蛋白和配体的标准化预处理,就能编写类似的Bash脚本实现全自动化。

二、批量对接的前置准备

在编写脚本前,必须完成以下预处理步骤:

  • 蛋白预处理:使用autogrid4生成网格参数文件(.gpf)和对应的网格映射文件(.map),确保网格中心、尺寸、能量参数符合靶点需求。注意:同一靶点只需预处理一次蛋白,所有配体共用这套网格文件。
  • 配体预处理:将所有配体转换为.pdbqt格式,确保每个文件包含正确的可旋转键 torsion 信息(可通过MGLTools的prepare_ligand4.py工具完成),建议用统一前缀命名(如ligand_*.pdbqt)方便批量遍历。

三、批量对接Bash脚本示例

以下脚本实现了和Vina类似的批量逻辑,同时适配AutoDock4的多文件输出特性:

#!/bin/bash

# 定义共用的蛋白文件和网格参数文件
RECEPTOR_PDBQT="protein.pdbqt"
GPF_FILE="protein.gpf"

# 遍历所有配体文件
for LIGAND in ligand_*.pdbqt; do
    # 提取配体名称(去除文件后缀)
    LIGAND_BASE=$(basename "$LIGAND" .pdbqt)
    echo "=== 开始对接配体: $LIGAND_BASE ==="

    # 创建单独的输出目录,避免文件混乱
    mkdir -p "$LIGAND_BASE"

    # 1. 生成当前配体的对接参数文件(.dpf)
    # 基于模板dpf替换配体路径、输出路径等变量
    cp template.dpf "$LIGAND_BASE/${LIGAND_BASE}.dpf"
    sed -i "s|^ligand.*|ligand $LIGAND|" "$LIGAND_BASE/${LIGAND_BASE}.dpf"
    sed -i "s|^out.*|out $LIGAND_BASE/${LIGAND_BASE}.dlg|" "$LIGAND_BASE/${LIGAND_BASE}.dpf"
    sed -i "s|^receptor.*|receptor $RECEPTOR_PDBQT|" "$LIGAND_BASE/${LIGAND_BASE}.dpf"

    # 2. 执行AutoDock4对接
    autodock4 -p "$LIGAND_BASE/${LIGAND_BASE}.dpf" -l "$LIGAND_BASE/${LIGAND_BASE}.dlg"

    echo "=== 配体 $LIGAND_BASE 对接完成 ==="
done

关键说明:

  1. 模板dpf文件:提前手动编写一个template.dpf,包含除配体路径、输出路径外的所有固定对接参数(如遗传算法迭代次数、对接姿态数量等),脚本通过sed命令动态替换变量,避免重复编写参数。
  2. 输出文件管理:每个配体的.dlg对接日志、后续可转换的.pdbqt结果都保存在独立目录中,便于后续分析。
  3. 网格复用:蛋白网格文件的路径已经在template.dpf中指定,无需在循环中重复生成。

四、简化流程的替代方法

如果觉得手动维护模板.dpf太繁琐,可以用以下两种方式简化:

  • 使用MGLTools自动生成dpf:MGLTools提供的prepare_dpf4.py工具可通过命令行参数直接生成.dpf文件,无需手动编写模板。例如:
    prepare_dpf4.py -l $LIGAND -r $RECEPTOR_PDBQT -p ga_num_evals=250000 -p num_modes=10 -o $LIGAND_BASE/${LIGAND_BASE}.dpf
    
    将这行命令替换脚本中生成dpf的步骤即可。
  • 动态生成网格(可选):如果需要为不同配体生成专属网格,可在循环中加入autogrid4 -p $GPF_FILE命令,但同一靶点通常不需要重复生成网格。

内容的提问来源于stack exchange,提问作者buzzaxe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:28:35