Лучший способ хранить объекты TFile через rootpy

Я пытаюсь сохранить класс python (или только членов) в файле ROOT (CERN, TFile) через rootpy.

Я могу легко сделать это, используя Tree и TreeModel, но это работает только для базовых типов и не приводит к структуре, которую я ищу. Я также быстро просмотрел rootpy.io.pickler, но это не позволяет проверить с помощью TBrowser (вылетает).

Мне было интересно, есть ли лучший способ. Что я хотел бы иметь

Мой файл:

  • directory of my choosing
    • directory with the name of my object
    • основные типы объектов (int, float, string)
    • гистограммы (это легко)
    • другие сложные объекты

Как видите, это невозможно реализовать с помощью Tree, и я не знаю, как добавить базовые типы в Directory. Любые идеи?

Я хотел бы избежать, если это возможно, логического обходного пути сохранения параметров объекта в дереве и гистограмм непосредственно в одном и том же Directory.


person DragonTux    schedule 05.10.2015    source источник


Ответы (1)


Единственная идея, которая у меня есть, это создать нужный TDirectory в вашем TFile и добавить содержимое в этот каталог. Гистограммы просты. Основные типы могут храниться в дереве. Для других сложных объектов вы можете взглянуть на pickle. Затем сериализованный объект (то есть pickle_string = pickle.dumps(Foo)) можно сохранить в дереве в виде строки, не прерывая проверку через TBrowser. Это работает без rootpy, просто используя PyROOT. Я надеюсь, что это может помочь.

person Sascha    schedule 14.10.2015