← 返回目录

处理分子动力学轨迹时,经常遇到这样的怪象:一个多链蛋白复合物,大部分链都好端端聚在一起,偏偏有一条链跑到很远的地方去了;好不容易把蛋白修好,又发现膜散开了。这些都不是模拟出了错,而是周期性边界(PBC)的赝象。本文记录针对多链膜蛋白复合物 xtc 轨迹的一套完整 gmx trjconv 处理流程,以及过程中容易踩的坑。


0. 为什么一条链会跑很远?

xtc 里保存的坐标是被”按盒子折叠”过的。GROMACS 默认逐分子(逐链)独立地把质心折回盒子里。当某条链的质心在某一帧越过盒子边界,它就被映射到对面的周期镜像,看起来跑到很远的地方;而其它链恰好还在原位,于是出现”大部分链聚在一起、唯独一条链离得很远”的现象。

这条链并没有”飞走”,它只是被放到了另一个等价的周期镜像里。坐标在物理上是正确的,只是观感上不连续。


1. 三步处理流程

下面是走通的完整流程。顺序很重要,每一步都基于上一步的输出。

第一步:补完整每个分子

先修复跨边界被切断的分子,把每条链各自补完整:

gmx trjconv -s step3_1.tpr -f traj-100ns-per-frame-001-to-099.xtc \
    -o nojump.xtc -pbc whole -n index-jun29.ndx

弹出选组时选 System

第二步:用 nojump 让蛋白复合物保持聚拢

gmx trjconv -s step3_1.tpr -f nojump.xtc \
    -o final.xtc -pbc nojump -n index-jun29.ndx

-pbc nojump 通过追踪每个原子相对上一帧的位移、消除跨边界跳变。蛋白扩散很慢、整体作为一个刚性装配一起移动,所以这一步能把复合物修得很完整、很聚拢。

前提nojump 要求初始帧(第 0 帧)本身就是完整聚在一起的。它保留的是相对初始帧的累积位移,如果起点就错了,结果也会错。

第三步:逐分子折回盒子,让膜重新规整并居中

到这里蛋白聚拢了,但膜蛋白体系会出现新问题——膜散开了

gmx trjconv -s step3_1.tpr -f final.xtc \
    -o final-centered.xtc -pbc mol -ur compact -center -n index-jun29.ndx

centering 组选 Protein(或你的目标残基组),输出组选 System

final-centered.xtc 就是给做图、看动画用的最终版本:蛋白聚拢、膜规整、目标居中。


2. 为什么 nojump 之后膜会散开?

这是膜蛋白体系用 nojump 时的典型现象,膜并没有坏掉,只是被”摊开”了。

原因在于 nojump 忠实保留每个原子的累积位移。蛋白扩散慢,所以被修得很聚拢;但脂质在膜平面内的横向扩散非常剧烈——100 ns 里每个脂分子都真实地游走了很长距离,nojump 把这些位移全保留下来,于是脂分子们沿着各自的真实轨迹散布到了好几个周期镜像里,看起来膜就”炸开 / 摊平”了。

坐标在物理上仍然正确(它是一张连续铺展、跨越周期镜像的膜),只是不再被收拢在一个盒子里。第三步的 -pbc mol 把每个分子(包括每个脂分子)的质心逐帧折回盒子,膜就重新变回规整的一层膜片。


3. 关键辨析:是谁把膜收回了盒子?

很容易误以为是 -center 把膜收拢的,其实不是。两个标志分工不同:

标志 作用
-pbc mol 逐分子把质心折回盒子——这才是让膜规整的功臣
-center 只做一次整体平移,把选中的组挪到盒子正中央,本身不折叠任何分子

所以如果只加 -center 不加 -pbc mol,膜还是会保持摊开的样子。两者在同一条命令里配合:-pbc mol 负责收拢,-center 顺带把蛋白摆正。

这也解释了为什么第三步能在保留蛋白聚拢的同时把膜收回来——居中之后蛋白复合物各条链都聚在盒子中心、远离边界,-pbc mol 就不会再把某条链折到对面去(那正是开头”一条链跑很远”的根因:当时那条链恰好贴着边界)。


4. 对特定残基居中

如果想对某个特定残基(而不是整个 Protein)居中,先在 index 里建好这个组:

gmx make_ndx -f step3_1.tpr -n index-jun29.ndx -o index-jun29.ndx
# 交互界面输入(假设 XXX 是残基号):
#   r XXX
#   name <新组号> resXXX_center
#   q

然后第三步在 centering 提问时选 resXXX_center 即可,-pbc mol 照常工作。

但有一个必须注意的陷阱-pbc mol -ur compact 的折叠是以居中后的盒子中心为基准的,凡是离居中组超过”半个盒长”的原子,都会被折到盒子对面。

所以复合物相对盒子越小越安全;复合物较大或居中残基偏在一侧时,跑完务必检查有没有链又跑偏了。


5. 关于 -n 选项的辨析

一个常见疑问:前两步是不是不该写 -n

-n index.ndx 只是把 index 文件里定义的组提供给 trjconv 选用,它本身不会自动选任何组,也不改变 PBC 处理逻辑。真正决定处理哪些原子的,是运行时交互界面里你选的那个组。

步骤 -n 是否必需 说明
第一步 -pbc whole 可有可无 对 System 做,System 是默认组,不需要自定义组
第二步 -pbc nojump 可有可无 同上
第三步 -center 必需 要用自定义居中组(如 resXXX_center),不在默认组里

所以前两步带不带 -n,只要最后选的是同一个组(如 System),结果完全一样。三步统一都写 -n 也完全没问题,反而不容易记混;唯一要注意的是带 -n 时交互界面列出的组更多、组号排列不同,别选错组号


6. 重要提醒


小结

针对多链膜蛋白复合物的 xtc 轨迹,处理三步法是:

  1. -pbc whole:补完整每个分子
  2. -pbc nojump:让蛋白复合物保持聚拢
  3. -pbc mol -ur compact -center:逐分子折回盒子,膜重新规整并居中

核心要点:让膜规整的是 -pbc mol 而非 -center;居中组的选择会影响折叠基准,要避开复合物边缘;-s 一定要用 .tpr;分析用途反而要保留 nojump 版的摊开坐标。