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

相关文章

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前