Github: https://github.com/proio-org/proio
Proio is an event-oriented streaming data format based on Google's protocol buffers (protobuf). Proio aims to add event structure and additional compression to protobuf in a way that supports event data model serialization in medium- and high-energy physics. Additionally, proio
- supports self-descriptive data,
- is stream compatible,
- is language agnostic,
- and brings along many advantages of protobuf, including forward/backward compatibility.
For detailed information on the proio format and introductory information on the software implementations, please see DOI 10.1016/j.cpc.2019.03.018. This work was inspired and influenced by LCIO, ProMC (Sergei Chekanov), and EicMC (Alexander Kiselev)
There are several language-native library implementations of proio which support manipulating events and reading/writing streams. Each of these implementations adhere to the proio format, and therefore produce and consume compatible streams.
Most proio tools are written in go. This is to provide highly portable but
also highly performant tools. The tool sources are located
here, and the tools
are go get
-able with the following command (if you have the go
compiler):
go get github.com/proio-org/go-proio/tools/...
If you do not have the go
compiler, you can find pre-compiled binaries in
the go-proio releases.