Home > Molecular Dynamics > Sampling & Analysis > Fundamental > PMF不是画出来就算数:从收敛、重加权到2D自由能面的物理判据

PMF不是画出来就算数:从收敛、重加权到2D自由能面的物理判据
molecular-dynamics free-energy PMF umbrella-sampling convergence sampling-analysis

PMF不是画出来就算数:从收敛、重加权到2D自由能面的物理判据

很多人第一次做 PMF 时,最容易掉进一个坑:图是画出来了,但物理上并不一定成立。问题在于,能画出来,和能不能当成平衡自由能解释,是两回事。这篇文章只回答几个更基础、也更容易出错的问题:已有数据什么时候足够支持 PMF,什么时候只能报局部结果,什么时候必须重加权,什么时候 2D 图虽然能画,但其实不该把它写成“收敛的自由能面”。

结论

  • PMF 的定义本身并不难,真正困难的是采样是否真的支持这个定义。无偏 MD 确实可以直接给自由能,但前提是分析段已经平稳,而且目标坐标空间被充分访问;只要存在偏置、约束、umbrella 或多窗口合并,就不能跳过重加权
  • 2D PMF 不是“多画一个维度”那么简单,而是对采样混合提出了更高要求。如果某些区域从来没被访问过,任何后处理都不能把真实自由能补出来;因此,很多时候你真正能安全报告的,并不是全局 PMF,而是局部 PMF、条件分布或状态占据

PMF 到底是什么

对一个集合变量 $\xi$,平衡自由能剖面定义为:

\[F(\xi) = -k_B T \ln P(\xi) + C\]

如果有两个集合变量 $\xi,\eta$,对应的二维自由能面就是:

\[F(\xi,\eta) = -k_B T \ln P(\xi,\eta) + C\]

公式的通俗解释

这两个式子真正表达的是一句很朴素的话:某个状态如果在平衡系综里更常出现,它的自由能就更低。所以,问题的核心从来不是“会不会取负对数”,而是你算出来的 $P(\xi)$ 或 $P(\xi,\eta)$ 到底是不是平衡分布,这个分布覆盖的是全局空间还是只覆盖了一个局部盆地,以及每个 bin 里到底有多少有效独立样本。这三件事,才真正决定了你的 PMF 能不能被当成物理结果来解释。

在后面的例子里,我会经常用 P2Z 这两个符号。这里可以先把它们通俗地理解成两类常见坐标:P2 代表某种取向序参量,也就是“分子更偏向平躺、倾斜还是竖直”的量化描述;Z 代表某种位置坐标,例如分子相对于界面、膜中心或参考平面的距离。你完全可以把它们替换成自己体系里真正关心的两个集合变量。

什么叫“物理上正确”的 PMF

如果想让一条 PMF 在文章里站得住脚,至少要同时满足四件事:

  1. 数据来自同一个目标系综
  2. 用来分析的轨迹段已经进入平稳区
  3. 你关心的坐标范围内发生了足够的往返跃迁
  4. 误差估计使用的是有效样本数,不是总帧数

只要这四条里缺一条,图可能仍然能画出来,但解释时就必须明显降级

第一关:是不是同一个统计系综

这一点最容易被忽视。如果所有数据都来自同一统计系综,也就是温度一致、压力设置一致、力场和拓扑一致、体系组成与边界条件一致,同时没有额外偏置或约束,那么这些轨迹才有资格被当作同一个平衡分布的样本来合并分析。

那么你可以直接从直方图或核密度估计(KDE)得到 $P(\xi)$,再转成自由能。但只要出现下面任一种情况,就不能把所有帧直接混在一起做直方图

情况 为什么不能直接混合
对某个坐标加了 umbrella 势 采样分布已经被显式改权,不再对应原始无偏分布
加了位置约束或取向约束 体系访问相空间的方式被限制,直方图不再代表自然占据
做过 steered MD 或 pulling 轨迹带有外场驱动,不能直接当成平衡样本
合并了不同温度的数据 不同温度对应不同平衡分布,不能简单拼接
合并了不同哈密顿量或不同参数的数据 势能面本身不同,统计权重自然也不同

这时你要处理的已经不是“无偏概率”,而是“被改权重后的采样概率”。必须重加权,常见工具就是 WHAM、MBAR,或者更一般的重加权流程。

第二关:轨迹是不是已经进入平稳区

很多 PMF 最大的问题,不是采样短,而是前半段根本还没平衡。比如系统一开始从某个强行构建的初始构型出发,前几十纳秒甚至更久都还在弛豫。如果把这一段直接并进统计,得到的就不是平衡分布,而是“初始条件残留 + 平衡波动”的混合物。

一个实用做法,是先做平衡段检测,再决定从哪里开始统计。常用工具是 pymbar.timeseries。这里输入的数据,不是什么特殊格式文件,而是某个集合变量随时间变化的一列数据,最常见的就是 P2(t)Z(t) 这样的时间序列:

python - <<'PY'
from pymbar import timeseries
import numpy as np

P2_t = np.loadtxt('P2_t.dat')
t0, g, Neff = timeseries.detect_equilibration(P2_t, nskip=10)
print(t0, g, Neff)
PY

如果你手里保存的是多列文件,例如同一份文件里同时有时间、P2Z,那就应该先把你想分析的那一列取出来,再送进 detect_equilibration(),而不是把整张表不加区分地直接读进去。

这里最值得报告的,不是“我跑了多少 ns”,而是平衡起点 $t_0$、统计低效因子 $g$ 和有效样本数 $N_{\mathrm{eff}}$。

真正决定误差条大小的,是独立样本有多少,不是帧有多少。很多时候看起来“已经有几十万帧”,但如果自相关很强,真正能用于统计判断的独立样本可能并不多。

第三关:有没有真正发生“来回走动”

这是判断 PMF 是否可信的核心。真正有用的判断,不是“分布看起来挺宽”,而是体系有没有在你关心的几个主要状态之间真正来回走动,也就是是否发生了足够多的往返跃迁(round trips)。

对 1D 和 2D PMF,要求到底差在哪里

目标 至少要看到什么 不能轻易下的结论
1D PMF 主要盆地被多次访问,盆地之间有往返跃迁,不同重复给出相近边缘分布 只有单盆地波动时,不应宣称得到全局 PMF
2D PMF 两个坐标都被实质性访问,且在固定第一维时第二维也能混合,不同区域之间整体连通 如果第二维几乎没动,或固定某一维后另一维几乎不跨峰,就不应宣称得到全局 2D 自由能面

如果体系只在一个盆地附近晃动,那么你当然也能画出一条曲线,但那更接近“局部热涨落的自由能近似”,而不是全局 PMF。二维情况则更严格,因为它要求你不仅采到 $\xi$,还要在不同 $\eta$ 条件下把 $\xi$ 也采匀;一旦第二维只是窄范围波动,这张 2D 图通常就只能算局部地形

一个最常见的误区:能画 2D,不等于应该发 2D

很多人会这样做:选两个坐标,做二维直方图,再对联合概率取负对数,最后得到一张彩色图。从程序角度看完全没问题,但从物理角度看,可能只说明一件事:你的轨迹在一个局部区域里留下了很多点

这时真正应该问的,不是“图是不是好看”,而是三个更扎实的问题。第一,第二维是不是只覆盖了一个很窄的范围;如果是,那么 2D 图只是把局部波动展开成二维,并没有真正回答更大的自由能问题。第二,高自由能区域是“真的高”,还是“根本没采到”;没有访问到的格点,在视觉上很容易被误读成高能区,但统计学上它可能只是空白区。第三,盆地之间的通道是物理能垒,还是统计断裂;如果两个盆地中间几乎没有过渡点,你看到的未必是高能屏障,也可能只是采样没有连通,更专业地说,就是这些区域之间缺少足够的统计连通性

如果这些问题答不上来,最稳妥的表述通常不是“得到了全局 2D PMF”,而是把口径主动降到“局部 2D 自由能地形”“条件分布 $P(\xi\mid\eta)$”或者“已结合区间内的取向自由能”。

什么时候无偏 MD 足够

无偏 MD 适合回答的问题,其实比很多人想象得更有限,但也更扎实。与其笼统地说“能不能算 PMF”,不如先区分你到底想回答哪一类问题。

目标 无偏 MD 的适用性 更合适的表述
单个坐标的 1D 边缘自由能 较好 1D PMF
某个局部区域内的自由能起伏 较好 局部 PMF
分箱后的状态占据比较 较好 条件分布或占据统计
跨多个盆地的全局自由能 谨慎 只有在多次跨盆地跃迁后才可报告
同时含位置与取向的 2D 自由能面 很谨慎 通常先降级为局部 2D 或条件分布
含解离、再结合、重排等慢过程 很谨慎 往往需要增强采样支撑

如果你的无偏轨迹从头到尾都没有离开某个状态盆地,那么最合理的结论不是“体系没有别的态”,而是:当前采样没有能力回答这个问题

什么时候必须用 WHAM 或 MBAR

这个判断其实很干脆:只要采样权重被改过,就要重加权。与其把这一条说成一句口号,不如直接看常见场景:

场景 能不能直接做直方图 推荐处理
同一无偏 MD 可以 直方图或 KDE
umbrella 窗口 不可以 WHAM 或 MBAR
多温度数据合并 不可以 MBAR
有约束或 pulling 不可以 显式重加权
多个偏置窗口做 2D 分布 不可以 先去偏,再做联合分布

如果你手上已有沿某个坐标布置好的 umbrella 窗口,那么它们通常足够支持可靠的 1D PMF。至于能不能进一步得到 2D PMF,要看另一个坐标在每个窗口里是不是也混合得足够好。主坐标被偏置采到,并不自动意味着旁观变量也已经收敛,这一点在实际分析里经常被误判。

一个非常实用的判断:你到底能安全声称什么

诊断结果 最稳妥的说法
只有一个局部盆地被采到 局部自由能或局部涨落
1D 有多次跨峰跃迁,重复一致 可以报告 1D PMF
2D 中第二维很窄 只报告条件分布或局部 2D 地形
umbrella 在主坐标重叠良好,但副坐标混合差 主坐标 PMF 可信,2D 结果仅作定性参考
每个窗口内副坐标多次跨峰,重复一致 可以认真讨论 2D PMF

这张表背后的原则其实很简单:结论的口径,必须和采样能力匹配。很多结果并不是“完全不能发”,而是应该主动把口径降到“局部 PMF”“条件分布”或者“占据统计”这一层,这样反而更稳。

收敛不能只看“曲线变平”

很多人判断收敛时,只看 PMF 曲线后半段是不是“不怎么变了”。这远远不够,因为一条表面平滑的曲线,可能只是建立在高度相关重复不一致、或者根本没有跨盆地跃迁的数据上。

更可靠的收敛证据链

更可靠的判断,通常要把下面几类证据合在一起看:先看结果会不会随时间继续漂,也就是是否仍在发生系统性漂移;再看不同重复是否支持同一组物理结论;接着看你到底有多少真正独立的样本;最后再确认主要状态之间有没有真正发生来回切换,也就是是否存在足够的往返跃迁

  • 时间分块分析:把前 1/3、前 2/3 和全部数据分别算一次 PMF。这样做的目的,不是为了多画几条线,而是看结果会不会继续变。如果主要盆地位置、相对深度和势垒高度还在系统性漂移,那就说明体系还在持续演化、尚未真正稳定下来,此时“看起来平滑”并不等于已经收敛。
  • 重复一致性:不同重复轨迹给出的分布或 PMF 应该大体一致。这里最重要的不是三条线能不能完全重合,而是它们是否支持同一个物理结论。如果不同重复之间差异明显,最常见的解释不是“体系本来就这样”,而是混合仍然不足,也就是每条轨迹还在各自记着不同的初始路径。
  • 自相关分析:报告 $g$ 和 $N_{\mathrm{eff}}$,确认自己不是在用几十万帧去假装拥有几十万个独立样本。连续轨迹里的相邻帧往往很像,所以“帧数很多”不等于“信息很多”。这一步本质上是在修正相关样本导致的误差低估,也就是给误差条去水分,说明到底有多少真正能独立贡献统计信息的数据点。
  • 跃迁计数:主要盆地之间要有实质性的往返,而不是只在一个盆地里高频抖动。很多人看到时间序列很活跃,就以为体系采样得很好,但如果这些波动始终发生在同一个局部盆地里,那么关键状态之间的相对自由能差其实还没有被真正比较过。没有跨盆地跃迁时,很多相对自由能差并不稳。
  • 窗口重叠:对 umbrella 来说,相邻窗口必须足够连通。如果相邻窗口之间几乎没有共同覆盖的区域,WHAM 或 MBAR 就很难把整条 PMF 稳稳地拼起来。这时数学上虽然还能算,物理上却可能只是把几段彼此脱节的局部结果硬接在一起;更规范地说,就是窗口之间缺少足够的概率分布重叠

umbrella 数据至少要看什么

对于 umbrella,gmx wham 的常规检查项很重要:

gmx wham -it tpr-files.dat -if pullf-files.dat -o pmf.xvg -hist hist.xvg -ac

这里至少要看三件事,而且最好把它们理解成“这条 PMF 能不能被顺畅接起来”的三个层次检查:

  • 相邻窗口直方图有没有足够重叠。这是最基础的一关。如果相邻窗口几乎不相交,那么后处理再漂亮,也只是把统计上彼此脱节的区间强行缝在一起,整条曲线会缺少真正的连接。
  • 自相关时间是不是已经大到接近单窗口长度。这一步是在问:单个窗口里到底有没有采到足够多的独立信息。如果一个窗口里有效独立样本本来就很少,那么它对整条 PMF 的贡献会既不稳定又很难估误差;此时窗口数量再多,也不等于每个窗口都真的达到局部统计稳定
  • 不同窗口拼起来后有没有明显断链。所谓断链,不一定表现成肉眼可见的大跳跃,也可能表现为某些区间误差异常重复不一致,或者对分析参数极其敏感。如果一条 PMF 只要稍微改一下 bin、平滑或截断方式就明显变样,那通常不是“图画风不同”,而是底层采样还不够扎实。

如果某些窗口几乎没有重叠,或者窗口内采样时间和自相关时间是一个量级,那这套 PMF 就很难让人放心

2D PMF 什么时候才值得做

更关键的问题是:什么时候做 2D PMF 比做 1D 或条件分布更有信息增益

通常至少要同时满足三点:两个坐标都对应你真正关心的慢过程,这两个坐标在数据里都被实质性采样到了,而且在固定第一维时第二维不是“卡死”的,也就是没有被困在某个狭窄取值范围里。少了其中任何一条,二维分析带来的往往不是新信息,而是新噪声。

如果不满足,2D 往往只会带来两个后果:图更花哨,误差更大。因为二维一上来就会遭遇“维数灾难”:格点数一多,平均到每个 bin 的有效样本数会迅速下降,空 bin 和噪声会明显增加。

所以,在下面这些情况下,不做 2D 反而更专业:如果第二维只是辅助解释变量,如果第二维的采样范围很窄,如果第二维的混合时间明显比单窗口长度更长,或者你的核心结论本质上靠 1D 就已经成立,那么继续硬做 2D 往往只会增加图的复杂度,而不会提高结论的可信度。

还有一个细节:有些序参量自带“几何熵”

如果你用的是角度、取向序参量,或者由角度变换得到的量,那么要小心一个问题:原始分布里可能混进了变量测度本身带来的偏置

最直观的例子就是方向相关变量。即使体系完全各向同性,某些取向序参量的概率分布也未必是均匀的。这意味着直接计算

\[F(\xi) = -k_B T \ln P(\xi) + C\]

得到的可能既包含真实相互作用偏好,也包含“随机几何本来就更容易落在某些值附近”的贡献。这时最常见的处理方式有两种:

报告方式 含义 适合的讨论场景
原始 PMF 包含变量测度带来的几何熵 讨论状态占据、总体分布
相对参考分布的超额自由能 更突出相互作用导致的偏好 讨论取向偏好、界面诱导效应

这不是所有体系都必须做,但如果你的核心结论高度依赖“取向偏好”,那这个问题最好提前想清楚。否则读者看到的“最低谷”,有一部分可能只是变量定义自带的几何效应,而不全是体系相互作用本身。

一个面向实战的工作流

graph TB
    A["拿到已有轨迹"] --> B["先分清:无偏数据还是有偏数据"]
    B --> C["确定目标:1D、局部2D、还是全局2D"]
    C --> D["检测平衡段:t0、g、Neff"]
    D --> E["检查跃迁、重复一致性、窗口重叠"]
    E --> F{"采样是否支持目标结论"}
    F -->|支持| G["报告 PMF,并给出误差与收敛证据"]
    F -->|部分支持| H["降级为局部 PMF、条件分布或状态占据"]
    F -->|不支持| I["补采样或重新设计增强采样方案"]

这个流程最重要的一步,不是“画图”,而是中间那个判断:采样能力到底支不支持你想说的话。真正成熟的分析,不是把所有图都画出来,而是知道哪些图值得认真解释,哪些图只能当辅助材料

结果该怎么讲,才更站得住脚

一张自由能图要站得住脚,关键不在于修饰,而在于先把哪里可信、哪里还不能多说讲清楚:

  • 先说明平衡段和有效样本是怎么处理的。如果一开始就交代你已经剔除了前期非平衡部分,并且按相关性修正了有效样本数,读者会更容易接受后面的自由能结果,因为他知道这些曲线不是把所有帧不加区分地堆出来的。
  • 再说明 1D 结果为什么可信。如果主要状态之间已经出现多次往返跃迁,而且不同重复支持同一个结论,那么这时去讨论 1D PMF 的相对高低才更有底气,因为它背后有明确的动力学采样证据。
  • 谈到 2D 结果时主动限定范围。如果二维图只有一部分区域采样得比较扎实,那就只讨论那一部分,把它明确写成局部自由能地形或条件分布。这样做不会削弱文章,反而会让读者觉得你的判断更稳。
  • 对空白区和混合不足区保持克制。没有访问到的区域就不要硬解释,混合明显不足的方向也不要勉强下定量结论。这样做不是示弱,而是在保护结论的可信度

这种写法的价值不在于“更谨慎”,而在于把真正确定的部分讲扎实,把暂时不能确定的部分老老实实留白

最后总结

PMF 真正难的地方,从来不是软件命令,而是你是否对“这张图能回答什么问题”有清醒判断

  • 无偏 MD 确实可以直接给自由能,但前提是轨迹分析段已经平稳、混合、可重复。如果连主要状态之间的往返都没有发生,那么图上看到的更多只是局部波动,而不是可以放心解释的全局自由能。
  • 只要数据里存在偏置、约束、umbrella 或多窗口拼接,就必须认真做重加权。这不是后处理里的可选美化步骤,而是把“被改过权重的采样”还原成目标分布所必需的物理操作。
  • 2D PMF 的门槛显著高于 1D PMF,因为它要求两个坐标都被充分访问,而且在固定其中一维时另一维也要发生足够混合。很多 1D 看起来已经稳定的数据,一到二维分析就会暴露出空白区、断裂区和高噪声问题。
  • 没采到就是没采到,后处理不能替代真实采样。无论是更平滑的直方图、更复杂的重加权,还是更漂亮的二维彩图,都不能凭空恢复从未被访问过的状态或通道。
  • 当采样只支持局部结论时,老老实实报告局部结论,反而更有说服力。把结果写成局部 PMF、条件分布或状态占据,通常比强行宣称“全局自由能面已经收敛”更专业,也更经得起追问。

如果把这套判断标准先建立起来,你之后无论做无偏 MD、umbrella、metadynamics,还是更复杂的多维自由能分析,很多技术决策都会清楚得多。