Gromacs软件进行蛋白-配体体系MD模拟

2024-05-02 13:44

本文主要是介绍Gromacs软件进行蛋白-配体体系MD模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、进行能量最小化

下载官方提供的参数文件:em.mdp ,或者直接复制这里:

; LINES STARTING WITH ';' ARE COMMENTS
title		    = Minimization	; Title of run; Parameters describing what to do, when to stop and what to save
integrator	    = steep		; Algorithm (steep = steepest descent minimization)
emtol		    = 1000.0  	; Stop minimization when the maximum force < 10.0 kJ/mol
emstep          = 0.01      ; Energy step size
nsteps		    = 50000	  	; Maximum number of (minimization) steps to perform; Parameters describing how to find the neighbors of each atom and how to calculate the interactions
nstlist		    = 1		        ; Frequency to update the neighbor list and long range forces
cutoff-scheme   = Verlet
ns_type		    = grid		    ; Method to determine neighbor list (simple, grid)
rlist		    = 1.2		    ; Cut-off for making neighbor list (short range forces)
coulombtype	    = PME		    ; Treatment of long range electrostatic interactions
rcoulomb	    = 1.2		    ; long range electrostatic cut-off
vdwtype         = cutoff
vdw-modifier    = force-switch
rvdw-switch     = 1.0
rvdw		    = 1.2		    ; long range Van der Waals cut-off
pbc             = xyz 		    ; Periodic Boundary Conditions
DispCorr        = no

 mdp文件里分3个区块,标题、模拟的步数怎么跑和原子之间相互作用力设置的有关参数。

例如模拟的步数怎么跑里的设置:能量下降的积分算法用最陡下降最小化。体系中最大能量达到1000停止最小化。每步下降能量大小是0.01以及最大的步数设置为50000。

gmx grompp -f em.mdp -c solv_ions.gro -p topol.top -o em.tpr

先编译执行文件tpr,然后调用mdrun执行能量最小化:

gmx mdrun -v -deffnm em
#-v 将详细内容输出到终端
#-deffnm em 指定输出和输入文件名都叫em

 查看输出的结果:

Steepest Descents converged to Fmax < 1000 in 143 steps
Potential Energy  = -4.9014547e+05
Maximum force     =  8.7411469e+02 on atom 27
Norm of force     =  5.6676244e+01

输出的结果上看,算法在第143步就实现体系中最大能量小于1000,然后结束最小化。这里的力是指原子在原位上受到的键作用力和非键作用力的总和。

这里的Maximum force=800 on atom 27说明体系中有最大能量是27号原子。

2、完成能量最小化后,建立一个需要限制的配体原子的信息的文件。

我的配体的gro文件是ligand.gro,在命令行输入:

gmx make_ndx -f ligand.gro -o index_ligand.ndx #进入交互界面> 0 & ! a H* #选择0的system中全部非H原子> q #退出

index_ligand.ndx文件内容入下,就是配体原子的原子数据索引:

[ System ] #整个系统的配体原子序号(索引)1    2    3    4    5    6    7    8    9   10   11   12   13   14   1516   17   18   19   20   21   22   23   24   25   26   27   28   29   3031   32   33
......
[ System_&_!H* ] #选出的要限制的非H配体原子序号(索引)1    2    3    4    5    6    7    8    9   10   11   12   14   15   1617   18   19   20   21   22   23   24

建立对选出的非H原子带有限制力信息的itp文件(拓扑文件)

gmx genrestr -f ligand.gro -n index_ligand.ndx -o posre_ligand.itp -fc 1000 1000 1000
#生产出itp拓扑文件,-fc指出限制力,对ndx里的选出的非H原子用在笛卡尔坐标中各个轴用1000的力栓住
#该命令会进入交互界面
#选出要限制的原子就是了

 在topol文件里加入导入限制力参数posre_l.itp文件的命令:

3、进行温度耦合

温度耦合就是对原先没有温度概念的系统附加上温度。对每种分子类型和它自己的恒温基团耦合是一个坏主意。Gromacs的恒温器不适合对小分子单独进行耦合

 因为gmx的温度耦合算法不稳定,少量原子组成的组别单独进行单独进行耦合,动能波动会很大,会导致体系的崩溃。例如教程里提到的,如果在nvt.mdp里设置温度耦合的组别是这样:

tc-grps = Protein JZ4 SOL CL

SOL是水,Protein是蛋白,这两的原子数目量多(超过1000),单独进行温度耦合是不会有动能波动大的问题的。但是离子Cl-和配体JZ4,体系里CL只有6个,JZ4是22个(教程中的数据),原子数目完全不是体系中蛋白和水分子在一个量级。不能单独进行温度耦合。

JZ4是配体,和蛋白挨得很近,可以将其视为一个整体进行温度耦合,离子则是苟在水分子群里,可以和所有水分子组成一个整体进行耦合。典型的tc-grps设置是:

tc-grps=Protein Non-Protein  #典型的设置

现在就是要把配体和蛋白整合为Protein,水和离子整合为Non-Protein。

首先,采用make_ndx模块将蛋白质和配体的index抽出,做为一个区块[Protein_JZ4],这个名字是默认的,输出到文件index.ndx里。这个区块的名字要记住,可以在输出的index.ndx里看到。

gmx make_ndx -f em.gro -o index.ndx
.......  #下面是选项0 System              : 33506 atoms1 Protein             :  2614 atoms
......13 JZ4                 :    22 atoms
......21 Water_and_ions      : 30870 atoms> 1 | 13 #这里选中蛋白和配体, 这里已经存在water_and_ions,就不需要再抽出index。
> q

在我的index.ndx文件里存在water_and_ions:

同时也存在蛋白和配体的组和(我的配体是分子名叫MOL,不是JZ4):

下载官方的nvt.mdp文件,或者使用下面的:

注意mdp里的这个设置,要根据自己体系的分子名进行调整:

tc-grps=Protein_JZ4 Water_and_ions  #这是这个体系的设置,修改在nvt.mdp里

nvt.mdp文件: 

title                   = Protein-ligand complex NVT equilibration 
define                  = -DPOSRES  ; position restrain the protein and ligand
; Run parameters
integrator              = md        ; leap-frog integrator
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstenergy               = 500   ; save energies every 1.0 ps
nstlog                  = 500   ; update log file every 1.0 ps
nstxout-compressed      = 500   ; save coordinates every 1.0 ps
; Bond parameters
continuation            = no        ; first dynamics run
constraint_algorithm    = lincs     ; holonomic constraints 
constraints             = h-bonds   ; bonds to H are constrained 
lincs_iter              = 1         ; accuracy of LINCS
lincs_order             = 4         ; also related to accuracy
; Neighbor searching and vdW
cutoff-scheme           = Verlet
ns_type                 = grid      ; search neighboring grid cells
nstlist                 = 20        ; largely irrelevant with Verlet
rlist                   = 1.2
vdwtype                 = cutoff
vdw-modifier            = force-switch
rvdw-switch             = 1.0
rvdw                    = 1.2       ; short-range van der Waals cutoff (in nm)
; Electrostatics
coulombtype             = PME       ; Particle Mesh Ewald for long-range electrostatics
rcoulomb                = 1.2       ; short-range electrostatic cutoff (in nm)
pme_order               = 4         ; cubic interpolation
fourierspacing          = 0.16      ; grid spacing for FFT
; Temperature coupling
tcoupl                  = V-rescale                     ; modified Berendsen thermostat
tc-grps                 = Protein_JZ4 Water_and_ions    ; two coupling groups - more accurate
tau_t                   = 0.1   0.1                     ; time constant, in ps
ref_t                   = 300   300                     ; reference temperature, one for each group, in K
; Pressure coupling
pcoupl                  = no        ; no pressure coupling in NVT
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
; Dispersion correction is not used for proteins with the C36 additive FF
DispCorr                = no 
; Velocity generation
gen_vel                 = yes       ; assign velocities from Maxwell distribution
gen_temp                = 300       ; temperature for Maxwell distribution
gen_seed                = -1        ; generate a random seed

 运行nvt模拟:

#生成执行文件tpr:
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -n index.ndx -o nvt.tpr#-n参数指定index文件,里面是
gmx mdrun -deffnm nvt

4、进行压力耦合

下载官方的参数文件npt.mdp,注意修改里面的tc-grps参数,然后运行模拟:

gmx grompp -f npt.mdp -c nvt.gro -t nvt.cpt -r nvt.gro -p topol.top -n index.ndx -o npt.tpr
gmx mdrun -deffnm npt

5、成品模拟:

经过温度耦合和压力耦合后,体系达到预期的室温和常压条件(旧制条件),即是温度在25°C,298.15K,压强在1.01bar,101.325kPa条件。

下载官方提供的md.mpt文件,可以进行成品模拟:

注意在这个md.mpt文件里是没有限制力参数的,没有下面这段参数:

define = -DPOSRES  ; position restrain the protein and ligand

 这个参数是出现在nvt和npt模拟中,表示使用拓扑文件中的这个函数,对配体进行位置约束:

; Ligand position restraints
#ifdef POSRES   #函数名是POSRES,mdp里就是DPOSRES,前面多个D
#include "posre_jz4.itp"
#endif

另外,教程里的拓扑topol里还有水分子的位置限制参数,如下:

#ifdef POSRES_WATER
; Position restraint for each water oxygen
[ position_restraints ]
;  i funct       fcx        fcy        fcz1    1       1000       1000       1000
#endif

但是mdp文件并没有define=-DPOSRES_WATER的参数。 

运行没有约束的成品10ns模拟:

gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -n index.ndx -o md_0_10.tpr
gmx mdrun -deffnm md_0_10

 参考:

Protein-Ligand Complex (mdtutorials.com)

关于.mdp文件中的DPOSRES的问题 - 分子模拟 (Molecular Modeling) - 计算化学公社 (keinsci.com)

GROMACS中文手册:第三章 算法|Jerkwin

这篇关于Gromacs软件进行蛋白-配体体系MD模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配