2. 模拟体系构建与文件准备
在 GROMACS 中,一次模拟能否顺利启动,几乎完全取决于“三件套”是否自洽:坐标文件(体系里有哪些原子、在什么位置)、拓扑文件(这些原子是什么类型、带什么电荷、彼此如何成键、用什么力场参数)、以及运行参数(.mdp,本节不展开)。很多初学者把精力放在 mdp 上,结果 gmx grompp 一跑就报错,根源往往在拓扑与坐标的匹配上。本节围绕文件格式、力场选择与典型报错,把体系构建这条链路讲清楚。
一、坐标文件:pdb 与 gro 的分工
PDB 是“来源格式”,通常来自 RCSB 下载、建模软件或同源建模结果。它记录 ATOM/HETATM 行、残基名、原子名、链标识、坐标与占有率,信息丰富但格式松散,同一原子名在不同软件里写法可能不同。GRO 是 GROMACS 的原生坐标格式,结构极简:标题行、原子数、逐原子一行(残基号、残基名、原子名、原子序号、x/y/z,单位 nm)、最后一行是盒矢量。GRO 精度为 0.001 nm,且不携带拓扑信息,只描述位置。
因此标准做法是:用 pdb2gmx 把 PDB 转成 gro 并同时生成拓扑。pdb2gmx 会做三件事——按力场库补全缺失的氢原子、识别残基并连接成链、根据质子化状态决定可滴定残基的电荷。这一步的输入是 PDB,输出是 conf.gro、topol.top、posre.itp。注意:pdb2gmx 对 PDB 的原子命名很敏感,若残基名或原子名不规范,会直接报 “Residue 'XXX' not found in residue topology database”。
二、拓扑文件:top 与 itp 的层级关系
拓扑是 GROMACS 的“分子说明书”。顶层 topol.top 通过 #include 引入力场参数文件(如 amber99sb-ildn.ff/forcefield.itp)、水模型(tip3p.itp)、离子参数(ions.itp),再用 [ moleculetype ] 与 [ molecules ] 声明体系里每种分子及其数量。ITP 则是可复用的分子片段文件,例如 posre.itp(位置限制)、ligand.itp(小分子参数)、tip3p.itp(水)。
关键规则:[ molecules ] 中列出的分子名,必须与前面 [ moleculetype ] 中定义的名字逐字一致,且数量要与坐标文件中的实际分子数吻合。这是 grompp 报错最集中的地方。下面这张图把“坐标—拓扑—力场”三者的依赖与常见断点画在一起,便于对照排查。
三、力场选择:不是越新越好,而是越匹配越好
力场决定键长、键角、二面角、LJ 参数与电荷。GROMACS 自带 amber99sb-ildn、charmm36、opls-aa、gromos54a7 等。选择原则有三条:第一,与体系类型匹配——蛋白质常用 amber99sb-ildn 或 charmm36,脂质膜用 charmm36 或 slipids,有机小分子用 opls-aa 或 gaff;第二,与水模型匹配——amber 系列配 tip3p,charmm36 配 tip3p 或 charmm 修饰水,gromos 配 spc/e;第三,全体系统一——蛋白、配体、膜、离子必须来自同一力场家族,混用会导致参数不自洽。
小分子配体是最大难点。若力场库中没有对应残基,需要先用 ACPYPE 或 CGenFF 生成 ligand.itp 与 ligand.gro,再在 topol.top 中 #include "ligand.itp",并在 [ molecules ] 中写入 LIG 1。注意配体的原子名必须与坐标文件完全一致,否则 grompp 会报原子不匹配。
四、典型报错与排查路径
下面给出四类高频错误及其定位方法,建议按顺序检查。
| 报错信息 | 根本原因 | 排查与修复 |
|---|---|---|
Residue 'XXX' not found in residue topology database |
PDB 中残基名不在所选力场库中,或质子化状态未指定 | 用 -ter 交互指定 N/C 端与 HIS 质子化;检查残基名拼写;必要时手动建 itp |
No such moleculetype XXX |
[ molecules ] 中的名字与 [ moleculetype ] 不一致 |
逐字比对两处名称,注意大小写与空格 |
Number of coordinates in gro file does not match topology |
坐标原子数与拓扑原子总数不等,常见于加水/加离子后未更新 top | 用 gmx check 查看原子数;确认 [ molecules ] 中水与离子数量正确 |
Atom index out of range |
itp 中原子序号与坐标顺序错位,或 include 顺序错误 | 检查 itp 的 [ atoms ] 编号是否从 1 连续;确认 include 在 moleculetype 之前 |
gmx check -f conf.gro 看原子数与盒矢量;再打开 topol.top 核对 [ molecules ] 与 include 链;最后用 gmx grompp -v 查看详细处理日志。三步能覆盖 90% 的启动失败。
五、一个可复用的最小拓扑骨架
下面给出一个含蛋白、水、离子的 topol.top 骨架,可直接对照修改。注意 [ molecules ] 的顺序必须与坐标文件中分子出现的顺序一致,否则 grompp 会按顺序错配。
; topol.top —— 蛋白 + TIP3P 水 + Na+/Cl-
#include "amber99sb-ildn.ff/forcefield.itp"
[ moleculetype ]
; name nrexcl
Protein 3
[ atoms ]
; 由 pdb2gmx 自动生成,此处省略
#include "amber99sb-ildn.ff/tip3p.itp"
#include "amber99sb-ildn.ff/ions.itp"
[ system ]
Protein in water
[ molecules ]
Protein 1
SOL 8231
NA 12
CL 10
[ molecules ] 中的 SOL、NA、CL 数量必须与 conf.gro 中实际分子数一致。若用 gmx solvate 和 gmx genion,它们会提示更新 top,但不会自动改,需要手动填入。数量写错时 grompp 报 “number of coordinates does not match”,但不会告诉你差多少,需自己用 gmx check 对比。