计算化学公社

标题: 求助:怎么把amber的mdcrd轨迹文件转为gromacs的xtc? [打印本页]

作者
Author:
灵芝5    时间: 2023-12-27 18:09
标题: 求助:怎么把amber的mdcrd轨迹文件转为gromacs的xtc?
老师,您好:

       我用amber跑了一段轨迹,文件格式是mdcrd。想转成gromacs的xtc格式,再对轨迹进行处理。我按照下面的步骤转化:

(1)先用cpptraj的指令把mdcrd转成xtc。
(2)再用acpype.py脚本,把prmtop和inpcrd转成top和gro。
(3)再用gromacs的editconf把gro转成pdb。之后开始处理轨迹。

      但是在center轨迹的时候,需要用到trjconv的-pbc选项,这个选项只能用初始结构的tpr作为参考结构。但是我没有。
请问老师怎么获得初始结构的tpr文件?或者有其它方法可以顺利转化并处理xtc轨迹吗?


谢谢老师!

作者
Author:
mol    时间: 2023-12-27 18:35
您通过(2)获取到top和gro之后就可以用grompp命令生成tpr文件了
作者
Author:
灵芝5    时间: 2023-12-27 21:29
老师,您好:
谢谢您的解答!

我试了用(2)获取到top和gro和grompp命令生成tpr文件,但是程序报错如下:

应该是体系中有POPC的原因。请问这个怎么解决?我把top和gro文件上传到附件了。

谢谢您。
作者
Author:
FanZhou    时间: 2025-8-19 16:48
灵芝5 发表于 2023-12-27 21:29
老师,您好:
谢谢您的解答!

我在别处看到
sed 's/ 2C / CT /g' system_solv_GMX.top | sed 's/ 3C / CT /g' | sed 's/ IP / Na+/' | sed 's/ IM / Cl-/' > system_solv_GMX_corr.top

链接:https://jamesmccarty.github.io/r ... er2gro#reorder-ions
希望有帮助
作者
Author:
许正东    时间: 2025-10-24 08:23
老师好,请问您最后解决了吗?tpr文件生成出来了吗?还有就是amber生成的轨迹,转为gromacs-xtc后,需要去周期性吗?
作者
Author:
Shinecyh    时间: 2025-12-20 20:28
我之前也找了好久怎么转换,后面发现MDAnalysis包非常方便。下面是我写的代码,记得在有MDAnalysis的环境中运行:
  1. #!/usr/bin/env python
  2. """
  3. Amber转Gromacs极简脚本
  4. """

  5. import MDAnalysis as mda
  6. import sys

  7. def convert_amber_to_gmx(prmtop, nc_traj, output_prefix="system"):
  8.     """
  9.     最简单的转换函数
  10.     """
  11.     print(f"转换: {prmtop} + {nc_traj} -> {output_prefix}.{{gro,xtc}}")
  12.    
  13.     # 1. 加载文件
  14.     print("加载Amber文件...")
  15.     u = mda.Universe(prmtop, nc_traj)
  16.    
  17.     print(f"  原子数: {len(u.atoms):,}")
  18.     print(f"  残基数: {len(u.residues):,}")
  19.     print(f"  轨迹帧数: {len(u.trajectory):,}")
  20.    
  21.     # 2. 保存第一帧为gro
  22.     print("保存结构文件...")
  23.     u.trajectory[0]  # 跳转到第一帧
  24.     u.atoms.write(f"{output_prefix}.gro")
  25.     print(f"  ✓ {output_prefix}.gro")
  26.    
  27.     # 3. 保存轨迹为xtc
  28.     print("转换轨迹文件...")
  29.     with mda.Writer(f"{output_prefix}.xtc", u.atoms.n_atoms) as W:
  30.         for i, ts in enumerate(u.trajectory):
  31.             W.write(u.atoms)
  32.             if i % 100 == 0:
  33.                 print(f"  已处理 {i+1}/{len(u.trajectory)} 帧")
  34.    
  35.     print(f"  ✓ {output_prefix}.xtc")
  36.     print("转换完成!")
  37.    
  38.     return f"{output_prefix}.gro", f"{output_prefix}.xtc"

  39. # 命令行接口
  40. if __name__ == "__main__":
  41.     if len(sys.argv) < 3:
  42.         print("用法: python amber2gmx.py amber.prmtop trajectory.nc [output_prefix]")
  43.         print("示例: python amber2gmx.py system.prmtop md.nc system")
  44.         sys.exit(1)
  45.    
  46.     prmtop_file = sys.argv[1]
  47.     nc_file = sys.argv[2]
  48.     output = sys.argv[3] if len(sys.argv) > 3 else "system"
  49.    
  50.     convert_amber_to_gmx(prmtop_file, nc_file, output)
复制代码

作者
Author:
sobereva    时间: 2025-12-21 06:03
VMD载入AMBER的轨迹,save coordinte选择trr保存新轨迹就完事了(之后可以trjconv再转成xtc),这是最简单的做法,都用不着脚本




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3