4.1 结构文件:模拟的“地理坐标”

做分子模拟,第一件事就是拿到结构文件。

这玩意就像你出门旅游前,得先有张地图。没地图,寸步难行。在GROMACS里,最常见的地图格式就两种:.gro和.pdb。嗯,今天我就带你把这两张地图彻底看懂。

4.1.1 .gro文件:GROMACS的亲儿子

.gro是GROMACS自己家的格式,我用它最多。说白了,它就是个精简的坐标卡片,核心信息都给你安排得明明白白。

一个标准的.gro长这样:

MD of 1CRO, 1000 steps, 300K
    1CRO    1  N     N01    1   1.424   1.267   1.000
    1CRO    1  H1    H11    2   1.457   1.233   0.959
    1CRO    1  H2    H12    3   1.413   1.305   0.960
    1CRO    1  H3    H13    4   1.444   1.266   1.051
    1CRO    2  CA    CA1    5   1.385   1.199   1.021
    1CRO    3  C     C1     6   1.329   1.148   0.976
    1CRO    4  O     O1     7   1.345   1.148   0.965
    1CRO    5  CB    CB1    8   1.414   1.130   1.056
    ...
    4.50000   4.50000   4.50000

你得会读这玩意。我拆开讲:

  • 第一行:标题行,随便写,描述你的体系。
  • 第二行:原子总数。这个数字千万不能错。我曾经在写脚本时,忘了更新这个数,结果跑出来的轨迹里,原子凭空消失了一半。查了三天才发现,眼泪都快掉下来。
  • 坐标行:每行一个原子,格式死卡:
    • 残基名称(5位字符,左对齐)
    • 残基序号(5位整数,右对齐)
    • 原子名称(5位字符,左对齐)
    • 原子序号(5位整数,右对齐)
    • X、Y、Z坐标(各占8位,3位小数,右对齐)
  • 最后一行:盒子向量。三个数,表示模拟盒子的边长。

我的小习惯:坐标读入时,一定要关注residue number和atom number的字段宽度。很多新手复制粘贴时,字段宽度一错,坐标就全乱套了。

4.1.2 .pdb文件:蛋白质数据库的老大哥

.pdb是PDB(Protein Data Bank)的通用格式,历史更久远。你从网上下载的结构,十有八九是.pdb。它的信息量比.gro大,但也更啰嗦。

同样一个原子,.pdb里是这样写的:

ATOM      1  N   CRO A   1       1.424   1.267   1.000  1.00  0.00           N  
ATOM      2  H1  CRO A   1       1.457   1.233   0.959  1.00  0.00           H  
ATOM      3  H2  CRO A   1       1.413   1.305   0.960  1.00  0.00           H  
ATOM      4  H3  CRO A   1       1.444   1.266   1.051  1.00  0.00           H  
ATOM      5  CA  CRO A   1       1.385   1.199   1.021  1.00  0.00           C  
TER
END

注意看区别:

  • 列更多:多了链标识符(A)、坐标后的温度因子(1.00)和占位符(0.00)。
  • 有链信息:.pdb用ATOM和HETATM区分标准氨基酸和非标准残基。遇到水分子或配体,千万别把HETATM漏掉。
  • 终止符:TER和END。缺少TER,GROMACS会警告;缺少END,它可能会把后面的东西也吞进去,你想想看,这多危险。

我曾经在处理一个来自PDB的药物分子复合物时,发现原子类型全是HETATM,但我的力场参数里根本没有对应的原子类型。结果一跑就崩。所以,拿到.pdb第一步,先检查ATOM和HETATM,别偷懒。

4.1.3 盒子向量:模拟世界的边界

不管是.gro还是.pdb,最后都藏着一个重要的家伙——盒子向量。它定义了你的模拟宇宙有多大。

我习惯把它看成是晶胞参数。最简单的情况就是正方体盒子:

4.50000 4.50000 4.50000

这代表一个4.5nm×4.5nm×4.5nm的立方体。

但事情没那么简单。GROMACS支持各种变态形状:矩形、三斜、菱形……也就是说,盒子向量不一定是正交的,它们可能构成一个平行四边形。具体格式如下:

4.50000   4.50000   4.50000   0.00000   0.00000   0.00000

实际盒子里有9个分量:

  • 前三个:v1(x)、v2(y)、v3(z),对应三个基向量的长度。
  • 后三个:v1(y)、v1(z)、v2(z),对应基向量之间的角度信息(向量倾斜量)。

你想想看,做表面模拟时,盒子往往是二维周期性,三维里你得留出足够的真空层。这个时候,看懂盒子向量就特别关键。

我的避坑指南:当你在做NPT(恒温恒压)模拟时,盒子向量会随着压力变化自动调整。所以,建议你的初始盒子就定义好形状,否则grompp这一步会报错,说你的盒子不是正交的。嗯,记得在.mdp文件里加上gen_box=no,然后手动检查。

4.1.4 原子编号规则:索引即生命线

原子编号,听起来很简单,对吧?从1、2、3开始排下去。

但问题是,编号的起点、跳跃和顺序,直接决定了你的拓扑关系是否正确。

这里有几个硬规则:

  • 连续性:编号必须连续,不能断档。比如你跳过了10号原子,那后面的11号实际上对应的是第11个原子,但GROMACS在写索引文件时,会直接根据行号来,一错全错。
  • 残基边界:一个残基内的原子编号不必连续,但残基之间的原子编号必须递增。比如水分子,它的氧原子编号是23,氢是24和25,这没问题。但如果中间插了一个编号是20的钙离子,那水的三个原子就没法被认成一个基团。
  • 头文件匹配:GROMACS的拓扑文件(.top)里,原子类型是靠编号来匹配坐标的。如果把编号搞乱了,你后面的能量最小化,压根没必要跑,直接报错。

我曾经在构建一个多配体体系时,为了省时间,手动复制粘贴了一个.sdf文件的原子到.pdb里,结果编号从100直接跳到了102,中间留了个101的空位。gmx grompp二话没说,直接提示“Atom index out of range”。我花了一个下午才定位到那个空位,简直想撞墙。

所以,切记:编写脚本后,一定要用cat -n或者文本编辑器显示行号,检查原子编号。

4.1.5 .gro与.pdb的互换

两个格式之间互相倒来倒去,是日常操作。比如你从PDB下载了.pdb,但GROMACS默认用.gro跑得最顺。或者你用gmx editconf处理结构,输出的是.gro,但有些可视化软件(比如VMD)读.pdb更舒服。

做法很简单:

# .pdb → .gro
gmx editconf -f my.pdb -o my.gro

# .gro → .pdb
gmx editconf -f my.gro -o my.pdb

但你以为就这么简单?

注意点:

  • 精度损失:.gro的坐标只有3位小数。如果你从.pdb(4位小数)转过来,会丢精度。反过来,从.gro转.pdb,你要自己补精度。
  • 盒子向量:.gro的盒子向量是9个元素,但.pdb的盒子向量是用CRYST1记录在文件头。如果你转格式,editconf会自动带过来。但如果你的.pdb里根本没有CRYST1行,那转成.gro后盒子向量会是0 0 0,你猜猜看会发生什么?没错,周期性边界条件直接失效,模拟跑几帧就飞了。
  • 原子名称:.pdb允许14个字符的原子名,但.gro只认5个。超长的名字会被截断,导致拓扑里找不到对应类型。我在处理一个冠醚体系时就踩过这个坑。

我个人的习惯是,尽量用.gro作为工作格式。它简单、紧凑、兼容GROMACS的细节。只有在需要提交到PDB或VMD做复杂可视化时,才转回.pdb。然后,转换前一定先用gmx check检查一下,看看有没有警告。

gmx check -f my_structure.gro

这条命令会告诉你坐标范围、盒子向量、残基断点等信息。嗯,干这一行,检查胜过一切。

4.1.6 格式对比一览

我把.gro和.pdb的差异整理成了一张表,方便你随时查阅:

特性 .gro .pdb
**起源** GROMACS原生 PDB标准
**坐标精度** 3位小数 3-4位小数
**元素类型** 无(由名字推断) 第13-14列显式定义
**链标识** 无 有(ATOM 1 N CRO A )
**盒子向量** 最后一行(9个元素) 第一行的CRYST1记录
**文件体积** 小(紧凑) 大(冗长)
**兼容GROMACS** 极好 好(但需预处理)
**处理难度** 易 中(常需格式清理)

好了,现在你对.gro和.pdb应该心里有数了。坐标格式看字段宽度,盒子向量决定边界,原子编号是灵魂。记住,结构文件是模拟的基石。这块搞不定,后面再牛的参数也白搭。

结构文件核心知识体系 结构文件类型 .gro 格式 .pdb 格式 坐标格式 盒子向量 原子编号规则 ATOM/HETATM CRYST1 盒子 TER/END 终止符 相互转换(editconf) 关键点:精度损失、原子名称截断、盒子向量完整性