首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >课前准备--分子动力学Gromacs参数的详细介绍与选择(二)

课前准备--分子动力学Gromacs参数的详细介绍与选择(二)

原创
作者头像
追风少年i
发布2026-09-03 08:48:24
发布2026-09-03 08:48:24
350
举报

作者,Evil Genius

这里我们以真正做科研的思路整理一套 GROMACS 参数体系 md.mdp,作为 GROMACS .mdp 参数手册 + 蛋白–配体 / 蛋白–蛋白 / 蛋白–膜参考模板

先强调一下:

下面的 mdp 是“参考模板”,不是任何体系都可以原封不动复制的万能文件。 尤其是 力场、配体参数、脂质参数、温度、压力、耦合组、位置限制、非键相互作用,必须和体系对应。

GROMACS 2026.0 官方手册对 .mdp 参数进行了完整定义;下面的参数解释以当前 GROMACS 文档和官方教程为主要依据。


一、先建立一个完整的 GROMACS 参数框架

对于以后做:

蛋白 → 分子对接 → 蛋白–配体MD → MM/PBSA

或者:

膜蛋白 → 脂质膜 → MD → 蛋白–膜相互作用

把参数理解成下面这张逻辑图:

代码语言:javascript
复制
力场
                 │
       ┌─────────┴─────────┐
       │                   │
    蛋白参数            配体/脂质参数
       │                   │
       └─────────┬─────────┘
                 ↓
             拓扑文件
                 ↓
             建立水盒
                 ↓
              加离子
                 ↓
        ┌─────────────────┐
        │ Energy Minimization │
        └────────┬────────┘
                 ↓
               NVT
          温度平衡
                 ↓
               NPT
        温度 + 压力平衡
                 ↓
          Production MD
                 ↓
       ┌─────────┼─────────┐
       ↓         ↓         ↓
     RMSD      RMSF       Rg
       ↓         ↓         ↓
    H-bond     SASA    Ligand RMSD
                 ↓
              MM/PBSA

二、.mdp 文件到底是什么?

.mdp

Molecular Dynamics Parameter file

它本质上是在告诉 GROMACS:

“我要用什么物理模型、什么积分方式、什么温度、什么压力、多久一步、跑多长时间,以及如何保存结果。”

例如:

代码语言:javascript
复制
integrator = md
dt         = 0.002
nsteps     = 50000000

意思就是:

代码语言:javascript
复制
使用MD积分
每一步2 fs
一共5000万步

总时间:

代码语言:javascript
复制
0.002 ps × 50,000,000
= 100,000 ps
= 100 ns

三、最重要的参数分类

以后看到一个 .mdp,建议不要一行一行死记,而是按照下面 10大类理解。

类别

主要参数

① 积分

integrator、dt、nsteps

② 温度

tcoupl、tc-grps、tau-t、ref-t

③ 压力

pcoupl、pcoupltype、tau-p、ref-p

④ 约束

constraints、constraint-algorithm

⑤ 静电

coulombtype、rcoulomb

⑥ vdW

vdwtype、rvdw

⑦ PME

fourierspacing、pme-order

⑧ 周期边界

pbc、periodic-molecules

⑨ 输出

nstenergy、nstlog、nstxout-compressed

⑩ 初始/平衡

gen-vel、continuation、define


四、第一大类:integrator

最常见:

代码语言:javascript
复制
integrator = md

意思:

使用经典分子动力学积分。

常见选择:

代码语言:javascript
复制
md
md-vv
steep
cg

但是它们不是一回事。


1. integrator = steep

用于:

Energy Minimization

例如:

代码语言:javascript
复制
integrator = steep

不是正式MD。

它主要用于:

消除原子之间严重的空间冲突。

比如:

代码语言:javascript
复制
蛋白侧链
   ↓
配体
   ↓
距离太近
   ↓
巨大排斥力
   ↓
Energy Minimization

如果不做EM直接跑NVT,很可能:

  • LINCS error
  • 爆炸
  • 温度异常
  • 原子飞掉

五、dt:时间步长

这是MD最核心参数之一。

代码语言:javascript
复制
dt = 0.002

单位:

ps

因此:

代码语言:javascript
复制
0.002 ps = 2 fs

蛋白全原子MD中:

2 fs 是非常常见的时间步长。


为什么不能随便设置10 fs?

因为MD实际上是在计算:

然后不断更新:

如果:

代码语言:javascript
复制
Δt太大

就会:

跳过快速原子振动。

结果可能:

  • 能量不守恒
  • 键长异常
  • LINCS错误
  • 模拟不稳定

dt怎么选择?

dt

推荐程度

说明

0.0005 ps

⭐⭐⭐

很保守

0.001 ps

⭐⭐⭐⭐

1 fs

0.002 ps

⭐⭐⭐⭐⭐

常规2 fs

0.004 ps

⭐⭐⭐

特定约束/虚拟位点体系

0.01 ps

普通全原子蛋白不建议


六、nsteps

例如:

代码语言:javascript
复制
nsteps = 50000000

与:

代码语言:javascript
复制
dt = 0.002

配合。

计算:

所以:

代码语言:javascript
复制
50000000 × 0.002 ps
= 100000 ps
= 100 ns

常见模拟时间

模拟时间

nsteps

10 ns

5,000,000

50 ns

25,000,000

100 ns

50,000,000

200 ns

100,000,000

500 ns

250,000,000

1 μs

500,000,000


七、蛋白–配体到底跑100 ns还是200 ns?

不要把:

100 ns

当成“标准答案”。

真正应该看:

RMSD是否稳定?

RMSF是否合理?

配体有没有跑出口袋?

氢键是否稳定?

Ligand RMSD是否稳定?

多个repeat是否一致?


对于一般:

蛋白–小分子

可以考虑:

100–200 ns × 2–3个独立repeat

比:

单次500 ns

往往更有说服力。


八、温度耦合 tcoupl

这是NVT/NPT非常重要的参数。

例如:

代码语言:javascript
复制
tcoupl = V-rescale

GROMACS当前版本支持多种温度耦合方法,其中 V-rescale 可以用于产生正确的canonical ensemble;官方膜蛋白教程也使用 V-rescale 进行温度耦合。


九、tc-grps

例如:

代码语言:javascript
复制
tc-grps = Protein_LIG Water_and_ions

表示:

代码语言:javascript
复制
Protein_LIG
     ↓
一个温度耦合组

Water_and_ions
     ↓
另一个温度耦合组

为什么不能随便分组?

例如:

代码语言:javascript
复制
tc-grps = Protein Ligand Water

可能造成:

Protein、Ligand、Water分别被不同温度浴控制。

对于普通蛋白–配体体系:

不建议为了“看起来更精细”而过度拆分温度耦合组。

官方文档也提醒,温度耦合组过多可能产生不自然的温度行为。


十、tau-t

例如:

代码语言:javascript
复制
tau-t = 0.1 0.1

单位:

ps

它表示:

温度耦合的时间尺度。

不是:

“每0.1 ps强制变一次温度”。


如果:

代码语言:javascript
复制
tau-t太小

可能:

温度被控制得过强。

如果:

代码语言:javascript
复制
tau-t太大

可能:

温度平衡比较慢。


十一、ref-t

例如:

代码语言:javascript
复制
ref-t = 300 300

就是:

目标温度300 K。

常见:

代码语言:javascript
复制
298 K
300 K
310 K

怎么选择?

如果模拟生理条件:

310 K ≈ 37°C

如果普通室温:

298–300 K

蛋白研究文献中:

300 K / 310 K

都非常常见。

关键是:

实验条件 + 文献体系 + 力场验证条件

要一致。


十二、压力耦合 pcoupl

NVT:

代码语言:javascript
复制
pcoupl = no

NPT:

代码语言:javascript
复制
pcoupl = ...

GROMACS 2026的重要变化

当前GROMACS文档中:

Berendsen

虽然仍存在,但官方明确不推荐用于新的生产模拟,因为它不能产生正确的热力学系综。

C-rescale

现在可以用于:

equilibration + production

Parrinello-Rahman

仍然是非常经典的生产阶段选择。

所以现在不要机械地认为:

“所有NPT都必须Berendsen。”

这是很多旧教程留下来的习惯。


十三、pcoupl = Parrinello-Rahman

例如:

代码语言:javascript
复制
pcoupl = Parrinello-Rahman

适合:

正式NPT / Production阶段。

但是一个重要问题:

如果刚开始:

代码语言:javascript
复制
体系密度完全不合理

直接用Parrinello-Rahman:

可能出现比较大的压力/体积振荡。

所以实际工作中经常:

代码语言:javascript
复制
EM
 ↓
NVT
 ↓
NPT平衡
 ↓
Production

而不是一开始就进入正式生产阶段。


十四、ref-p

最常见:

代码语言:javascript
复制
ref-p = 1.0

单位:

bar

即:

1 bar


十五、tau-p

例如:

代码语言:javascript
复制
tau-p = 2.0

单位:

ps

代表压力耦合时间尺度。

一般:

不要设置得非常小。

否则可能导致:

  • 盒子剧烈变化
  • 密度波动
  • 膜面积异常
  • 压力振荡

十六、普通蛋白 vs 膜蛋白:压力耦合完全不一样

这是做蛋白–细胞膜时必须重点理解的地方。

普通蛋白:

代码语言:javascript
复制
pcoupltype = isotropic

可以让:

代码语言:javascript
复制
X
Y
Z

比较统一地缩放。

但膜:

代码语言:javascript
复制
X-Y = membrane plane
Z   = membrane normal

不能随便:

XYZ一起缩放。

因此膜体系通常考虑:

代码语言:javascript
复制
pcoupltype = semiisotropic

也就是:

代码语言:javascript
复制
XY一组
Z一组

这是膜MD和普通蛋白MD的重要区别。

GROMACS官方膜模拟文档也明确指出膜体系需要针对膜的几何和压力耦合方式进行专门处理。


十七、constraints

最常见:

代码语言:javascript
复制
constraints = h-bonds

意思:

约束涉及H原子的键。

这样就可以比较稳定地使用:

代码语言:javascript
复制
dt = 0.002

常见选择

代码语言:javascript
复制
constraints = none

不约束。

代码语言:javascript
复制
constraints = h-bonds

约束含H键。

代码语言:javascript
复制
constraints = all-bonds

所有键。


推荐

普通蛋白:

代码语言:javascript
复制
constraints = h-bonds

是很常见的选择。


十八、constraint-algorithm

通常:

代码语言:javascript
复制
constraint-algorithm = lincs

LINCS是GROMACS最常用的约束算法之一。

如果出现:

代码语言:javascript
复制
LINCS WARNING

不要简单理解为:

“GROMACS有时候会报警,很正常。”

严重LINCS错误往往说明:

  • 时间步长过大
  • 初始结构坏
  • 温度爆炸
  • 力场/拓扑有问题
  • 配体参数有问题
  • NPT不稳定

十九、PME:长程静电

蛋白体系通常:

代码语言:javascript
复制
coulombtype = PME

PME:

Particle Mesh Ewald

用于处理:

长程静电相互作用。

蛋白–配体中尤其重要,因为:

  • Lys
  • Arg
  • Asp
  • Glu
  • 配体带电基团

都会受到静电作用影响。


二十、rcoulomb

例如:

代码语言:javascript
复制
rcoulomb = 1.0

单位:

nm

表示短程直接计算范围。

但是:

这个数不能脱离力场单独决定。

例如CHARMM36体系的官方推荐设置使用:

代码语言:javascript
复制
rcoulomb = 1.2
coulombtype = PME

同时使用特定的vdW参数。


二十一、vdW参数

常见:

代码语言:javascript
复制
vdwtype = cutoff

例如CHARMM36推荐:

代码语言:javascript
复制
vdwtype       = cutoff
vdw-modifier  = force-switch
rlist         = 1.2
rvdw          = 1.2
rvdw-switch   = 1.0

这些设置来自GROMACS对CHARMM36的官方说明。


二十二、为什么不能随便把 rvdw 改成1.0?

因为:

vdW处理方式是力场的一部分。

如果你使用:

CHARMM36

就应该遵循CHARMM36推荐方案。

如果:

AMBER

就应该按照对应AMBER力场的推荐设置。

不要:

代码语言:javascript
复制
复制网上mdp
+
换一个force field

然后直接运行。


二十三、pbc

一般:

代码语言:javascript
复制
pbc = xyz

意思:

XYZ三个方向都使用周期性边界条件。

普通水溶液蛋白:

代码语言:javascript
复制
pbc = xyz

通常合理。

膜:

代码语言:javascript
复制
pbc = xyz

仍然使用,但膜的:

XY平面

和:

Z方向

物理意义不同。


二十四、DispCorr

这个参数非常容易被错误复制。

例如CHARMM36膜双层:

代码语言:javascript
复制
DispCorr = no

GROMACS官方文档明确指出,CHARMM36双层体系一般不使用该色散修正;单层体系则有不同考虑。

因此:

不要看到别人用了 DispCorr=yes 就复制。


二十五、gen-vel

NVT第一阶段:

代码语言:javascript
复制
gen-vel = yes

表示:

生成初始速度。

例如:

代码语言:javascript
复制
gen-temp = 300

Production:

代码语言:javascript
复制
gen-vel = no

通常从上一阶段:

代码语言:javascript
复制
nvt.gro

继承速度。


二十六、continuation

NVT/NPT连续运行:

代码语言:javascript
复制
continuation = yes

表示:

从之前的模拟状态继续。

而第一次:

代码语言:javascript
复制
continuation = no

通常更合理。


二十七、位置限制 define

例如:

代码语言:javascript
复制
define = -DPOSRES

意思:

开启位置限制。

对于膜蛋白尤其重要。

GROMACS官方膜教程采用多阶段位置限制,让膜和蛋白逐渐适应,最后解除限制。


二十八、为什么膜蛋白需要更多平衡步骤?

因为膜是一个非常复杂的体系:

代码语言:javascript
复制
蛋白
 ↓
脂质双层
 ↓
水
 ↓
离子

蛋白插入膜以后:

脂质需要重新排列。

因此不能简单:

代码语言:javascript
复制
EM
↓
NVT 100 ps
↓
NPT 100 ps
↓
Production

就结束。

官方膜模拟指导建议,在解除限制之前让膜围绕蛋白进行充分调整;GROMACS的膜模拟文档给出的典型思路包括约5–10 ns的受限MD,然后逐步解除限制再进入production。


二十九、输出参数

常见:

代码语言:javascript
复制
nstenergy = 1000
nstlog = 1000
nstxout-compressed = 5000

nstenergy

多少步保存一次能量。

例如:

代码语言:javascript
复制
nstenergy = 1000

dt=0.002 ps:

代码语言:javascript
复制
1000 × 0.002
= 2 ps

nstlog

多久写一次log。


nstxout-compressed

多久保存一次压缩轨迹。

例如:

代码语言:javascript
复制
nstxout-compressed = 5000

就是:

代码语言:javascript
复制
10 ps

保存一次。


三十、轨迹保存到底多久一次?

推荐思路:

RMSD/RMSF

不需要每一步。

H-bond

也不需要每一步。

PCA

一般10–100 ps级别已经可以。

特殊快速构象变化

可以更密。

所以:

代码语言:javascript
复制
5–20 ps

是非常常见的实际选择范围。


三十一、蛋白–配体参考 MDP

下面是一套比较适合教学/科研起步的模板。

假设:

代码语言:javascript
复制
Protein + Ligand
Water
NaCl
T = 300 K
P = 1 bar

1. EM

代码语言:javascript
复制
; ============================================================
; em.mdp
; Protein-Ligand Energy Minimization
; ============================================================

integrator      = steep

emtol           = 1000.0
emstep          = 0.01
nsteps          = 50000

; Periodic boundary
pbc             = xyz

; Neighbor searching
cutoff-scheme   = Verlet

; Electrostatics
coulombtype     = PME

; vdW
; IMPORTANT:
; The exact vdW settings must follow your force field
rcoulomb        = 1.0
rvdw            = 1.0

; Output
nstenergy       = 100

这个文件的核心目的

不是:

“把蛋白优化得越漂亮越好”

而是:

消除严重的原子冲突。


三十二、蛋白–配体 NVT

代码语言:javascript
复制
; ============================================================
; nvt.mdp
; Protein-Ligand NVT Equilibration
; ============================================================

title                   = Protein-Ligand NVT

define                  = -DPOSRES

integrator              = md

dt                      = 0.002
nsteps                  = 250000

; Output
nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 5000

; Neighbor searching
cutoff-scheme           = Verlet

; Electrostatics
coulombtype             = PME
rcoulomb                = 1.0

; van der Waals
rvdw                    = 1.0

; Periodic boundary
pbc                     = xyz

; Constraints
constraints             = h-bonds
constraint-algorithm    = lincs

; Temperature coupling
tcoupl                  = V-rescale
tc-grps                 = Protein_LIG Water_and_ions

tau-t                   = 0.1 0.1
ref-t                   = 300 300

; Pressure
pcoupl                  = no

; Initial velocities
gen-vel                 = yes
gen-temp                = 300

; Dispersion correction
DispCorr                = no

这里:

代码语言:javascript
复制
250000 × 0.002 ps
= 500 ps

也就是:

0.5 ns NVT

实际研究中可以根据体系增加到:

1–2 ns


三十三、蛋白–配体 NPT

代码语言:javascript
复制
; ============================================================
; npt.mdp
; Protein-Ligand NPT Equilibration
; ============================================================

title                   = Protein-Ligand NPT

define                  = -DPOSRES

integrator              = md

dt                      = 0.002
nsteps                  = 500000

nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 5000

cutoff-scheme           = Verlet

coulombtype             = PME
rcoulomb                = 1.0

rvdw                    = 1.0

pbc                     = xyz

constraints             = h-bonds
constraint-algorithm    = lincs

; Temperature
tcoupl                  = V-rescale
tc-grps                 = Protein_LIG Water_and_ions
tau-t                   = 0.1 0.1
ref-t                   = 300 300

; Pressure
pcoupl                  = Parrinello-Rahman
pcoupltype              = isotropic

tau-p                   = 2.0
ref-p                   = 1.0
compressibility         = 4.5e-5

; Continue
continuation             = yes

gen-vel                  = no

DispCorr                 = no

三十四、Protein–Ligand Production MD

代码语言:javascript
复制
; ============================================================
; md.mdp
; Protein-Ligand Production MD
; 100 ns example
; ============================================================

title                   = Protein-Ligand Production MD

integrator              = md

dt                      = 0.002

; 100 ns
nsteps                  = 50000000

; Output
nstenergy               = 5000
nstlog                  = 5000
nstxout-compressed      = 5000

; Neighbor searching
cutoff-scheme           = Verlet

; Electrostatics
coulombtype             = PME
rcoulomb                = 1.0

; vdW
rvdw                    = 1.0

; Periodic boundary
pbc                     = xyz

; Constraints
constraints             = h-bonds
constraint-algorithm    = lincs

; Temperature
tcoupl                  = V-rescale
tc-grps                 = Protein_LIG Water_and_ions
tau-t                   = 0.1 0.1
ref-t                   = 300 300

; Pressure
pcoupl                  = Parrinello-Rahman
pcoupltype              = isotropic
tau-p                   = 2.0
ref-p                   = 1.0
compressibility         = 4.5e-5

; Continuation
continuation            = yes
gen-vel                 = no

; Center of mass
comm-mode               = Linear
nstcomm                 = 100
comm-grps               = Protein_LIG Water_and_ions

DispCorr                = no

三十五、这里有一个非常重要的提醒

上面的:

代码语言:javascript
复制
rcoulomb = 1.0
rvdw = 1.0

不是所有力场都应该这么写。

如果你选择:

CHARMM36/CHARMM36m

就应该按照CHARMM体系推荐设置,例如:

代码语言:javascript
复制
constraints       = h-bonds
cutoff-scheme     = Verlet
vdwtype           = cutoff
vdw-modifier      = force-switch

rlist             = 1.2
rvdw              = 1.2
rvdw-switch       = 1.0

coulombtype       = PME
rcoulomb          = 1.2

DispCorr          = no

这是GROMACS官方对CHARMM36给出的设置。

所以:

你选择什么力场,决定了很多非键参数。


三十六、蛋白–蛋白 MD

蛋白–蛋白和蛋白–配体最大的区别之一:

没有“小分子参数化”这一额外难点。

例如:

代码语言:javascript
复制
Protein A
+
Protein B

可以:

代码语言:javascript
复制
Protein_AB
Water
Na+
Cl-

Protein–Protein EM

代码语言:javascript
复制
integrator      = steep

emtol           = 1000
emstep          = 0.01
nsteps          = 50000

cutoff-scheme   = Verlet
coulombtype     = PME

pbc             = xyz

三十七、Protein–Protein NVT

代码语言:javascript
复制
title                   = Protein-Protein NVT

define                  = -DPOSRES

integrator              = md
dt                      = 0.002
nsteps                  = 500000

nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 5000

cutoff-scheme           = Verlet

coulombtype             = PME
rcoulomb                = 1.0
rvdw                    = 1.0

pbc                     = xyz

constraints             = h-bonds
constraint-algorithm    = lincs

tcoupl                  = V-rescale

tc-grps                 = Protein_A_B Water_and_ions

tau-t                   = 0.1 0.1
ref-t                   = 300 300

pcoupl                  = no

gen-vel                 = yes
gen-temp                = 300

DispCorr                = no

三十八、Protein–Protein NPT

代码语言:javascript
复制
title                   = Protein-Protein NPT

define                  = -DPOSRES

integrator              = md
dt                      = 0.002
nsteps                  = 1000000

nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 5000

cutoff-scheme           = Verlet

coulombtype             = PME
rcoulomb                = 1.0
rvdw                    = 1.0

pbc                     = xyz

constraints             = h-bonds
constraint-algorithm    = lincs

tcoupl                  = V-rescale
tc-grps                 = Protein_A_B Water_and_ions

tau-t                   = 0.1 0.1
ref-t                   = 300 300

pcoupl                  = Parrinello-Rahman
pcoupltype              = isotropic

tau-p                   = 2.0
ref-p                   = 1.0

compressibility         = 4.5e-5

continuation            = yes
gen-vel                 = no

DispCorr                = no

三十九、Protein–Protein Production

代码语言:javascript
复制
title                   = Protein-Protein Production MD

integrator              = md
dt                      = 0.002

; 200 ns
nsteps                  = 100000000

nstenergy               = 5000
nstlog                  = 5000
nstxout-compressed      = 5000

cutoff-scheme           = Verlet

coulombtype             = PME
rcoulomb                = 1.0
rvdw                    = 1.0

pbc                     = xyz

constraints             = h-bonds
constraint-algorithm    = lincs

tcoupl                  = V-rescale
tc-grps                 = Protein_A_B Water_and_ions

tau-t                   = 0.1 0.1
ref-t                   = 300 300

pcoupl                  = Parrinello-Rahman
pcoupltype              = isotropic

tau-p                   = 2.0
ref-p                   = 1.0
compressibility         = 4.5e-5

continuation            = yes
gen-vel                 = no

DispCorr                = no

四十、蛋白–蛋白最应该分析什么?

蛋白–蛋白体系重点不应该只是:

RMSD

而应该重点看:

① Interface RMSD

② Interface RMSF

③ Contact number

④ Hydrogen bonds

⑤ Salt bridges

⑥ Interface SASA

⑦ Protein–protein distance

⑧ Binding free energy

例如:

代码语言:javascript
复制
Protein A
     │
     ├── Hydrogen bonds
     ├── Salt bridges
     ├── Hydrophobic contacts
     └── Interface residues
          ↓
       稳定性

四十一、蛋白–膜 MD

这个体系比前两个明显复杂。

典型:

代码语言:javascript
复制
Protein
   ↓
Lipid bilayer
   ↓
Water
   ↓
Ion

四十二、蛋白–膜最推荐的体系准备方式

如果你是第一次做:

强烈建议优先考虑 CHARMM-GUI Membrane Builder

因为膜体系最容易出问题的不是:

代码语言:javascript
复制
md.mdp

而是:

代码语言:javascript
复制
膜组成
蛋白方向
脂质数量
水层
离子
蛋白-膜碰撞
拓扑

GROMACS官方膜蛋白教程本身也是使用 CHARMM-GUI 构建膜蛋白体系,再进入GROMACS模拟流程。(GROMACS教程)


四十三、膜体系为什么使用 semiisotropic

假设:

代码语言:javascript
复制
Z
       ↑
       │
  ─────────────
      membrane
  ─────────────
       │

膜平面:

代码语言:javascript
复制
X-Y

膜法向:

代码语言:javascript
复制
Z

因此:

代码语言:javascript
复制
pcoupltype = semiisotropic

意味着:

代码语言:javascript
复制
X/Y → 一组
Z   → 一组

例如:

代码语言:javascript
复制
ref-p = 1.0 1.0

四十四、蛋白–膜 NVT

膜体系通常不是简单跑一个NVT。

可能:

代码语言:javascript
复制
NVT-1
NVT-2
NPT-1
NPT-2
NPT-3
NPT-4
Production

这是为什么很多CHARMM-GUI生成的文件会看到:

代码语言:javascript
复制
step6.1
step6.2
step6.3
step6.4
step6.5
step6.6
step7

官方膜教程就是这样的多阶段平衡流程,并逐步减弱position restraints。


四十五、膜蛋白参考 NPT

如果使用:

CHARMM36m + CHARMM36 lipid

典型核心参数应该遵循:

代码语言:javascript
复制
cutoff-scheme       = Verlet

coulombtype         = PME
rcoulomb            = 1.2

vdwtype             = cutoff
vdw-modifier        = force-switch

rlist               = 1.2
rvdw                = 1.2
rvdw-switch         = 1.0

constraints         = h-bonds

pcoupl              = Parrinello-Rahman
pcoupltype          = semiisotropic

tau-p               = 5.0 5.0
ref-p               = 1.0 1.0

但这里要特别强调:

膜体系的 tau-p、膜面积、压力耦合、restraint 等参数,应以具体脂质力场和CHARMM-GUI生成的体系为基础,而不是机械套这个模板。

GROMACS官方文档也特别指出,CHARMM36脂质双层中的vdW switching设置与具体脂质体系有关,需要结合相应力场文献判断。


四十六、一个膜蛋白 Production MDP 参考框架

代码语言:javascript
复制
; ============================================================
; membrane_production.mdp
; Protein-Membrane Production MD
; CHARMM36-family example
; ============================================================

title                   = Protein-Membrane Production

integrator              = md

dt                      = 0.002

; 200 ns
nsteps                  = 100000000

; Output
nstenergy               = 5000
nstlog                  = 5000
nstxout-compressed      = 5000

; Neighbor searching
cutoff-scheme           = Verlet

; Electrostatics
coulombtype             = PME
rcoulomb                = 1.2

; van der Waals
vdwtype                 = cutoff
vdw-modifier            = force-switch

rlist                   = 1.2
rvdw                    = 1.2
rvdw-switch             = 1.0

; Periodic boundary
pbc                     = xyz

; Constraints
constraints             = h-bonds
constraint-algorithm    = lincs

; Temperature
tcoupl                  = V-rescale

tc-grps                 = SOLU_MEMB SOLV

tau-t                   = 1.0 1.0
ref-t                   = 310 310

; Pressure
pcoupl                  = Parrinello-Rahman
pcoupltype              = semiisotropic

tau-p                   = 5.0 5.0

ref-p                   = 1.0 1.0

compressibility         = 4.5e-5 4.5e-5

; Continue from equilibration
continuation            = yes
gen-vel                 = no

; CHARMM36 membrane
DispCorr                = no

这里的:

代码语言:javascript
复制
SOLU_MEMB

和:

代码语言:javascript
复制
SOLV

不是GROMACS固定名称,而是自己的index group名称

官方膜教程中也使用类似:

代码语言:javascript
复制
SOLU
MEMB
SOLV
SOLU_MEMB
SYSTEM

这样的index group。


四十七、膜体系最容易犯的错误

错误①

直接:

代码语言:javascript
复制
protein
+
membrane
+
NPT

然后:

代码语言:javascript
复制
200 ns

这是非常危险的。


错误②

使用:

代码语言:javascript
复制
pcoupltype = isotropic

模拟普通膜双层。

这可能导致:

膜平面和Z方向不合理地一起缩放。


错误③

蛋白刚插入膜就解除所有restraint。

可能:

膜发生剧烈重排。


错误④

使用普通蛋白的:

代码语言:javascript
复制
rvdw = 1.0

而你的力场是:

CHARMM36

这是典型的:

力场–mdp不匹配。


四十八、三个体系的核心参数对比

这是你以后最应该记住的一张表:

参数

蛋白–配体

蛋白–蛋白

蛋白–膜

integrator

md

md

md

dt

0.002 ps

0.002 ps

0.002 ps

constraints

h-bonds

h-bonds

h-bonds

coulombtype

PME

PME

PME

pbc

xyz

xyz

xyz

温度

300/310 K

300/310 K

300/310 K

pcoupl

PR/C-rescale

PR/C-rescale

PR/C-rescale

pcoupltype

isotropic

isotropic

semiisotropic

ref-p

1 bar

1 bar

1/1 bar

define

初期可POSRES

初期可POSRES

通常更重要

平衡

NVT→NPT

NVT→NPT

多阶段NVT/NPT

Production

100–200 ns

100–200 ns

200 ns+常见

特殊参数

配体参数

Interface

脂质参数


四十九、最重要:蛋白–配体的“配体参数”问题

这一部分甚至比.mdp重要。

假设有:

代码语言:javascript
复制
Protein
+
Ligand

不能只:

代码语言:javascript
复制
pdb2gmx protein.pdb

然后把:

代码语言:javascript
复制
ligand.pdb

丢进去。

因为GROMACS需要知道:

代码语言:javascript
复制
Ligand原子类型
Ligand电荷
Ligand键
Ligand角度
Ligand二面角
Ligand vdW
Ligand improper

也就是:

完整的ligand topology/parameter。


五十、常见蛋白–配体参数组合

AMBER路线

代码语言:javascript
复制
Protein
    ↓
AMBER protein force field

Ligand
    ↓
GAFF / GAFF2
    ↓
AM1-BCC / RESP

然后进入GROMACS。


CHARMM路线

代码语言:javascript
复制
Protein
   ↓
CHARMM36m

Ligand
   ↓
CGenFF

这种方案对于蛋白–膜–配体体系尤其方便,因为:

代码语言:javascript
复制
Protein
+
Ligand
+
Lipid

可以处于同一个CHARMM力场框架。


五十一、如果要做“膜蛋白 + 配体”

推荐考虑:

代码语言:javascript
复制
CHARMM36m
+
CGenFF
+
CHARMM36 lipid

例如:

代码语言:javascript
复制
EGFR
 ↓
membrane
 ↓
small molecule inhibitor

这类体系:

CHARMM36m + CGenFF + CHARMM lipid

是一条比较自然的路线。


五十二、你现在真正应该掌握的MD参数优先级

不要平均用力。

我建议按照:

第一优先级 ⭐⭐⭐⭐⭐

代码语言:javascript
复制
Force Field
Ligand Parameter
Lipid Parameter

第二优先级 ⭐⭐⭐⭐⭐

代码语言:javascript
复制
dt
constraints
PME
vdW
tcoupl
pcoupl

第三优先级 ⭐⭐⭐⭐

代码语言:javascript
复制
NVT
NPT
Position restraints

第四优先级 ⭐⭐⭐⭐

代码语言:javascript
复制
nsteps
trajectory output
energy output

第五优先级 ⭐⭐⭐

代码语言:javascript
复制
RMSD
RMSF
Rg
SASA
H-bond
MM/PBSA

五十三、最终形成这三套标准模板

A. 蛋白–配体

代码语言:javascript
复制
Protein
+
Ligand
+
Water
+
NaCl

EM
 ↓
NVT
 ↓
NPT
 ↓
100–200 ns MD
 ↓
RMSD
RMSF
Rg
Ligand RMSD
H-bond
SASA
MM/PBSA

B. 蛋白–蛋白

代码语言:javascript
复制
Protein A
+
Protein B
+
Water
+
NaCl

EM
 ↓
NVT
 ↓
NPT
 ↓
100–300 ns
 ↓
Interface RMSD
Interface RMSF
Contacts
H-bonds
Salt bridges
Interface SASA
MM/PBSA

C. 蛋白–膜

代码语言:javascript
复制
Protein
+
Lipid Bilayer
+
Water
+
Ion

EM
 ↓
NVT
 ↓
NPT-1
 ↓
NPT-2
 ↓
逐渐解除restraint
 ↓
Production
 ↓
200 ns+
 ↓
Protein RMSD
Membrane thickness
Area per lipid
APL
Protein-Lipid contacts
H-bonds
Depth of insertion
Tilt angle
Membrane order parameter

膜体系尤其要分析:

膜厚度、每脂质面积(APL)、脂质排列/序参数、蛋白插入深度、蛋白–脂质接触,而不是只看RMSD。


五十四、最后给一个非常实用的判断原则

以后看到别人论文中的:

代码语言:javascript
复制
md.mdp

不要直接问:

“这个参数是多少?”

而应该问:

“这个参数为什么是这个值?”

例如:

代码语言:javascript
复制
pcoupltype = semiisotropic

你应该马上想到:

膜体系 → XY和Z物理性质不同。

看到:

代码语言:javascript
复制
constraints = h-bonds

应该想到:

约束H键 → 可以使用2 fs。

看到:

代码语言:javascript
复制
coulombtype = PME

应该想到:

长程静电。

看到:

代码语言:javascript
复制
define = -DPOSRES

应该想到:

平衡阶段限制蛋白/膜结构,防止体系刚开始剧烈变形。

看到:

代码语言:javascript
复制
rvdw = 1.2
vdw-modifier = force-switch

应该马上问:

是不是CHARMM36体系?

因为GROMACS官方对CHARMM36明确给出了这一组非键相互作用设置。


生活很好,有你更好。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 作者,Evil Genius
  • 一、先建立一个完整的 GROMACS 参数框架
  • 二、.mdp 文件到底是什么?
  • 三、最重要的参数分类
  • 四、第一大类:integrator
  • 1. integrator = steep
  • 五、dt:时间步长
  • 为什么不能随便设置10 fs?
  • dt怎么选择?
  • 六、nsteps
  • 常见模拟时间
  • 七、蛋白–配体到底跑100 ns还是200 ns?
    • RMSD是否稳定?
    • RMSF是否合理?
    • 配体有没有跑出口袋?
    • 氢键是否稳定?
    • Ligand RMSD是否稳定?
    • 多个repeat是否一致?
  • 八、温度耦合 tcoupl
  • 九、tc-grps
  • 为什么不能随便分组?
  • 十、tau-t
  • 十一、ref-t
    • 怎么选择?
  • 十二、压力耦合 pcoupl
  • GROMACS 2026的重要变化
    • Berendsen
    • C-rescale
    • Parrinello-Rahman
  • 十三、pcoupl = Parrinello-Rahman
  • 十四、ref-p
  • 十五、tau-p
  • 十六、普通蛋白 vs 膜蛋白:压力耦合完全不一样
  • 十七、constraints
  • 常见选择
    • 推荐
  • 十八、constraint-algorithm
  • 十九、PME:长程静电
  • 二十、rcoulomb
  • 二十一、vdW参数
  • 二十二、为什么不能随便把 rvdw 改成1.0?
  • 二十三、pbc
  • 二十四、DispCorr
  • 二十五、gen-vel
  • 二十六、continuation
  • 二十七、位置限制 define
  • 二十八、为什么膜蛋白需要更多平衡步骤?
  • 二十九、输出参数
  • nstenergy
  • nstlog
  • nstxout-compressed
  • 三十、轨迹保存到底多久一次?
    • RMSD/RMSF
    • H-bond
    • PCA
    • 特殊快速构象变化
  • 三十一、蛋白–配体参考 MDP
  • 1. EM
    • 这个文件的核心目的
  • 三十二、蛋白–配体 NVT
  • 三十三、蛋白–配体 NPT
  • 三十四、Protein–Ligand Production MD
  • 三十五、这里有一个非常重要的提醒
  • 三十六、蛋白–蛋白 MD
  • Protein–Protein EM
  • 三十七、Protein–Protein NVT
  • 三十八、Protein–Protein NPT
  • 三十九、Protein–Protein Production
  • 四十、蛋白–蛋白最应该分析什么?
    • ① Interface RMSD
    • ② Interface RMSF
    • ③ Contact number
    • ④ Hydrogen bonds
    • ⑤ Salt bridges
    • ⑥ Interface SASA
    • ⑦ Protein–protein distance
    • ⑧ Binding free energy
  • 四十一、蛋白–膜 MD
  • 四十二、蛋白–膜最推荐的体系准备方式
  • 四十三、膜体系为什么使用 semiisotropic
  • 四十四、蛋白–膜 NVT
  • 四十五、膜蛋白参考 NPT
  • 四十六、一个膜蛋白 Production MDP 参考框架
  • 四十七、膜体系最容易犯的错误
  • 错误①
  • 错误②
  • 错误③
  • 错误④
  • 四十八、三个体系的核心参数对比
  • 四十九、最重要:蛋白–配体的“配体参数”问题
  • 五十、常见蛋白–配体参数组合
    • AMBER路线
    • CHARMM路线
  • 五十一、如果要做“膜蛋白 + 配体”
  • 五十二、你现在真正应该掌握的MD参数优先级
    • 第一优先级 ⭐⭐⭐⭐⭐
    • 第二优先级 ⭐⭐⭐⭐⭐
    • 第三优先级 ⭐⭐⭐⭐
    • 第四优先级 ⭐⭐⭐⭐
    • 第五优先级 ⭐⭐⭐
  • 五十三、最终形成这三套标准模板
    • A. 蛋白–配体
    • B. 蛋白–蛋白
    • C. 蛋白–膜
  • 五十四、最后给一个非常实用的判断原则
    • 生活很好,有你更好。
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档