-
Notifications
You must be signed in to change notification settings - Fork 15
Description
IMO, ROOT is a dependency that is somewhat of a limitation for larcv2. I think it would be nice to be able to deploy larcv without needing to (potentially) build ROOT on a system, say for example a student's laptop.
There are two places ROOT is used in larcv2, and they are independent I think.
- Root is used to generate python bindings for C++ code.
- Root is used to produce binary files for data persistence.
I think to address (1) there are several solutions available. The one I thought of first is boost.python, though that is not the only option. Cython also offers intriguing options, and in fact many options exist: https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages.
For (2) I think hdf5 is an obvious choice for a broadly used data format. It also has the advantage of being an industry standard in a lot of ways. I have seen other software using hdf5 format that has larger file sizes compared to ROOT for the same data, though I think PyTables offers a better compression to deal with that: https://www.pytables.org/FAQ.html
In summary, probably the easiest path to replacing ROOT would be a combination of Cython and PyTables.