如何编写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
关键说明:
- 模板dpf文件:提前手动编写一个
template.dpf,包含除配体路径、输出路径外的所有固定对接参数(如遗传算法迭代次数、对接姿态数量等),脚本通过sed命令动态替换变量,避免重复编写参数。 - 输出文件管理:每个配体的
.dlg对接日志、后续可转换的.pdbqt结果都保存在独立目录中,便于后续分析。 - 网格复用:蛋白网格文件的路径已经在
template.dpf中指定,无需在循环中重复生成。
四、简化流程的替代方法
如果觉得手动维护模板.dpf太繁琐,可以用以下两种方式简化:
- 使用MGLTools自动生成dpf:MGLTools提供的
prepare_dpf4.py工具可通过命令行参数直接生成.dpf文件,无需手动编写模板。例如:
将这行命令替换脚本中生成dpf的步骤即可。prepare_dpf4.py -l $LIGAND -r $RECEPTOR_PDBQT -p ga_num_evals=250000 -p num_modes=10 -o $LIGAND_BASE/${LIGAND_BASE}.dpf - 动态生成网格(可选):如果需要为不同配体生成专属网格,可在循环中加入
autogrid4 -p $GPF_FILE命令,但同一靶点通常不需要重复生成网格。
内容的提问来源于stack exchange,提问作者buzzaxe
相关产品推荐
相关产品推荐

