質問

I've worked extensively with ROOT, which has it's own format for data files, but for various reasons we would like to switch to HDF5 files. Unfortunately we'd still require some way of translating files between formats. Does anyone know of any existing libraries which do this?

役に立ちましたか?

解決

You might check out rootpy, which has a facility for converting ROOT files into HDF5 via PyTables: http://www.rootpy.org/commands/root2hdf5.html

他のヒント

If this issue is still of interest to you, recently there have been large improvements to rootpy's root2hdf5 script and the root_numpy package (which root2hdf5 uses to convert TTrees into NumPy structured arrays):

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)

As of when I last checked (a few months ago) root2hdf5 had a limitation that it could not handle TBranches which were arrays. For this reason I wrote a bash script: root2hdf (sorry for non-creative name).

It takes a ROOT file and the path to the TTree in the file as input arguments and generates source code & compiles to an executable which can be run on ROOT files, converting them into HDF5 datasets.

It also has a limitation that it cannot handle compound TBranch types, but I don't know that root2hdf5 does either.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top