我试图通过rootpy在ROOT文件(CERN, TFile
)中存储python类(或只是成员)。
我可以很容易地做到这一点,使用Tree
和TreeModel
,但这只适用于基本类型,不会导致我正在寻找的结构。我还快速查看了rootpy.io.pickler
,但不允许检查TBrowser
(它崩溃了)。
我想知道是否有更好的方法。我想要什么
我的文件:- 我选择的
- 目录
- 目录与我的对象的名称
- 对象基本类型(int, float, string)
- 直方图(这个很简单)
- 其他复杂对象
正如你所看到的,这不能用Tree
实现,我不知道如何将基本类型添加到Directory
。什么好主意吗?
我想避免,如果可能的话,将对象参数存储在树和直方图直接存储在同一个Directory
的逻辑解决方案。
我唯一的想法是在TFile中创建所需的TDirectory,并将内容添加到该目录中。直方图很简单。基本类型可以存储在树中。对于其他复杂对象,您可以查看pickle。然后,序列化的对象(即pickle_string = pickle.dumps(Foo)
)可以作为字符串存储在树中,而不会破坏TBrowser的检查。这可以在没有rootpy的情况下工作,只使用PyROOT。