4.2 输出文件与轨迹管理


文档摘要

4.2 输出文件与轨迹管理 本节摘要:一次生产运行会产出五类文件:trr 全精度轨迹、xtc 压缩轨迹、edr 能量数据、log 日志、cpt 检查点。本节讲清每类的精度、用途与保留策略,用一笔磁盘账演示为什么"全存 trr"会撑爆存储,并给出输出频率参数的组合配方与轨迹体检(gmx check)的用法。轨迹是整次模拟最值钱的资产,管理它的核心思想是分层:热数据用 xtc,温数据用 edr,契约凭证是 tpr。 4.1 让模拟跑了起来,本节管它的产物。先建立一个价值排序:xtc 轨迹是货、edr 是仪表读数、log 是体检表、cpt 是存档点、trr 是高风险奢侈品。

4.2 输出文件与轨迹管理

本节摘要:一次生产运行会产出五类文件:trr 全精度轨迹、xtc 压缩轨迹、edr 能量数据、log 日志、cpt 检查点。本节讲清每类的精度、用途与保留策略,用一笔磁盘账演示为什么"全存 trr"会撑爆存储,并给出输出频率参数的组合配方与轨迹体检(gmx check)的用法。轨迹是整次模拟最值钱的资产,管理它的核心思想是分层:热数据用 xtc,温数据用 edr,契约凭证是 tpr。

4.1 让模拟跑了起来,本节管它的产物。先建立一个价值排序:xtc 轨迹是货、edr 是仪表读数、log 是体检表、cpt 是存档点、trr 是高风险奢侈品。多数新手的事故不是"存少了"而是"存错了"——把宝贵的磁盘与 IO 预算花在 trr 上,却忘了给 xtc 留足输出频率,跑完发现分析要的帧根本没存。

五类输出各管什么

文件 内容 精度 默认频率 保留策略
md.xtc 压缩轨迹(坐标) 约 0.001 nm nstxout-compressed 全保留,分析主力
md.trr 全精度轨迹(坐标+速度) 浮点全精度 nstxout(常设 0) 默认不产;仅自由能等需速度的场景保留
md.edr 能量与热力学量 双精度累计 nstenergy 全保留,小而关键
md.log 运行日志与性能 文本 nstlog 全保留,排查第一现场
md.cpt 检查点快照 全量状态 每 15 分钟 覆盖式更新,另存关键节点

trr 与 xtc 的区别要说透:trr 每帧存全部坐标加速度,浮点原样落盘;xtc 用压缩算法把坐标量化到指定精度(compressed-x-precision = 1000 对应 0.001 nm),并把盒子内坐标打包。0.001 nm 什么概念?C–C 键长 0.154 nm 的千分之七,远小于力场参数本身的误差——分析用途上 xtc 的精度损失可以忽略,代价却只有 trr 的几十分之一

磁盘账:算过再开跑

心算公式:trr 每帧字节数 = 原子数 × 3 × 4(float32)+ 盒子 9 个数;xtc 经验值约为同频 trr 的十分之一到三十分之一(量化加变长打包)。演算一笔:2.3 的体系(约 37000 原子:7214 水 × 3 + 1200 聚合格点 + 离子,取整):

  • trr 每帧 ≈ 37000 × 3 × 4 B ≈ 444 KB;每 1 ps 存一帧(dt 2 fs 即每 500 步)→ 100 ns 轨迹 = 100000 帧 ≈ 44 GB
  • xtc 每帧经验值 ≈ 15 至 44 KB,取 20 KB → 同期约 2 GB
  • edr 每 ps 一条记录,500 ns 也就几百 MB;log 与 txt 类更是零头

同一个体系,两种选择的差距是 20 多倍。这就是为什么 3.1 的 mdp 里 nstxout(trr)设为 0 或极粗、nstxout-compressed 设 1000(2 ps)的原因——输出频率是分析设计的一部分:构象分析 10 ps 一帧足够(5.2 的 RMSD 对亚皮秒变化不敏感),而算扩散系数要整段连续轨迹,频率够用即可、时长越长越好。

轨迹体检与后处理工具箱

两个必会的体检动作。gmx check 验证文件完整性与时间连续性:

$ gmx check -f md.xtc Checking file md.xtc Reading frame 0 time 0.000 # ... Last frame 5000 time 100000.000 ← 末帧时间对得上 nsteps,没有缺段 Item #frames Timestep (ps) RMSD 0 ... → 有帧数、步长信息的汇总表

trjconv 是轨迹的瑞士军刀——格式转换、回卷、居中、挑原子、抽帧全靠它(5.1 整节展开它的 -pbc 语义,这里先见个面):

# 抽出聚合物 + 去掉水:为 5.2 的分析减负 $ printf "PEO\n" | gmx trjconv -s md.tpr -f md.xtc -o md_peo.xtc -dump 0 # 每 100 ps 抽一帧的轻量存档(长期保存用) $ printf "System\n" | gmx trjconv -s md.tpr -f md.xtc -o md_archive.xtc -dt 100

第二个命令值得形成制度:跑完即做一份抽稀存档。原始 xtc 若因存储事故损失,100 ps 粒度的存档仍能保住全部慢过程的结论;反之只有抽稀版则永远补不回高频细节。分层存放,风险对冲。

易错点与本节速记

三个常见失误:其一,nstxout 没归零,百 GB 级 trr 静悄悄写满配额,任务在 90 ns 处因磁盘满而崩(4.3 的经典死法之一);其二,nstenergy 设太大(如 10000,即 20 ps 一条),3.6 与 7.2 的涨落统计严重欠采样——能量记录的频率必须是涨落时间尺度的数倍以上;其三,analysis 时拿了 npt 阶段的 tpr 配 md 阶段的轨迹(原子数一致但质量定义或分组不同),结果静默出错。规矩:每条轨迹配对它自己的 tpr,目录按"前缀=阶段"组织,永不混搭

演算:能量文件的账与输出频率配方

edr 的账与轨迹不同:它按"能量项 × 记录条数"线性增长,与原子数关系不大。一套 6 类能量项的体系每 ps 一条记录,跑 500 ns 约是 50 万条 × 每条几十字节 → 几十 MB 级,几乎永远不是瓶颈——所以 nstenergy 的正确态度是"宁细勿粗":涨落统计(3.6 的热容、7.2 的压强均值)都要从 edr 里来,欠采样的能量文件救不回来。

输出频率按分析目标反推,配方可查:

分析目标 nstxout-compressed nstenergy 理由
构象/RMSD/RDF 500 到 1000 步(1-2 ps) 500 帧间变化远小于涨落即可
扩散系数 250 到 500 步 500 位移要连续,帧距细于慢涨落
氢键寿命 50 到 100 步(0.1-0.2 ps) 500 键的断裂发生在皮秒内
碰撞/快动力学 10 到 50 步 100 按最快过程定

对照表自查一遍就会发现一个常见浪费:很多人为了"保险"把氢键分析的轨迹按 50 步一帧存全程——0.1 ps 帧距 × 微秒时长,xtc 也能堆到 TB 级。正确姿势是分阶段:平衡段粗存、专设一段细存的短窗(如 10 ns × 0.1 ps 帧距)做动力学统计。

三个高频疑问

trr 里存速度有什么用? 两个场景:重启需要(其实 cpt 更合适)、以及某些动力学分析(速度自相关函数、动能谱)必须用速度轨迹。没这些需求就把 nstvout 设 0。顺带一提,n stxout(坐标 trr)与 nstvout(速度 trr)是两个独立开关,关一个不关另一个是常见的手滑来源。

xtc 会丢精度影响我的分析吗? 按量化误差 0.001 nm 评估:RMSD 的典型量级 0.1 nm、RDF 峰宽 0.05 nm、氢键判据阈值 0.35 nm——压缩误差比这些尺度小两个数量级。真正怕压缩误差的只有"键长分布"这类亚 0.01 nm 尺度的统计,那类分析用 trr 或直接读 EM 后的单帧。原则一句话:先问分析的分辨尺度,再定精度与频率

磁盘快满了先删什么? 顺序:无主的中途备份目录、重复的基准测试输出、平衡段的 trr(如果有)——永远不要动的是 tpr、log、cpt 与生产 xtc。前三个是"这份数据为什么可信"的凭证,最后一个是货本身。养成在目录里放一份 README 纯文本说明每个文件来自哪次 grompp 的习惯,三个月后的你会回来谢你。

速记:五类文件一句话——货(xtc)、奢侈品(trr)、仪表(edr)、体检表(log)、存档点(cpt);磁盘账先算后跑,输出频率是分析设计的一部分;precision 1000 对应 0.001 nm,分析足够;跑完即做抽稀存档;tpr 与轨迹严格配对。货入仓了,可万一半夜灯灭——下一节的排查手册就是手电筒。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U