Лучший способ хранения объектов TFile через rootpy
Я пытаюсь сохранить класс Python (или только члены) в файле ROOT (CERN, TFile
через rootpy.
Я могу легко сделать это с помощью Tree
и TreeModel
но это работает только для базовых типов и не приводит к структуре, которую я ищу. Я также быстро взглянул на rootpy.io.pickler
но это не позволяет осмотр с TBrowser
(сбой).
Мне было интересно, если есть лучший способ. Что бы я хотел иметь
Мой файл:
- Каталог моего выбора
- каталог с названием моего объекта
- основные типы объектов (int, float, string)
- гистограммы (это легко)
- другие сложные объекты
Как вы видите, это не может быть реализовано с Tree
и я не знаю, как добавить основные типы в Directory
, Есть идеи?
Я хотел бы избежать, если возможно, логического обхода сохранения параметров объекта в дереве и гистограмм непосредственно в одном и том же Directory
,
1 ответ
Единственная идея, которая у меня есть, - создать TDirectory, который вы хотите, в своем TFile и добавить содержимое в этот каталог. Гистограммы просты. Основные типы могут храниться в дереве. Для других сложных объектов вы могли бы взглянуть на рассол. Сериализованный объект (т.е. pickle_string = pickle.dumps(Foo)
) можно затем сохранить в дереве в виде строки, не прерывая проверку через TBrowser. Это работает без rootpy, просто используя PyROOT. Я надеюсь, что это может помочь.