Интеграция HDF5 с каркасом ROOT
3 ответа
Вы можете проверить rootpy, который имеет средство для преобразования файлов ROOT в HDF5 через PyTables: http://www.rootpy.org/commands/root2hdf5.html
Если эта проблема по-прежнему представляет интерес для вас, в последнее время произошли значительные улучшения в сценарии rootpyh root5hdf5 и пакете root_numpy (который root2hdf5 использует для преобразования TTrees в структурированные массивы NumPy):
root2hdf5 -h
usage: root2hdf5 [-h] [-n ENTRIES] [-f] [--ext EXT] [-c {0,1,2,3,4,5,6,7,8,9}]
[-l {zlib,lzo,bzip2,blosc}] [--script SCRIPT] [-q]
files [files ...]
positional arguments:
files
optional arguments:
-h, --help show this help message and exit
-n ENTRIES, --entries ENTRIES
number of entries to read at once (default: 100000.0)
-f, --force overwrite existing output files (default: False)
--ext EXT output file extension (default: h5)
-c {0,1,2,3,4,5,6,7,8,9}, --complevel {0,1,2,3,4,5,6,7,8,9}
compression level (default: 5)
-l {zlib,lzo,bzip2,blosc}, --complib {zlib,lzo,bzip2,blosc}
compression algorithm (default: zlib)
--script SCRIPT Python script containing a function with the same name
that will be called on each tree and must return a tree or
list of trees that will be converted instead of the
original tree (default: None)
-q, --quiet suppress all warnings (default: False)
На момент последней проверки (несколько месяцев назад) у root2hdf5 было ограничение, что он не мог обрабатывать TBranches, которые были массивами. По этой причине я написал скрипт bash: root2hdf (извините за не креативное имя).
Он принимает ROOT-файл и путь к TTree в файле в качестве входных аргументов и генерирует исходный код и компилирует его в исполняемый файл, который может быть запущен для ROOT-файлов, преобразовывая их в наборы данных HDF5.
У него также есть ограничение, что он не может обрабатывать составные типы TBranch, но я не знаю, что root2hdf5 тоже.