用gromacs搭建蛋白分子层,并制作相应的top和索引文件

用gromacs制作分子层,并进行之后的nvt模拟。

在这里已经制作了能量收敛的水分子层,现在我们需要在合适的位置加上蛋白质盖子。

融合蛋白质层和水分子层

这里用gromacs搭建,原理是将水做为原始蛋白然后插入一层下蛋白,然后再将这个结构插入一层上蛋白,蛋白分子是用packmol搭建的仿真盒子,大小是55立方A°,packmol的单位是A°,而gromacs是纳米,转换的时候一定要注意。

gmx insert-molecules -f water_test_npt_after_center.gro -ip position.dat -ci downlevel.gro -o down_water.gro -rot none

首先要将water_test_npt.gro文件中的仿真盒子z轴改为这里我其实是将之前的算出来的water_test_npt.gro文件做了居中,其实后来经过测试这里不居中也是可以的,修改成20.3nm,为了后面能放的下蛋白,这里可以改大一些,但是不能改小,否则蛋白放不进去。当然所有的蛋白经过packmol生成后也都居中了,但是后来的插入位置根据居中的坐标计算不符合理论,所以插入的位置还是手工试一试就出来了。

然后居中

gmx editconf -f water_test_npt.gro -o water_test_npt_after_center.gro

准备蛋白层gro文件

uplevel和downlevel分别是上下两层的蛋白,结构是一样的,都是两个chain_A两个chain_B.

gmx pdb2gmx -f downlevel.pdb -o downlevel.gro -p downlevel.top -i downlevel.itp -water spc -ignh
gmx pdb2gmx -f uplevel.pdb -o uplevel.gro -p uplevel.top -i uplevel.itp -water spc -ignh

我们一会儿要以生成的top为依据制作总的top。

然后就要添加蛋白层了
首先加下层

gmx insert-molecules -f water_test_npt_after_center.gro -ip position.dat -ci downlevel.gro -o down_water.gro -rot none

这个-rot none一定要加,否则结构不正确
然后加上层

gmx insert-molecules -f down_water_center.gro -ip position2.dat -ci uplevel.gro -o all_water.gro -rot none

两个position是有特定要求的,太远了达不到目的,太近了无法添加进去

position.dat

0 0 -5.45

这里生成水层和单层蛋白层的结构之后,要居中一下结构,然后才可以输入正值坐标,否则加不下

gmx editconf -f down_water.gro -o down_water_center.gro

position2.dat

0 0 5.75

然后就成功生成最终的模拟蛋白了
用gromacs搭建蛋白分子层,并制作相应的top和索引文件_第1张图片
用gromacs搭建蛋白分子层,并制作相应的top和索引文件_第2张图片
用gromacs搭建蛋白分子层,并制作相应的top和索引文件_第3张图片
可以看到避免了那种成H键的情况。
那么我们就得到了最终用于模拟的gro文件。可以在这里下载。

制作对于top

需要结合上面生成的两个uplevel.top和downlevel.top。
all_water.top

#include "oplsaa.ff/forcefield.itp"
#include "oplsaa.ff/spce.itp"
#include "oplsaa.ff/ions.itp"
#include "uplevel_Protein_chain_A.itp"
#include "uplevel_Protein_chain_B.itp"
#include "uplevel_Protein_chain_C.itp"
#include "uplevel_Protein_chain_D.itp"
#include "downlevel_Protein_chain_A.itp"
#include "downlevel_Protein_chain_B.itp"
#include "downlevel_Protein_chain_C.itp"
#include "downlevel_Protein_chain_D.itp"

[ system ]
; Name
system

[ molecules ]
; Compound             #mols

SOL         7396
uplevel_Protein_chain_A     1
uplevel_Protein_chain_B     1
uplevel_Protein_chain_C     1
uplevel_Protein_chain_D     1
downlevel_Protein_chain_A     1
downlevel_Protein_chain_B     1
downlevel_Protein_chain_C     1
downlevel_Protein_chain_D     1

为了让gro和top中的原子不被报错do not match,还需要更改uplevel_Proein_A,uplevel_Proein_B.itp等一共8个.itp文件中的分子名称。
这里仅以uplevel_Proein_A.itp为例

[ moleculetype ]
; Name            nrexcl
uplevel_Protein_chain_A     3

要将默认的Proein_chain_A前面加个前缀。
然后就可以使用top文件了。

制作索引文件

索引文件就是说,告诉gromacs,那些原子对应哪一类,因为后面在nvt平衡的过程中希望冻结蛋白层(主要是希望水分子不会溢出,并且现在蛋白上有极性),所以首先要计算出原子总数。

打开uplevel.gro,左上角就原子总数为25918,然后打开downlevel.gro,同理25918,再看all_water.top,有7396个sol,所以总原子数为:

Γ ( z ) = 25918 + 25918 + 7396 ∗ 3 = 74024 \Gamma(z) = 25918+25918+7396*3= 74024 Γ(z)=25918+25918+73963=74024
接下来就要给根据top中的分子顺序给原子分类了。

使用gromacs的make_ndx制作索引文件

gmx make_ndx -f all_water.gro -o all_water.ndx

随后根据gromacs的提示依次选择

system
name
q

这样就完成索引文件的制作了。

模拟最终结构

我们制作索引文件目的是在最后一步nvt模拟中冻结蛋白质夹层,即首先重新建立一个nvt.mdp文件

; Run Control
integrator = md  ; leap-frog integrator of Newton's equations of motion
tinit  = 0  ; [ps] starting time for the run
dt  = 0.002  ; 2 fs - [ps] time step for integration
nsteps  = 50000 ; 0.1 ns

; Output Control
nstxout  = 1000  ; save coordinates every 2 ps
nstenergy = 500  ; save energies every 1 ps
nstlog  = 50000  ; update log file every 100 ps

; Bond parameters
continuation    = no  ; apply constraints to the start configuration and reset shells
constraints     = h-bonds ; convert all bonds to constraints
constraint-algorithm = lincs ; holonomic constraints 

; Neighbor searching and nonbonded interactions
cutoff-scheme = verlet ; Cutoff-related parameters
nstlist  = 20  ; Frequency to update the neighbor list and the long-range forces
ns_type  = grid  ; Method to determine neighbor list (simple, grid)
pbc  = xy  ; Use periodic boundary conditions in all directions
rlist  = 1.2  ; [nm] Cut-off for making neighbor list (short range forces)
ewald-geometry  = 3dc
nwall           = 2
wall-atomtype   = MW MW
wall-type       = 12-6

; Electrostatics
coulombtype = PME  ; Treatment of long range electrostatic interactions
rcoulomb = 0.9  ; [nm] Short-range electrostatic cut-off

; Van der waals
vdwtype  = cutoff
rvdw  = 0.9  ; [nm] Short-range Van der Waals cut-off

;                    Do I need pme-order and fourier spacing?

;pme_order = 4  ; cubic interpolation
;fourierspacing = 0.16  ; grid spacing for FFT

; Temperature coupling
tcoupl  = v-rescale ; Temperature coupling, modified Berendsen thermostat‬
tc_grps         = system ; Group to couple to separate temperature baths
tau_t           = 0.1  ; [ps] Time constant for coupling
ref_t           = 300  ; [K] Reference temperature for coupling

; Pressure coupling is off for NVT
Pcoupl          = No  ; No pressure coupling (fixed box size)

; Generate velocities to start
gen_vel  = yes  ; assign velocities from Maxwell distribution
gen_temp = 300  ; temperature for Maxwell distribution
gen_seed = -1  ; generate a random seed

; Freeze Sheets
;freezegrps      = Backbone     ;freezing the protein, so limit the water
;freezedim       = Y Y Y

注重看到

;freezegrps      = Backbone     ;freezing the protein, so limit the water
;freezedim       = Y Y Y

这里backbone是蛋白质夹层对应的分组,下一行的意义是冻结它。

随后输入

gmx grompp -f nvt.mdp -c all_water.gro -p all_water.top -n all_water.ndx -o fd_nvt.tpr -maxwarn 1
gmx mdrun -v -deffnm fd_nvt

有一个警告目的是忽略体系中的电荷不平衡,还会提示提升cutoff截止值,这个只是和精度有关,可以忽略。

这里有可能会报错初始能量太大,这个解决办法可以看我的其他文章。

你可能感兴趣的:(分子动力学仿真,gromacs,c语言,linux,ubuntu)