Skip to content
Snippets Groups Projects

Resolve "uproot4 integration"

Merged Tamas Gal requested to merge 58-uproot4-integration-2 into master
Compare and Show latest version
3 files
+ 60
86
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 36
4
@@ -28,6 +28,7 @@ class EventReader:
step_size=2000,
keys=None,
aliases=None,
nested_branches=None,
event_ctor=None,
):
"""EventReader base class
@@ -65,6 +66,11 @@ class EventReader:
self._event_ctor = event_ctor
self._index_chain = [] if index_chain is None else index_chain
if aliases is not None:
self.aliases = aliases
if nested_branches is not None:
self.nested_branches = nested_branches
if self._keys is None:
self._initialise_keys()
@@ -141,6 +147,7 @@ class EventReader:
index_chain=self._index_chain + [key],
step_size=self._step_size,
aliases=self.aliases,
nested_branches=self.nested_branches,
keys=self.keys(),
event_ctor=self._event_ctor,
)
@@ -166,11 +173,34 @@ class EventReader:
else:
return unfold_indices(branch[self.aliases.get(key, key)].array(), self._index_chain)
def __iter__(self):
self._events = self._event_generator()
def __iter__(self, chunkwise=False):
self._events = self._event_generator(chunkwise=chunkwise)
return self
def _event_generator(self):
def _get_iterator_limits(self):
"""Determines start and stop, used for event iteration"""
if len(self._index_chain) > 1:
raise NotImplementedError("iteration is currently not supported with nested slices")
if self._index_chain:
s = self._index_chain[0]
if not isinstance(s, slice):
raise NotImplementedError("iteration is only supported with slices")
if s.step is None or s.step == 1:
start = s.start
stop = s.stop
else:
raise NotImplementedError("iteration is only supported with single steps")
else:
start = None
stop = None
return start, stop
def _event_generator(self, chunkwise=False):
start, stop = self._get_iterator_limits()
if chunkwise:
raise NotImplementedError("iterating over chunks is not implemented yet")
events = self._fobj[self.event_path]
group_count_keys = set(
k for k in self.keys() if k.startswith("n_")
@@ -188,7 +218,7 @@ class EventReader:
log.debug("keys: %s", keys)
log.debug("aliases: %s", self.aliases)
events_it = events.iterate(
keys, aliases=self.aliases, step_size=self._step_size
keys, aliases=self.aliases, step_size=self._step_size, entry_start=start, entry_stop=stop
)
nested = []
nested_keys = (
@@ -201,6 +231,8 @@ class EventReader:
self.nested_branches[key].keys(),
aliases=self.nested_branches[key],
step_size=self._step_size,
entry_start=start,
entry_stop=stop
)
)
group_counts = {}
Loading