计算化学公社

标题: 使用MCPB.py生成单金属离子中心蛋白的gromacs拓扑文件批量化运行脚本 [打印本页]

作者
Author:
Andrea123    时间: yesterday 22:15
标题: 使用MCPB.py生成单金属离子中心蛋白的gromacs拓扑文件批量化运行脚本
本帖最后由 Andrea123 于 2026-4-15 22:27 编辑

由于最近需要帮多个课题做含金属离子中心的蛋白质模拟,一步一步输入命令实在是太麻烦了,而且还要时不时看Gaussian有没有跑完,实在是浪费精力,于是写了一个批量化运行脚本(注:现在目前仅支持单金属离子,双金属离子或小分子配体都不支持)
参考教程:
ambermd.org/tutorials/advanced/tutorial20/mcpbpy.php
使用MCPB.py生成二茂铁中Fe的力场参数 - 分子模拟 (Molecular Modeling) - 计算化学公社
基于amber的MCPB.py构建含金属离子蛋白的力场参数 - 分子模拟 (Molecular Modeling) - 计算化学公社
生成式AI标注:脚本全部基于Python编写,部分内容由codex辅助编程完成

使用方法:
conda create --name AmberTools25 python=3.12
conda activate AmberTools25
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install dacase::ambertools-dac=25
source $CONDA_PREFIX/amber.sh
conda install -c conda-forge acpype
pip install psutil
pip install hydra-core --upgrade
以上是运行脚本所需要的AmberTools和其他一些库,每次都在AmberTools25虚拟环境下使用脚本即可
首先使用H++网络服务器H++ (web-based computational prediction of protonation states and pK of ionizable groups in macromolecules)生成脚本所需要的每一个任务的输入文件(H++用默认参数输出即可),取输出文件0.15_80_10_pH6.5_{sys_name}.top、0.15_80_10_pH6.5_{sys_name}.crd和你原始的{sys_name}.pdb文件(去除掉多余的水分子杂质,确保你的pdb文件中唯一的HETATM是对应的金属离子中心),可以将多个蛋白的三个输入文件放在同一个目录下,终端输入nohup python batch_run.py > batch_run.log 2>&1 &,脚本会根据每个pdb文件的名称作为sys_name,自动分组并且按照设置的每个任务使用的CPU核心数自动按批次并行计算。

介绍一下脚本参数和实现的功能(对应config文件)
cpu_threshold: 10 #设定认为CPU空闲的利用率阈值,即小于这个值才会被脚本锁定用于计算
reserve_cores: 32 #预留的CPU核心数,脚本会将多少个CPU核排除在外,脚本使用的是物理核心数计算,如果开启了超线程(现在应该都是默认开启了),终端输入nproc输出128则实际可调用的核心只有64,设置32即脚本实际掉用的核心数只有32个(设置每个任务使用多少CPU核心是g16_settings中的nproc,如果剩余的可使用的核心数小于这个值则任务不会开启)
Morse_run、Morse_D、Morse_beta: 8.0 这三个参数是楼主因为后续模拟任务涉及金属断键,所以增添了将生成的gmx拓扑文件中[bonds]势函数从简谐势改为Morse势用于模拟金属断键,一般情况设置Morse_run=Fase即可
name: 123 #系统的名字,批量运行时不用设定,脚本会自行根据同目录下pdb文件修改,如果不想批量运行只跑MCPB_utils_v4.py,则将此处单独修改为和你的pdb文件名一样即可
metal_name: CU #金属离子的名称,应和你pdb文件中的离子名称一致
modify_hip: True #是否修改金属离子设定范围(cut_off参数)内的HIP残基,因为H++处理pdb文件时不会考虑配体,而Amber命名规则又是若金属配位在Nδ1上,HE2存在HIP变成HIE;金属配位在Nε2上,HD1存在HIP变成HID,如果不修改会有极大可能在后续的Gaussian计算中报错
剩下的一些简单参数在config文件有注释
另外三步Gaussian计算脚本的运行逻辑是串行,所以比如最后一步大体系的Gaussian计算报错脚本退出而前两步的计算正常结束,脚本则会跳过前两步小体系的Gaussian计算

总结:脚本简单实现了对于单金属离子中心蛋白的MCPB.py的批量运行,并且允许接续步骤续算,鄙人不才,限于课题和精力,现在只写了单金属离子中心的脚本且有不少功能的实现是采用的硬编码,未来有时间可能会添加支持双金属离子中心蛋白的功能,小分子配体楼主还未有课题需要,也希望有大佬如果有需要可以在脚本上继续添加功能(比如将H++的步骤也加入自动化流程、添加小分子配体的实现等等)




作者
Author:
student0618    时间: 14 hour ago
本帖最后由 student0618 于 2026-4-16 02:13 编辑

谢谢分享。
一些格式上的建议:步骤分行用条列式表示、指令/代码用“插入会更容易阅读。
作者
Author:
Andrea123    时间: 5 hour ago
student0618 发表于 2026-4-16 01:10
谢谢分享。
一些格式上的建议:步骤分行用条列式表示、指令/代码用“插入会更容易阅读。

好的




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3