通过rootpy存储对象的最佳方式



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

我可以很容易地做到这一点,使用TreeTreeModel,但这只适用于基本类型,不会导致我正在寻找的结构。我还快速查看了rootpy.io.pickler,但不允许检查TBrowser(它崩溃了)。

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

我的文件:

    我选择的
  • 目录
    • 目录与我的对象的名称
    • 对象基本类型(int, float, string)
    • 直方图(这个很简单)
    • 其他复杂对象

正如你所看到的,这不能用Tree实现,我不知道如何将基本类型添加到Directory。什么好主意吗?

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

我唯一的想法是在TFile中创建所需的TDirectory,并将内容添加到该目录中。直方图很简单。基本类型可以存储在树中。对于其他复杂对象,您可以查看pickle。然后,序列化的对象(即pickle_string = pickle.dumps(Foo))可以作为字符串存储在树中,而不会破坏TBrowser的检查。这可以在没有rootpy的情况下工作,只使用PyROOT。

最新更新