案例一 水中溶菌酶
这个示例将指导新用户完成设置模拟系统的过程,该系统在一盒水中含有蛋白质 (溶菌酶) 和离子。每个步骤都将包含输入和输出的说明,使用一般使用的典型设置。
整个教程的步骤如下: 
准备拓扑
准备蛋白质
在模拟开始前下载大分子pdb文件,通常是在RCSB数据库官网下载,在本教程中,我们将使用鸡蛋清溶菌酶(PDB 代码1AKI)
下载结构后,使用 VMD、Chimera、PyMOL 等查看程序可视化结构并处理大分子文件,删除水分子(PDB 文件中的 HOH),请使用 vim(Linux/Mac) 或记事本 (Windows) 等纯文本编辑器,这里推荐统一使用VScode,配置工作路径和gmx插件后使用。使用Pymol等软件去水同样可以。
并不是每次都要去水(例如有紧密结合或其他功能性活性位点水分子的情况),本案例中不需要水分子。
生成拓扑
完成水分子去除后,PDB文件应该只包含蛋白质原子,使用 pdb2gmx 模块构建拓扑(默认为 topol.top),文件中记载了仿真中定义分子所需的所有信息。此信息包括非键合参数(原子类型和电荷)以及键合参数(键、角度和二面体)。
使用以下命令选择力场,构建蛋白质拓扑:
gmx pdb2gmx -f 1AKI_clean.pdb -o 1AKI_processed.gro -water spce在本教程中我们将使用全原子OPLS力场,因此在命令提示符下键入15:
Select the Force Field:
From '/usr/local/gromacs/share/gromacs/top':
1: AMBER03 protein, nucleic AMBER94 (Duan et al., J. Comp. Chem. 24, 1999-2012, 2003)
2: AMBER94 force field (Cornell et al., JACS 117, 5179-5197, 1995)
3: AMBER96 protein, nucleic AMBER94 (Kollman et al., Acc. Chem. Res. 29, 461-469, 1996)
4: AMBER99 protein, nucleic AMBER94 (Wang et al., J. Comp. Chem. 21, 1049-1074, 2000)
5: AMBER99SB protein, nucleic AMBER94 (Hornak et al., Proteins 65, 712-725, 2006)
6: AMBER99SB-ILDN protein, nucleic AMBER94 (Lindorff-Larsen et al., Proteins 78, 1950-58, 2010)
7: AMBERGS force field (Garcia & Sanbonmatsu, PNAS 99, 2782-2787, 2002)
8: CHARMM27 all-atom force field (CHARM22 plus CMAP for proteins)
9: GROMOS96 43a1 force field
10: GROMOS96 43a2 force field (improved alkane dihedrals)
11: GROMOS96 45a3 force field (Schuler JCC 2001 22 1205)
12: GROMOS96 53a5 force field (JCC 2004 vol 25 pag 1656)
13: GROMOS96 53a6 force field (JCC 2004 vol 25 pag 1656)
14: GROMOS96 54a7 force field (Eur. Biophys. J. (2011), 40,, 843-856, DOI: 10.1007/s00249-011-0700-9)
15: OPLS-AA/L all-atom force field (2001 aminoacid dihedrals)。程序运行结束会输出体系的信息,这里会看到Total charge in system x.000 e的提示,说明体系电荷不为零,需要在后续的溶剂化过程中为其添加抗衡离子。
There are 5187 dihedrals, 426 impropers, 3547 angles
5106 pairs, 1984 bonds and 0 virtual sites
Total mass 14313.193 a.m.u.
Total charge 8.000 e程序运行完成后会生成如下三个文件,1AKI_processed.gro 是一个 GROMACS 格式的结构文件,其中包含力场中定义的所有原子(完成加氢),topol.top 文件是系统拓扑,posre.itp 文件包含用于约束重原子位置的信息。
dir/
├── posre.itp # 蛋白的位置限制文件
├── 1AKI_processed.gro # 蛋白gro文件
└── topol.top # 体系拓扑文件GROMACS 可以处理许多不同的文件格式,.gro 只是写入坐标文件命令的默认值,也可以指定程序输出 .pdb 文件。
检查拓扑
topol.top
输出拓扑 topol.top 文件可以使用纯文本编辑器打开,其中的;符号表示为注释行。第一行行引用了 OPLS-AA 力场,表示所有后续参数都来自此力场。
#include "oplsaa.ff/forcefield.itp"随后是[ moleculetype ]行,定义了分子名称Protein_A,nrexcl决定了相隔多少个键以内的原子不参与计算非键相互作用:
[ moleculetype ]
; Name nrexcl
Protein_A 3随后是蛋白的详细信息: atoms(原子)、bonds(化学键)、pairs(非键相互作用)、angles(键角)、dihedrals(二面角)以及末尾的蛋白约束:
; Include Position restraint file
#ifdef POSRES
#include "posre.itp"
#endifposre.itp 是位置限制文件,由 pdb2gmx 生成,它定义了一个力常数,用于在平衡过程中将原子保持在原位。它在文件中通过ifdef预编译选项引入,在后续的mdp文件中使用参数选择开启位置限制势。
示例:
[ position_restraints ]
; atom type fx fy fz
1 1 1000 1000 1000
5 1 1000 1000 1000
7 1 1000 1000 1000
10 1 1000 1000 1000
13 1 1000 1000 1000随后是溶剂组分的描述信息,在本例中是 SPC/E 水模型,水分子也可以使用力常数进行位置约束:
; Include water topology
#include "oplsaa.ff/spce.itp"
#ifdef POSRES_WATER
; Position restraint for each water oxygen
[ position_restraints ]
; i funct fcx fcy fcz
1 1 1000 1000 1000
#endif接下来是离子组分的参数信息:
; Include generic topology for ions
#include "oplsaa.ff/ions.itp"[ system ]是系统标题,表示输出文件的系统的名称(可随意设置);最后的[ molecules ]块列出了系统中的所有分子:
[ system ]
; Name
LYSOZYME
[ molecules ]
; Compound #mols
Protein_A 1关于该指令的一些关键说明:
- 列出的分子的顺序必须与坐标文件(
.gro)中的分子顺序完全匹配。 - 列出的名称必须与每个物种的名称相匹配。
topol.top文件是gmx程序最终输入的文件,其中的#include将被线性展开,展开后的文件须遵循一定的标签顺序,主要的注意点是,[atomtypes]标签必须在所有组分最前面,而[ system ]和[ molecules ]在文件最末尾。
溶剂化
本案例中我们将模拟一个简单的水性系统,动力学模拟时需要设置合适的盒子大小,整个系统的计算将在该范围内完成。
设置盒子
本例使用一个简单的立方框作为基本单元,它的体积计算最为简单,此外还可以选择菱形十二面体盒子,它的体积是相同周期距离的立方框的71%,空间利用度高,从而节提升了计算效率。
定义盒子并在其中填充溶剂有两个步骤:
- 使用
editconf模块定义盒子尺寸 - 使用
solvate模块将盒子装满水。
输入如下命令生成盒子:
gmx editconf -f 1AKI_processed.gro -o 1AKI_newbox.gro -c -d 1.0 -bt cubic溶剂化
使用如下命令为刚刚生成的盒子中添加溶剂分子:
gmx solvate -cp 1AKI_newbox.gro -cs spc216.gro -o 1AKI_solv.gro -p topol.top我们使用的是spc216.gro,这是一个通用的平衡 3 点溶剂模型。这里还可以使用spc216.gro作为 SPC、SPC/E 或 TIP3P 水的溶剂配置,因为它们都是三点水模型。程序会得到一个名为1AKI_solv.gro的文件。
观察到 topol.top 文件的末尾会出现如下行,这是gmx程序成功添加了10644个水分子,如果使用的是其他溶剂,则需要手动修改该文件:
[ molecules ]
; Compound #mols
Protein_A 1
SOL 10644添加离子
我们现在有一个包含带电蛋白质的溶剂化系统。上文中的 pdb2gmx 输出提示我们,该蛋白质的净电荷为 +8e(基于其氨基酸组成),由于生命不以净电荷存在,因此我们必须将离子添加到我们的系统中。
构建下列ions.mdp文件:
; ions.mdp - used as input into grompp to generate ions.tpr
; 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 < 1000.0 kJ/mol/nm
emstep = 0.01 ; Minimization 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 ; Buffered neighbor searching
ns_type = grid ; Method to determine neighbor list (simple, grid)
coulombtype = cutoff ; Treatment of long range electrostatic interactions
rcoulomb = 1.0 ; Short-range electrostatic cut-off
rvdw = 1.0 ; Short-range Van der Waals cut-off
pbc = xyz ; Periodic Boundary Conditions in all 3 dimensions输入以下命令使用grompp生成tpr文件:
gmx grompp -f ions.mdp -c 1AKI_solv.gro -p topol.top -o ions.tpr最后使用genion模块为体系加离子,使得整个体系变为电中性:
gmx genion -s ions.tpr -o 1AKI_solv_ions.gro -p topol.top -pname NA -nname CL -neutral程序会提示选择哪个分组来添加离子,选择索引组 SOL (13) 进行嵌入离子,合理的情况应该是替换溶剂分子,而不是选择蛋白或小分子,因为这样会破坏其分子结构:
此时的topol.top文件的[ molecules ]块末尾应增加如下行,同时SOL减少了8个分子:
[ molecules ]
; Compound #mols
Protein_A 1
SOL 10636
CL 8此时的1AKI_solv_ions.gro文件如下: 
能量最小化
溶剂化的电中性系统现已组装完成,在开始动力学之前,我们必须确保系统没有空间冲突或不适当的几何结构,该结构通过称为能量最小化的过程而松弛。
能量最小化的过程和离子添加很相似,使用 grompp 将结构、拓扑和仿真参数组装成二进制输入文件 (.tpr),随后使用 mdrun 运行能量最小化。
新建以下内容的em.mdp文件:
; minim.mdp - used as input into grompp to generate em.tpr
; 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 < 1000.0 kJ/mol/nm
emstep = 0.01 ; Minimization 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 ; Buffered neighbor searching
ns_type = grid ; Method to determine neighbor list (simple, grid)
coulombtype = PME ; Treatment of long range electrostatic interactions
rcoulomb = 1.0 ; Short-range electrostatic cut-off
rvdw = 1.0 ; Short-range Van der Waals cut-off
pbc = xyz ; Periodic Boundary Conditions in all 3 dimensions使用以下输入参数文件通过 grompp 组装二进制输入:
gmx grompp -f em.mdp -c 1AKI_solv_ions.gro -p topol.top -o em.tpr调用 mdrun 来执行能量最小化:
gmx mdrun -v -deffnm em-v 参数可以输出 mdrun 的每一步的进度,-deffnm 为将定义输入和输出的文件名。运行完成后会得到以下文件:
dir/
├── em.log # 能量最小化进程ASCII文本日志文件
├── em.edr # 二进制能量数据文件
├── em.trr # 二进制全精度轨迹文件
└── em.gro # 能量最小化完成后结构文件输出的em.edr 文件中包含 GROMACS 在能量最小化期间收集的所有能量项,使用如下命令分析 .edr 文件:
gmx energy -f em.edr -o potential.xvg在提示符下,键入 10 0 以选择 Potential (10),程序会输出势能的平均值,并生成一个名为 potential.xvg 的文件,生成的图像可以展示势能的稳定的收敛:
Energy Average Err.Est. RMSD Tot-Drift
-------------------------------------------------------------------------------
Potential -564975 11000 28494.8 -74448.5 (kJ/mol)
现在我们的系统处于能量最低水平,随后开始动力学模拟部分。
平衡
能量最小化确保我们在几何形状和溶剂取向方面具有合理的起始结构,而在动力学开始前必须平衡蛋白质周围的溶剂和离子,平衡通常分NVT和NPT两个阶段进行。
上文 pdb2gmx 生成的 posre.itp 文件的目的是对蛋白质的重原子施加位置应变力,允许其移动,但需要克服大量的能量损失。这样一来,我们可以平衡蛋白质周围的溶剂,而不会轻易改变蛋白质结构,相当于固定了某些部分。
温度平衡 NVT
第一阶段在 NVT 系综(恒定的粒子数、体积和温度)下进行。在 NVT 后,系统的温度应该达到所需值左右,如果温度尚未稳定,则需要增加平衡的时间。通常NVT平衡需要50-100 ps 左右,本例将设置 100 ps 的 NVT 平衡。
构建下列nvt.mdp文件:
title = OPLS Lysozyme NVT equilibration
define = -DPOSRES ; position restrain the protein
; Run parameters
integrator = md ; leap-frog integrator
nsteps = 50000 ; 2 * 50000 = 100 ps
dt = 0.002 ; 2 fs
; Output control
nstxout = 500 ; save coordinates every 1.0 ps
nstvout = 500 ; save velocities every 1.0 ps
nstenergy = 500 ; save energies every 1.0 ps
nstlog = 500 ; update log file every 1.0 ps
; Bond parameters
continuation = no ; first dynamics run
constraint_algorithm = lincs ; holonomic constraints
constraints = h-bonds ; bonds involving H are constrained
lincs_iter = 1 ; accuracy of LINCS
lincs_order = 4 ; also related to accuracy
; Nonbonded settings
cutoff-scheme = Verlet ; Buffered neighbor searching
ns_type = grid ; search neighboring grid cells
nstlist = 10 ; 20 fs, largely irrelevant with Verlet
rcoulomb = 1.0 ; short-range electrostatic cutoff (in nm)
rvdw = 1.0 ; short-range van der Waals cutoff (in nm)
DispCorr = EnerPres ; account for cut-off vdW scheme
; Electrostatics
coulombtype = PME ; Particle Mesh Ewald for long-range electrostatics
pme_order = 4 ; cubic interpolation
fourierspacing = 0.16 ; grid spacing for FFT
; Temperature coupling is on
tcoupl = V-rescale ; modified Berendsen thermostat
tc-grps = Protein Non-Protein ; 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 is off
pcoupl = no ; no pressure coupling in NVT
; Periodic boundary conditions
pbc = xyz ; 3-D PBC
; 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 -o nvt.tpr开始NVT平衡:
gmx mdrun -deffnm nvt使用下列命令绘图,在提示符下键入 "16 0" Temperature ,生成体系时间-温度的曲线,如下所示:
gmx energy -f nvt.edr -o temperature.xvg
从图中可以清楚地看出,系统的温度很快达到目标值 (300 K),并且在平衡的剩余时间内保持稳定。对于该系统,较短的平衡期(大约 50 ps)可能就足够了。
压力平衡 NPT
上一步 NVT 平衡稳定了系统的温度,下一步开始稳定系统的压力(以及密度)。压力平衡在 NPT 系综下进行,其中粒子数、压力和温度都是恒定的。
构建下列 .mdp 文件:
title = OPLS Lysozyme NPT equilibration
define = -DPOSRES ; position restrain the protein
; Run parameters
integrator = md ; leap-frog integrator
nsteps = 50000 ; 2 * 50000 = 100 ps
dt = 0.002 ; 2 fs
; Output control
nstxout = 500 ; save coordinates every 1.0 ps
nstvout = 500 ; save velocities every 1.0 ps
nstenergy = 500 ; save energies every 1.0 ps
nstlog = 500 ; update log file every 1.0 ps
; Bond parameters
continuation = yes ; Restarting after NVT
constraint_algorithm = lincs ; holonomic constraints
constraints = h-bonds ; bonds involving H are constrained
lincs_iter = 1 ; accuracy of LINCS
lincs_order = 4 ; also related to accuracy
; Nonbonded settings
cutoff-scheme = Verlet ; Buffered neighbor searching
ns_type = grid ; search neighboring grid cells
nstlist = 10 ; 20 fs, largely irrelevant with Verlet scheme
rcoulomb = 1.0 ; short-range electrostatic cutoff (in nm)
rvdw = 1.0 ; short-range van der Waals cutoff (in nm)
DispCorr = EnerPres ; account for cut-off vdW scheme
; Electrostatics
coulombtype = PME ; Particle Mesh Ewald for long-range electrostatics
pme_order = 4 ; cubic interpolation
fourierspacing = 0.16 ; grid spacing for FFT
; Temperature coupling is on
tcoupl = V-rescale ; modified Berendsen thermostat
tc-grps = Protein Non-Protein ; 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 is on
pcoupl = Parrinello-Rahman ; Pressure coupling on in NPT
pcoupltype = isotropic ; uniform scaling of box vectors
tau_p = 2.0 ; time constant, in ps
ref_p = 1.0 ; reference pressure, in bar
compressibility = 4.5e-5 ; isothermal compressibility of water, bar^-1
refcoord_scaling = com
; Periodic boundary conditions
pbc = xyz ; 3-D PBC
; Velocity generation
gen_vel = no ; Velocity generation is off它和之前的 NVT 平衡参数文件没有太大区别,使用 Parrinello-Rahman 恒压器添加了压力耦合部分。
随后继续调用 grompp 和 mdrun,和NVT相同:
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr开始NPT模拟:
gmx mdrun -deffnm npt分析结果
先使用energy来分析压力级数:
gmx energy -f npt.edr -o pressure.xvg在提示符处键入 “18 0” 以选择系统的压力并退出。生成的绘图应如下所示: 
压力值在 100 ps 平衡阶段波动很大,但这种行为并不意外。这些数据的运行平均值在图中绘制为红线。在平衡过程中,压力的平均值为 7.5 ± 160.5 bar。压力是在 MD 模拟过程中波动很大的量,从较大的均方根波动 (160.5 bar) 中可以清楚地看出,因此从统计学上讲,无法区分获得的平均值(7.5 ± 160.5 bar)和目标/参考值(1 bar)之间的差异。
再分析密度,这次使用energy并在提示符处输入 24 0。
gmx energy -f npt.edr -o density.xvg与压力一样,密度的运行平均值也用红色绘制。100 ps 过程中的平均值为 1019 ± 3 kg m-3,接近 1000 kg m-3 的实验值和 SPC/E 模型的预期密度 1008 kg m-3。SPC/E 水模型的参数与水的实验值非常相似。密度值随着时间的推移非常稳定,表明系统现在在压力和密度方面得到了很好的平衡。 
如果获得的密度值与该结果不匹配,可能是因为与压力相关的项收敛速度较慢,因此可能需要运行 NPT 平衡的时间略长于此处指定的时间。
开始模拟
完成两个平衡阶段后,系统现在在所需的温度和压力下得到很好的平衡,随后可以开始最终模拟,本例将运行 1 ns 的 MD 仿真。
构建下列的md.mdp配置文件:
title = OPLS Lysozyme NPT equilibration
; Run parameters
integrator = md ; leap-frog integrator
nsteps = 500000 ; 2 * 500000 = 1000 ps (1 ns)
dt = 0.002 ; 2 fs
; Output control
nstxout = 0 ; suppress bulky .trr file by specifying
nstvout = 0 ; 0 for output frequency of nstxout,
nstfout = 0 ; nstvout, and nstfout
nstenergy = 5000 ; save energies every 10.0 ps
nstlog = 5000 ; update log file every 10.0 ps
nstxout-compressed = 5000 ; save compressed coordinates every 10.0 ps
compressed-x-grps = System ; save the whole system
; Bond parameters
continuation = yes ; Restarting after NPT
constraint_algorithm = lincs ; holonomic constraints
constraints = h-bonds ; bonds involving H are constrained
lincs_iter = 1 ; accuracy of LINCS
lincs_order = 4 ; also related to accuracy
; Neighborsearching
cutoff-scheme = Verlet ; Buffered neighbor searching
ns_type = grid ; search neighboring grid cells
nstlist = 10 ; 20 fs, largely irrelevant with Verlet scheme
rcoulomb = 1.0 ; short-range electrostatic cutoff (in nm)
rvdw = 1.0 ; short-range van der Waals cutoff (in nm)
; Electrostatics
coulombtype = PME ; Particle Mesh Ewald for long-range electrostatics
pme_order = 4 ; cubic interpolation
fourierspacing = 0.16 ; grid spacing for FFT
; Temperature coupling is on
tcoupl = V-rescale ; modified Berendsen thermostat
tc-grps = Protein Non-Protein ; 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 is on
pcoupl = Parrinello-Rahman ; Pressure coupling on in NPT
pcoupltype = isotropic ; uniform scaling of box vectors
tau_p = 2.0 ; time constant, in ps
ref_p = 1.0 ; reference pressure, in bar
compressibility = 4.5e-5 ; isothermal compressibility of water, bar^-1
; Periodic boundary conditions
pbc = xyz ; 3-D PBC
; Dispersion correction
DispCorr = EnerPres ; account for cut-off vdW scheme
; Velocity generation
gen_vel = no ; Velocity generation is off执行MD模拟
下列命令可以将模拟参数、初始结构、拓扑信息和检查点文件整合成一个二进制文件(.tpr 文件),供后续的分子动力学模拟使用:
gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md_0_1.tpr执行 mdrun开始模拟,使用-v命令会显示每一步的具体进度:
gmx mdrun -deffnm md_0_1 -v在 GROMACS 2018 后可以调用GPU加速,只需要使用 -nb gpu 参数即可:
gmx mdrun -deffnm md_0_1 -nb gpu -V若模拟计算中途中断,可使用-cpi在中断处续跑,其中md_0.cpt是中断前产生的文件:
gmx mdrun -deffnm md_0_1 -nb gpu -v -cpi md_0_1.cpt 12000结果分析
现在我们已经模拟了蛋白质,我们应该对系统进行一些分析,在本教程中将介绍一些基本动力学模拟的数据分析工具。
轨迹校正
trjconv 用作后处理工具,用于去除坐标、校正周期性或手动更改轨迹(时间单位、帧频率等)。我们使用 trjconv 来矫正系统中的周期性边界问题:
gmx trjconv -s md_0_1.tpr -f md_0_1.xtc -o md_0_1_noPBC.xtc -pbc mol -center选择 1 (“Protein”) 作为要居中的组,选择 0 (“System”) 作为输出,后续的分析将全部基于矫正后的轨迹。
RMSD
GROMACS 有一个用于 RMSD 计算的内置实用程序,称为rms,使用以下命令:
gmx rms -s md_0_1.tpr -f md_0_1_noPBC.xtc -o rmsd.xvg -tu ns选择 4(“Backbone”) 作为最小二乘拟合和 RMSD 计算的组。
使用下列命令来计算相对于晶体结构的 RMSD:
gmx rms -s em.tpr -f md_0_1_noPBC.xtc -o rmsd_xtal.xvg -tu ns将两个结果一起绘制,结果如下所示: 
两个时间序列都显示 RMSD 水平低至 ~0.1 nm (1 Å),表明结构非常稳定;两个曲线em.tpr进行了能量最小化。
回转半径
蛋白质的回转半径是其紧凑性的量度,如果蛋白质稳定折叠,它可能会保持相对稳定的 Rg 值;如果蛋白质去折叠,它的 Rg 会随着时间的推移而变化。使用以下命令分析溶菌酶的回转半径:
gmx gyrate -s md_0_1.tpr -f md_0_1_noPBC.xtc -o gyrate.xvg选择索引组 1 (Protein) 进行分析: 
从合理不变的 Rg 值中可以看出,蛋白质在 300 K 下以紧凑(折叠)形式在模拟过程中保持非常稳定。
总结
至此,我们使用 GROMACS 完成了第一个分子动力学模拟,并分析了一些结果,后续可以查看相关文献和 GROMACS 手册,修改.mdp文件参数,观察不同参数条件下的结果,加深对动力学模拟过程的理解。