gromacs学习及使用(2)

2023-12-01 21:04
文章标签 学习 使用 gromacs

本文主要是介绍gromacs学习及使用(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

命令解释参考GROMACS基本教程
整个流程参考分子动力学模拟Gromacs一般使用步骤(空蛋白)
从gromacs 5.0版本开始,所有的工具都是“gmx”的子模块。可以通过下面的命令获得任何一个模块的帮助信息:

gmx help (module) 或者 gmx (module) -h
#!/bin/bash
module load gromacs/gromacs-2021.5-gcc-9.2.0-cuda11.1
for i in *.pdb;dopdbid=${i:0:7}echo $pdbidprintf "8"|gmx pdb2gmx -f $i -o ${pdbid}_processed.gro -water spc -ignhgmx editconf -f ${pdbid}_processed.gro -o ${pdbid}_newbox.gro -bt dodecahedron -d 1.0gmx solvate -cp ${pdbid}_newbox.gro -cs spc216.gro -p topol.top -o ${pdbid}_solvate.grogmx grompp -f em.mdp -c ${pdbid}_solvate.gro -p topol.top -o next.tpr -maxwarn 1printf "13" | gmx genion -s next.tpr -o ${pdbid}_solv_ions.gro -p topol.top -pname NA -nname CL -neutralgmx grompp -f em.mdp -c ${pdbid}_solv_ions.gro -p topol.top -o em.tprgmx mdrun -v -deffnm emgmx editconf -f em.gro -o em.pdbdone

1.用pdb2gmx 处理 pdb 文件

gmx pdb2gmx -f $i -o ${pdbid}_processed.gro -water spc -ignh

(1)pdb2gmx此命令将pdb文件转换成gromacs文件并产生拓扑文件。
(2)-ignh因为本pdb文件是由 NMR产生的,含有氢原子,因此用-ignh选项忽略文件中的氢原子。
(2)注意-ignh选项, 它表明程序会首先移除初始文件中的氢原子, 然后再根据相应力场的说明进行重建。???
(3)-f读入pdb文件
(4)-ff可指定力场(G43a1是Gromos96力场,一个通用原子力场)(没用过)
(5)-o指定一个新产生的pdb文件(也可以是其它多种类型文件)的文件名
(6)-p指定新产生的拓扑文件名。拓扑文件包含了所有力场参数(基于一开始选择的力场),因此非常重要(也没用过)
(7)-water来指定水模型研究表明SPC/E 水模型在水盒子模拟中表现最好。用SPC/E 水模型研究长程静电相互作用较好。
(8)注:对于下面将要用到的任何命令,都可以使用“-h”查看该命令的使用方法,比如,对于命令pdb2gmx 可以使用: pdb2gmx –h

补充: pdb2gmx的目的是生成以下三个文件:
(1)分子的拓扑文件;(2)位置限定文件;(3)预处理的结构文件。
(4)拓扑文件(默认为topol.top)包含了模拟中定义一个分子的所有必须信息,包括非键相互作用(nonbonded,原子类型和电荷)和成键参数(bonded, 键、角、二面角)。后面生成相应文件后再详细查看。
(5)-ter:对N-端和C-端的电荷进行交互分配
(5)使用-ter选项后GROMACS会提示分子的末端变化, 合适的选择应该能够正确地表示体系。???
(6)-inter:对Glu、Asp、Lys、Arg和His的电荷进行交互分配;选择那(哪)些Cys参与二硫键
(7)xxx_processsed.gro是GROMACS格式的结构文件,包含了力场文件中包含的所有原子(蛋白中氨基酸的H原子已经补全)。
(8)topol.top文件是系统拓扑文件(接下来会详细介绍)。
(9)posre.itp包含了限制重原子位置的信息(后面会详细介绍)蛋白的位置限制文件posre.itp
(10)最后要注意一点:很多用户认为.gro文件是必须的。其实不然。GROMACS可以处理很多格式的文件,只不过.gro是默认的坐标文件格式。.gro文件非常紧凑,但精度不够高。如果你想用PDB等其他格式的文件,只需要指定.pdb后缀的输出文件名即可。pdb2gmx的目的是生成符合力场的拓扑文件;输出结构在很大程度上是此目的的副产品,目的是为了方便用户。具体格式几乎可以是任何你喜欢的格式(不同的格式可以在GROMACS手册中查看)。

2.建立盒子

gmx editconf -f ${pdbid}_processed.gro -o ${pdbid}_newbox.gro -bt dodecahedron -d 1.0

(1)-d决定了盒子的尺寸,即盒子边缘距离分子边缘 1.0nm (1.0Å)。理论上在绝大多数系统中,-d 都不能小于0.85nm。
(2)注:editconf 也可以用来进行gromacs文件(.gro)和pdb 文件(.pdb)的相互转化。
例如:gmx editconf –f file.gro –o file.pdb 则将file.gro 转换为 file.pdb
(3)现在就可以用产生的文件进行真空模拟了。真空模拟就是先能量最小化,然后进行动态模拟。
没用过下面图片中的命令
(4)-c会将蛋白质放在盒子的中心,而且蛋白质离盒子边缘至少1.0 nm(-d 1.0)。盒子的类型定义为立方型(-bt cubic)。距离盒子边缘的距离是一个非常重用的参数。由于需要使用周期性边界条件,我们必须满足最低镜像约定(minimum image convention)。也就是说,蛋白质不能与它的周期性镜像相遇,否则此时计算得到的力是不正确的。定义溶质-盒子的距离为1.0 nm就意味着蛋白质的两个周期性镜像之间至少有2.0 nm。这个距离可以满足模拟中几乎所有的截断方法(cutoff scheme)。
(5)看看editconf的输出, 注意体积的变化. 另外, 也看看protein-PBC.gro文件的最后一行(提示: 可使用命令tail -n 1 protein-PBC.gro). 在GROMACS格式(.gro)中, 最后一行指定单位晶胞的形状, 并总是使用三斜矩阵的表示方法, 其中前面的三个数字指定对角元素(xx, yy, zz), 后面的六个数字指定非对角元素(xy, xz, yx, yz, zx, zy).

gmx solvate -cp ${pdbid}_newbox.gro -cs spc216.gro -p topol.top -o ${pdbid}_solvate.gro

(1)通过solvate模块填充水分子(之间的版本是genbox)
(2)“我强烈建议使用十二面体(rhombic dodecahedron),因为它的体积大概是立方盒子的71%。因此,在溶剂蛋白质时可以减少大量水分子。”
(3)使用spc216.gro,这是一个通用的平衡过的3粒子溶剂模型
(4)spc216.gro可以适用于SPC、SPC/E或者TIP3P水模型,因为他们都是3粒子溶剂模型
(5)solvate模块可以追踪添加了多少水分子,然后写入到拓扑文件中以反映做出的改变。注意,如果使用的是其他非水溶剂,solvate不能自动更改拓扑文件!它与更新水分子的兼容性在代码中是固定写死的。
在这里插入图片描述
4.设置能量最小化
em.mdp文件:Gromacs用*.mdp 文件指定所有计算的参数。

title–标题随便取(最长64个字,简单点好)
cpp–指定预处理器的位置define–传递给预处理器的一些定义。
–DFLEXIBLE告诉grompp将spc水模型而非刚性SPC包含进拓扑文件,
以便用最陡下降法进一步最小化能量。constraints–设置模型约束
integrator– steep,告诉gompp使用最速下降法进行能量最小化。
cg则代表使用共轭梯度法。dt–能量最小化用不用。只在动力学模拟中用(如md)。
nsteps–在能量最小化中,指定最大运行步数。
nstlist–更新邻居列表的频率。
nstlist = 10表示每10步更新一次。
rlist–短程邻居列表的阈值。
coulombtype–告诉gromacs如何计算静电。
PME为particle mesh ewald法(参见Gromacs用户手册)
rcoulomb–指定库仑力阈值vdwtype–告诉Gromacs如何计算范德华作用(cut-off, Shift等)
rvdw–指定LJ或Buckingham势能距离阈值 EM Stuff
emtol–最大的力如果小于此值则能量最小化收敛(结束)(单位kJ mol–1 nm–1)
emstep–初始步长(nm)

5.用grompp程序进行文件处理

gmx grompp -f em.mdp -c ${pdbid}_solvate.gro -p topol.top -o next.tpr -maxwarn 1

(1)-f标签指定输入参数文件(.mdp)
(2)-c输入结构文件(pdb文件,
.pdb)
(3)-p输入拓扑文件
(4)-o输出mdrun的输入文件(*.tpr)
(5)topol.top拓扑文件内容:参考GROMACS教程1:Lysozyme

nr:原子序号type:残基序号
residue:残基名称(注意PDB文件中残基名称是“LYS”;.rtp文件中的“LYSH”表明残基被质子化)
atom:原子名称
cgnr:电荷分组序号(charge group定义了整数电荷的单元,对加速计算有利)
charge:原子电荷(“qtot”是分子上电荷的总和)
mass:原子质量typeB、chargeB、massB:用于计算自由能微扰
; Include forcefield parameters
#include "charmm27.ff/forcefield.itp"[ moleculetype ]
; Name            nrexcl
Protein_chain_A     3[ atoms ]
;   nr       type  resnr residue  atom   cgnr     charge       mass  typeB    chargeB      massB
; residue   1 GLY rtp GLY  q +1.01        NH3      1    GLY      N      1       -0.3     14.0072         HC      1    GLY     H1      2       0.33      1.0083         HC      1    GLY     H2      3       0.33      1.0084         HC      1    GLY     H3      4       0.33      1.0085        CT2      1    GLY     CA      5       0.13     12.0116         HB      1    GLY    HA1      6       0.09      1.0087         HB      1    GLY    HA2      7       0.09      1.0088          C      1    GLY      C      8       0.51     12.0119          O      1    GLY      O      9      -0.51     15.999   ; qtot (6)grompp的作用是运行坐标文件和拓扑文件,生成原子级别的输入文件(.tpr)。.tpr文件包含了体系中所有原子的参数。
(7)为了通过grompp生成.tpr文件,这里需要一个额外的.mdp输入文件(molecular dynamics parameter,检查mdp);grompp会收集.mdp文件中的坐标和拓扑信息来生成.tpr文件。

6.使用genion和tpr文件添加离子

gmx genion -s next.tpr -o ${pdbid}_solv_ions.gro -p topol.top -pname NA -nname CL -neutral

(1)对生成的tpr文件加入补偿离子以中和系统中的净电荷。
(2)-nname指定阴离子名称(在Gromos G43a1力场中,用CL-表示氯离子。参见ions.itp查看wrt力场中离子详细信息)
(3)-nn是指定加入的阴离子数目
(4)-g输出genion的log文件
(5)运行这个命令时,提示提供一个连续的溶剂组,应该是组12(SOL)。输入12,回车。程序会告知你有两个溶剂分子被氯离子代替
(6)添加离子的工具是genion模块。该模块会通读拓扑文件并以用户指定的离子代替水分子。
(7)输入文件即所谓的运行文件(run input file),文件后缀为.tpr;这个文件是通过grompp模块生成的,在后面运行第一次模拟的时候还会用到这个模块。
(8)在genion命令中,需要提供结构/状态文件(-s)作为输入文件,生成输出文件.gro (-o),处理拓扑文件(-p)反映替换掉的水分子和添加的离子,定义正负离子的名字(-pname和-nname),然后告诉genion添加中和体系电荷的正/负离子以及离子个数
(9)可以通过指定-neutral和-conc让genion添加固定浓度的离子而不是单单中和体系。可以参考genion的主页查看相关信息。-conc 0.15 浓度为0.15 M
(10)在之前的GROMACS版本中通过-pname和-nname指定的离子是力场规定的,但在4.5版本中则进行了标准化。规定的离子名称通常是大写的元素符号,并在[ molecules ]中命名然后写到拓扑文件中。根据不同的力场,残基名或者原子名可能带有+/-号,也可能不带。在genion命令中不要用原子或者残基名,否则在接下来的步骤中会遇到很多错误。

7.在进行动力学模拟之前,我们必须保证体系没有空间上的冲突或者不合理的构象。体系结构松弛是通过所谓的能量最小化(EM)实现的。
8.EM的过程与添加离子类似。我们再次利用grompp把体系结构、拓扑文件以及模拟参数集合到.tpr文件中,但是这次不是把.tpr文件传递给genion,而是通过mdrun运行能量最小化。
9.在运行genbox和genion时确保你已经更新了topol.top文件,否则会出现一大堆错误信息("number of coordinates in coordinate file does not match topology,“等)。
10.-v是给没有耐心等待的人设计的:它会让mdrun的输出变得冗长,每一步都会把过程输出到屏幕上。-deffnm用来定义输入和输出文件的名字。所以,如果你没有命名grompp输出文件"em.tpr”,你必须使用mdrun -s精确指定文件名。在本例中,我们会得到如下文件:
em.log:EM过程的ASCII码log文件
em.edr:二进制的能量文件
em.trr:二进制的全精度坐标文件
em.gro:能力最小化之后的结构
11.第一个是势能(potential energy,EM进程最后会输出)。Epot应该是负的,而且对于一个水中的简单的蛋白质体系来说处于105-106范围???,具体数值依赖于体系大小和水分子数目。第二个重要特征是最大作用力Fmax,收敛值是在minim.mdp中设置的——“emtol=1000.0”,意思是目标Fmax的值要低于1000KJ/(mol nm)。有时Fmax>emtol时Epot也可能处于合理范围,但是此时体系并没有完全稳定。此时应该评估为什么会出现这个现象,试着改变最小化参数(integrator、emstep等)。

这篇关于gromacs学习及使用(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/442684

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他