2014-02-17 23 views
0

我一直在使用PyMC分析一些高能物理数据。它一直在努力完善,分析已经完成,我们正在撰写论文。PyMC在采样后更改后端

但是我有一个小问题。我使用RAM数据库后端运行采样器。这些痕迹现在已经在IPython内核进程的内存中呆了几个月。问题是工作站支持人员想要执行内核升级并重启该工作站。这会让我失去痕迹。我想保留这些痕迹(而不是仅仅产生新的痕迹),因为它们就是我所做的所有情节。我还想包含部分痕迹(仅限感兴趣的参数)作为出版物的补充材料。

是否有可能利用RAM后端创建的pymc.MCMC对象中的现有链,更改为不同的后端,并写出链中的跟踪?

回答

1

跟踪值存储为NumPy数组,因此您可以使用numpy.savetxt将每个参数的值发送到文件。 (这是文本后端在底层做了什么。)

虽然保存当前跟踪是一个好主意,但我建议在发布之前花时间让分析重复。

+0

谢谢。当然,这种分析是可重复的,在这一点上,我真的不想重新做一个过夜的运行(再次)。这些地块已经得到了合作的批准。如果他们改变了,即使这些改变是不可见的(他们会这样做),我将不得不再次通过审批流程。因此保存现有的痕迹是可取的。 在更一般的情况下,一些计算可能会被禁止再次运行。也许你会花费CPU时间。能够从这样的错误中拯救跑步是一件好事。 – jsw