-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make it possible to read only a subset of available collections in readers #504
base: master
Are you sure you want to change the base?
Conversation
58f9802
to
71eeece
Compare
71eeece
to
eed4ab9
Compare
Revived this as this is likely to become an issue for moving EDM4hep forwards otherwise. I have settled on making it possible to pass the collections that should be made available on a frame-by-frame basis as that is the most flexible and is also rather simple to implement. I still have to make sure that the idTable that is available from the constructed Frames is properly cleaned up and also add some tests that passing in unavailable collection names doesn't break the whole thing. |
7cc113d
to
8b532ac
Compare
8b532ac
to
a1ce8be
Compare
73121eb
to
a961357
Compare
It looks like we don't strictly need to trim down the collection id table, as it is by now really only used for the lookups between hashes and collection names. I will keep it as is and leave trimming that down for now as an optimization that can also be done later. |
8d37566
to
2a04ed8
Compare
ae216f5
to
c57a4e8
Compare
It looks like the RNTuple implementation up to (and including) ROOT 6.30 cannot really deal with switching between different sets of Fields when reading. It's possible to read full frames and frames with only a subset of collections separately, but it is not possible to first read full frames and then frames with only a subset of collections with the same reader. I have decided to bump the minimum ROOT version to 6.32 for RNTuple support to make things work for now. |
It is possible that users want to "ignore" a certain collection when reading files. It should then still be possible to add a new collection with the same name to the event that has been created without breaking anything.
Facilitates the usage of projections with range algorithms
c57a4e8
to
df50fb2
Compare
I have done some (manual) checks with EDM4hep and schema changes that lead to breaks when reading back collections, that are handled gracefully if the affected collections are ignored. I have not yet found a really good way to add automated tests for that in podio directly. They would be nice to have, but I am not sure if it is worth the effort now. I would almost be in favor of merging this rather soon, after some review, and then adding them later, resp. checking that via the EDM4hep build & tests we also do in CI. |
BEGINRELEASENOTES
collsToRead
argument toreadEntry
andreadNextEntry
for theROOTFrameReader
to allow limiting the collections that are actually read.ENDRELEASENOTES
This is an (early) proposal for introducing this functionality which would in the end address #499
collsToRead
will be silently ignored.std::ranges
.dev3
stacks