“第10届量子化学波函数分析与Multiwfn程序培训班将于5月4-8日于北京举办,这是一次性完整、系统学习波函数分析的各种理论知识和全面掌握强大的Multiwfn波函数分析程序使用的最不可错过的机会!请点击此链接查看详情和报名方式,欢迎参加!

“第18届北京科音分子动力学与GROMACS培训班” 将于5月23-26日于北京举办。这是一次性全面、系统学习分子动力学模拟知识和最流行的分子动力学程序GROMACS的关键机会!报名正在进行中,请点击此链接查看详情,欢迎参加!

计算化学公社

 找回密码 Forget password
 注册 Register
Views: 42|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] 使用MCPB.py生成单金属离子中心蛋白的gromacs拓扑文件批量化运行脚本

[复制链接 Copy URL]

2

帖子

0

威望

44

eV
积分
46

Level 2 能力者

本帖最后由 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++的步骤也加入自动化流程、添加小分子配体的实现等等)



config.yaml

1 KB, 下载次数 Times of downloads: 0

batch_run.py

7.63 KB, 下载次数 Times of downloads: 0

MCPB_utils_v4.py

14.16 KB, 下载次数 Times of downloads: 0

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
student0618 + 5 谢谢分享

查看全部评分 View all ratings

993

帖子

4

威望

2347

eV
积分
3420

Level 5 (御坂)

A Student

2#
发表于 Post on 11 hour ago | 只看该作者 Only view this author
本帖最后由 student0618 于 2026-4-16 02:13 编辑

谢谢分享。
一些格式上的建议:步骤分行用条列式表示、指令/代码用“插入会更容易阅读。
敬仰一针见血的指责,厌倦别有用心的赞美。

2

帖子

0

威望

44

eV
积分
46

Level 2 能力者

3#
 楼主 Author| 发表于 Post on 1 hour ago | 只看该作者 Only view this author
student0618 发表于 2026-4-16 01:10
谢谢分享。
一些格式上的建议:步骤分行用条列式表示、指令/代码用“插入会更容易阅读。

好的

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-4-16 12:32 , Processed in 0.236866 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list