From 718677861d73619d47366b302c0b3dcc583a4d29 Mon Sep 17 00:00:00 2001
From: Tamas Gal <tgal@km3net.de>
Date: Wed, 1 Apr 2020 17:37:17 +0200
Subject: [PATCH] Add the ability for custom interpretations

---
 km3io/gseagen.py |  3 ++-
 km3io/offline.py | 15 ++++++++++-----
 km3io/tools.py   |  3 ++-
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/km3io/gseagen.py b/km3io/gseagen.py
index 29d8db7..c89d43d 100644
--- a/km3io/gseagen.py
+++ b/km3io/gseagen.py
@@ -48,5 +48,6 @@ class GSGReader:
                                              exclude={},
                                              update={},
                                              attrparser=lambda x: x,
-                                             flat=True)
+                                             flat=True,
+                                             interpretations={})
         return Branch(self._fobj, gseagen_events_mapper)
diff --git a/km3io/offline.py b/km3io/offline.py
index 14043bc..3949d0d 100644
--- a/km3io/offline.py
+++ b/km3io/offline.py
@@ -31,7 +31,8 @@ EVENTS_MAP = BranchMapper(name="events",
                               'n_mc_tracks': 'mc_trks'
                           },
                           attrparser=lambda a: a,
-                          flat=True)
+                          flat=True,
+                          interpretations={})
 
 SUBBRANCH_MAPS = [
     BranchMapper(name="tracks",
@@ -41,7 +42,8 @@ SUBBRANCH_MAPS = [
                  ['trks.usr_data', 'trks.usr', 'trks.fUniqueID', 'trks.fBits'],
                  update={},
                  attrparser=_nested_mapper,
-                 flat=False),
+                 flat=False,
+                 interpretations={}),
     BranchMapper(name="mc_tracks",
                  key="mc_trks",
                  extra={},
@@ -51,7 +53,8 @@ SUBBRANCH_MAPS = [
                  ],
                  update={},
                  attrparser=_nested_mapper,
-                 flat=False),
+                 flat=False,
+                 interpretations={}),
     BranchMapper(name="hits",
                  key="hits",
                  extra={},
@@ -61,7 +64,8 @@ SUBBRANCH_MAPS = [
                  ],
                  update={},
                  attrparser=_nested_mapper,
-                 flat=False),
+                 flat=False,
+                 interpretations={}),
     BranchMapper(name="mc_hits",
                  key="mc_hits",
                  extra={},
@@ -72,7 +76,8 @@ SUBBRANCH_MAPS = [
                  ],
                  update={},
                  attrparser=_nested_mapper,
-                 flat=False),
+                 flat=False,
+                 interpretations={}),
 ]
 
 
diff --git a/km3io/tools.py b/km3io/tools.py
index e443357..7ad0553 100644
--- a/km3io/tools.py
+++ b/km3io/tools.py
@@ -36,7 +36,7 @@ def _unfold_indices(obj, indices):
 
 BranchMapper = namedtuple(
     "BranchMapper",
-    ['name', 'key', 'extra', 'exclude', 'update', 'attrparser', 'flat'])
+    ['name', 'key', 'extra', 'exclude', 'update', 'attrparser', 'flat', 'interpretations'])
 
 
 class Branch:
@@ -102,6 +102,7 @@ class Branch:
 
     def __getkey__(self, key):
         out = self._branch[self._keymap[key]].lazyarray(
+            interpretation=self._mapper.interpretations.get(key),
             basketcache=BASKET_CACHE)
         return _unfold_indices(out, self._index_chain)
 
-- 
GitLab