Skip to content
Snippets Groups Projects
Commit 41e151ac authored by Tamas Gal's avatar Tamas Gal :speech_balloon:
Browse files

Allow dict-key access to attributes

parent c2c476a1
No related branches found
No related tags found
1 merge request!27Refactor offline I/O
...@@ -266,14 +266,17 @@ class Branch: ...@@ -266,14 +266,17 @@ class Branch:
return object.__getattribute__(self, attr) return object.__getattribute__(self, attr)
if attr in self._keymap.keys(): # intercept branch key lookups if attr in self._keymap.keys(): # intercept branch key lookups
out = self._branch[self._keymap[attr]].lazyarray( return self.__getkey__(attr)
basketcache=BASKET_CACHE)
if self._index is not None:
out = out[self._index]
return out
return object.__getattribute__(self, attr) return object.__getattribute__(self, attr)
def __getkey__(self, key):
out = self._branch[self._keymap[key]].lazyarray(
basketcache=BASKET_CACHE)
if self._index is not None:
out = out[self._index]
return out
def __getitem__(self, item): def __getitem__(self, item):
"""Slicing magic""" """Slicing magic"""
if isinstance(item, (int, slice)): if isinstance(item, (int, slice)):
...@@ -286,6 +289,9 @@ class Branch: ...@@ -286,6 +289,9 @@ class Branch:
if isinstance(item, tuple): if isinstance(item, tuple):
return self[item[0]][item[1]] return self[item[0]][item[1]]
if isinstance(item, str):
return self.__getkey__(item)
return self.__class__(self._tree, return self.__class__(self._tree,
self._mapper, self._mapper,
index=np.array(item), index=np.array(item),
......
...@@ -63,10 +63,10 @@ class TestOfflineEvents(unittest.TestCase): ...@@ -63,10 +63,10 @@ class TestOfflineEvents(unittest.TestCase):
self.assertListEqual(self.t_ns, list(self.events.t_ns)) self.assertListEqual(self.t_ns, list(self.events.t_ns))
def test_keys(self): def test_keys(self):
self.assertListEqual(self.n_hits, list(self.events['n_hits'])) assert np.allclose(self.n_hits, self.events['n_hits'])
self.assertListEqual(self.n_tracks, list(self.events['n_tracks'])) assert np.allclose(self.n_tracks, self.events['n_tracks'])
self.assertListEqual(self.t_sec, list(self.events['t_sec'])) assert np.allclose(self.t_sec, self.events['t_sec'])
self.assertListEqual(self.t_ns, list(self.events['t_ns'])) assert np.allclose(self.t_ns, self.events['t_ns'])
def test_slicing(self): def test_slicing(self):
s = slice(2, 8, 2) s = slice(2, 8, 2)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment