From 9b2c4b45ac313be0c148524e6d1370804b0a655d Mon Sep 17 00:00:00 2001 From: Tamas Gal <tgal@km3net.de> Date: Thu, 10 Dec 2020 22:31:02 +0100 Subject: [PATCH] Rename special to nested (branches) --- km3io/offline.py | 4 ++-- km3io/rootio.py | 60 ++++++++++++++++++++++++------------------------ 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/km3io/offline.py b/km3io/offline.py index 5a548df..47c1f82 100644 --- a/km3io/offline.py +++ b/km3io/offline.py @@ -24,7 +24,7 @@ class OfflineReader(EventReader): "usr": "AAObject/usr", "usr_names": "AAObject/usr_names", } - special_branches = { + nested_branches = { "hits": { "id": "hits.id", "channel_id": "hits.channel_id", @@ -78,7 +78,7 @@ class OfflineReader(EventReader): "usr_names": "mc_trks.usr_names", # TODO: trouble with uproot4 }, } - special_aliases = { + nested_aliases = { "tracks": "trks", "mc_tracks": "mc_trks", } diff --git a/km3io/rootio.py b/km3io/rootio.py index a03b5d9..1c2d1cf 100644 --- a/km3io/rootio.py +++ b/km3io/rootio.py @@ -16,10 +16,10 @@ class EventReader: event_path = None item_name = "Event" - skip_keys = [] - aliases = {} - special_branches = {} - special_aliases = {} + skip_keys = [] # ignore these subbranches, even if they exist + aliases = {} # top level aliases -> {fromkey: tokey} + nested_branches = {} + nested_aliases = {} def __init__( self, @@ -30,7 +30,7 @@ class EventReader: aliases=None, event_ctor=None, ): - """OfflineReader class is an offline ROOT file wrapper + """EventReader base class Parameters ---------- @@ -88,8 +88,8 @@ class EventReader: set( list(self.keys()) + list(self.aliases) - + list(self.special_branches) - + list(self.special_aliases) + + list(self.nested_branches) + + list(self.nested_aliases) ), ) @@ -97,9 +97,9 @@ class EventReader: skip_keys = set(self.skip_keys) toplevel_keys = set(k.split("/")[0] for k in self._fobj[self.event_path].keys()) keys = (toplevel_keys - skip_keys).union( - list(self.aliases.keys()) + list(self.special_aliases) + list(self.aliases.keys()) + list(self.nested_aliases) ) - for key in list(self.special_branches) + list(self.special_aliases): + for key in list(self.nested_branches) + list(self.nested_aliases): keys.add("n_" + key) # self._grouped_branches = {k for k in toplevel_keys - skip_keys if isinstance(self._fobj[self.event_path][k].interpretation, uproot.AsGrouped)} self._keys = keys @@ -115,7 +115,7 @@ class EventReader: def _keyfor(self, key): """Return the correct key for a given alias/key""" - return self.special_aliases.get(key, key) + return self.nested_aliases.get(key, key) def __getattr__(self, attr): attr = self._keyfor(attr) @@ -154,15 +154,15 @@ class EventReader: # These are special branches which are nested, like hits/trks/mc_trks # We are explicitly grabbing just a predefined set of subbranches # and also alias them to be backwards compatible (and attribute-accessible) - if key in self.special_branches: + if key in self.nested_branches: fields = [] # some fields are not always available, like `usr_names` - for to_field, from_field in self.special_branches[key].items(): + for to_field, from_field in self.nested_branches[key].items(): if from_field in branch[key].keys(): fields.append(to_field) log.debug(fields) - # out = branch[key].arrays(fields, aliases=self.special_branches[key]) - return Branch(branch[key], fields, self.special_branches[key], self._index_chain) + # out = branch[key].arrays(fields, aliases=self.nested_branches[key]) + return Branch(branch[key], fields, self.nested_branches[key], self._index_chain) else: return unfold_indices(branch[self.aliases.get(key, key)].array(), self._index_chain) @@ -174,13 +174,13 @@ class EventReader: events = self._fobj[self.event_path] group_count_keys = set( k for k in self.keys() if k.startswith("n_") - ) # special keys to make it easy to count subbranch lengths + ) # extra keys to make it easy to count subbranch lengths log.debug("group_count_keys: %s", group_count_keys) keys = set( list( set(self.keys()) - - set(self.special_branches.keys()) - - set(self.special_aliases) + - set(self.nested_branches.keys()) + - set(self.nested_aliases) - group_count_keys ) + list(self.aliases.keys()) @@ -191,18 +191,18 @@ class EventReader: events_it = events.iterate( keys, aliases=self.aliases, step_size=self._step_size ) - specials = [] - special_keys = ( - self.special_branches.keys() + nested = [] + nested_keys = ( + self.nested_branches.keys() ) # dict-key ordering is an implementation detail - log.debug("special_keys: %s", special_keys) - for key in special_keys: - # print(f"adding {key} with keys {self.special_branches[key].keys()} and aliases {self.special_branches[key]}") + log.debug("nested_keys: %s", nested_keys) + for key in nested_keys: + # print(f"adding {key} with keys {self.nested_branches[key].keys()} and aliases {self.nested_branches[key]}") - specials.append( + nested.append( events[key].iterate( - self.special_branches[key].keys(), - aliases=self.special_branches[key], + self.nested_branches[key].keys(), + aliases=self.nested_branches[key], step_size=self._step_size, ) ) @@ -211,14 +211,14 @@ class EventReader: group_counts[key] = iter(self[key]) log.debug("group_counts: %s", group_counts) - for event_set, *special_sets in zip(events_it, *specials): - for _event, *special_items in zip(event_set, *special_sets): + for event_set, *nested_sets in zip(events_it, *nested): + for _event, *nested_items in zip(event_set, *nested_sets): data = {} for k in keys: data[k] = _event[k] - for (k, i) in zip(special_keys, special_items): + for (k, i) in zip(nested_keys, nested_items): data[k] = i - for tokey, fromkey in self.special_aliases.items(): + for tokey, fromkey in self.nested_aliases.items(): data[tokey] = data[fromkey] for key in group_counts: data[key] = next(group_counts[key]) -- GitLab