通过rootpy存储对象TFile的最佳方法

时间:2015-10-05 16:44:36

标签: python root-framework rootpy

我试图通过rootpy在一个ROOT文件(CERN,TFile)中存储一个python类(或者只是成员)。

我可以使用TreeTreeModel轻松完成此操作,但这仅适用于基本类型,并且不会产生我正在寻找的结构。 我还快速查看了rootpy.io.pickler,但这不允许使用TBrowser进行检查(崩溃)。

我想知道是否有更好的方法。我想拥有什么

我的档案:

  • 我选择的目录
    • 具有我的对象名称的目录
    • 对象基本类型(int,float,string)
    • 直方图(一个很容易)
    • 其他复杂对象

如您所见,使用Tree无法实现这一点,我不知道如何将基本类型添加到Directory。有什么想法吗?

如果可能的话,我想避免将对象参数存储在树中并将直方图直接存储在同一Directory中的逻辑解决方法。

1 个答案:

答案 0 :(得分:1)

我唯一的想法是在你的TFile中创建你想要的TDirectory并将内容添加到这个目录。直方图很容易。基本类型可以存储在树中。对于其他复杂对象,您可以查看pickle。然后,序列化对象(即pickle_string = pickle.dumps(Foo))可以作为字符串存储在树中,而不会通过TBrowser中断检查。只使用PyROOT,这没有rootpy。我希望这可能有所帮助。