Интеграция HDF5 с каркасом ROOT

Я много работал с ROOT, у которого есть собственный формат для файлов данных, но по разным причинам мы хотели бы перейти на файлы HDF5. К сожалению, нам все еще требуется какой-то способ перевода файлов между форматами. Кто-нибудь знает о каких-либо существующих библиотеках, которые делают это?

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 тоже.

Другие вопросы по тегам