Skip to content

issue reading tracks.usr data

@tgal @jschumann

as a followup to the issue #39 (closed) , I realized that best_track fails with @adomi file because km3io can not read tracks.usr data. Here is the error:


In [1]: import km3io as ki

In [2]: r = ki.OfflineReader("/home/zineb/Downloads/mcv5.1.genhen_anumuNC.sirene.jte.jchain.aashower.7.root")

In [3]: trk = r.events[0].tracks

In [4]: trk.dir_z
Out[4]: 
array([-1.07542271e-01, -1.07542271e-01, -1.07542271e-01, -1.19143022e-01,
       -1.67952385e-01, -8.90734293e-02, -2.21739542e-01, -8.49305503e-02,
       -7.90512441e-02, -1.09114738e-01, -9.05574075e-02, -8.80751009e-02,
       -1.45556897e-01, -1.24347805e-01, -1.40586009e-01, -1.30909248e-01,
       -9.08788819e-02, -1.27533107e-01, -1.09356231e-01, -1.07196582e-01,
       -9.72476003e-02, -1.64802013e-01, -1.63353857e-01, -8.36759217e-02,
       -8.47319654e-02, -1.12186443e-01, -1.09371233e-01, -1.33543743e-01,
       -1.33543743e-01, -1.09371233e-01, -1.57637054e-01, -1.09371233e-01,
       -1.57637054e-01, -1.09371233e-01, -1.81636876e-01, -1.09371233e-01,
       -1.33543743e-01, -1.33543743e-01,  0.00000000e+00,  6.12323400e-17,
        3.86674980e-01, -2.95017494e-01, -8.77054114e-01, -5.94520470e-01,
       -9.55497952e-01, -9.38177935e-01, -9.97959630e-01, -9.93066708e-01,
       -9.93017552e-01, -6.30810531e-01, -1.77665289e-01, -3.57597735e-01])

In [5]: trk.usr
/home/zineb/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/base.py:394: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
  return cls.numpy.array(value, copy=False)
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-5-4163cab01346> in <module>
----> 1 trk.usr

~/km3net/km3net/km3io/km3io/rootio.py in __getattribute__(self, attr)
    125             return self.__getkey__(attr)
    126 
--> 127         return object.__getattribute__(self, attr)
    128 
    129     def __getkey__(self, key):

~/km3net/km3net/km3io/km3io/tools.py in __get__(self, obj, cls)
     20         if obj is None:
     21             return self
---> 22         prop = obj.__dict__[self.function.__name__] = self.function(obj)
     23         return prop
     24 

~/km3net/km3net/km3io/km3io/offline.py in usr(self)
     77     @cached_property
     78     def usr(self):
---> 79         return Usr(self._mapper, self._branch, index_chain=self._index_chain)
     80 
     81 

~/km3net/km3net/km3io/km3io/offline.py in __init__(self, mapper, branch, index_chain)
     92         self._usr_key = 'usr' if mapper.flat else mapper.key + '.usr'
     93 
---> 94         self._initialise()
     95 
     96     def _initialise(self):

~/km3net/km3net/km3io/km3io/offline.py in _initialise(self)
    117 
    118         if self._index_chain:
--> 119             data = unfold_indices(data, self._index_chain)
    120 
    121         self._usr_data = data

~/km3net/km3net/km3io/km3io/tools.py in unfold_indices(obj, indices)
     29     for depth, idx in enumerate(indices):
     30         try:
---> 31             obj = obj[idx]
     32         except IndexError:
     33             print(

~/km3net/km3net/km3io/km3io/patches.py in new_getitem(self, item)
     12         return ak1.Array(self)[item]
     13     else:
---> 14         return old_getitem(self, item)
     15 
     16 

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/chunked.py in __getitem__(self, where)
    340         if self._util_isinteger(head):
    341             chunk, localhead = self.global2local(head)
--> 342             return chunk[(localhead,) + tail]
    343 
    344         elif isinstance(head, slice):

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/virtual.py in __getitem__(self, where)
    367 
    368     def __getitem__(self, where):
--> 369         return self.array[where]
    370 
    371     def __setitem__(self, where, what):

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/virtual.py in array(self)
    293         if self._array is None:
    294             # states (1) and (3)
--> 295             return self.materialize()
    296 
    297         elif self._cache is None:

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/virtual.py in materialize(self)
    324 
    325     def materialize(self):
--> 326         array = self._util_toarray(self._generator(*self._args, **self._kwargs), self.DEFAULTTYPE)
    327         if self._setitem is not None:
    328             for n, x in self._setitem.items():

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/tree.py in __call__(self, entrystart, entrystop)
   1986 
   1987     def __call__(self, entrystart, entrystop):
-> 1988         return self.branch.array(interpretation=self.interpretation, entrystart=entrystart, entrystop=entrystop, flatten=self.flatten, awkwardlib=self.awkwardlib, cache=None, basketcache=self.basketcache, keycache=self.keycache, executor=self.executor, blocking=True)
   1989 
   1990 def lazyarray(path, treepath, branchname, interpretation=None, namedecode="utf-8", entrysteps=float("inf"), flatten=False, awkwardlib=None, cache=None, basketcache=None, keycache=None, executor=None, persistvirtual=False, localsource=MemmapSource.defaults, xrootdsource=XRootDSource.defaults, httpsource=HTTPSource.defaults, **options):

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/tree.py in array(self, interpretation, entrystart, entrystop, flatten, awkwardlib, cache, basketcache, keycache, executor, blocking)
   1415             keycache = {}
   1416 
-> 1417         basket_itemoffset = self._basket_itemoffset(interpretation, basketstart, basketstop, keycache)
   1418         basket_entryoffset = self._basket_entryoffset(basketstart, basketstop)
   1419 

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/tree.py in _basket_itemoffset(self, interpretation, basketstart, basketstop, keycache)
   1370         for j, key in enumerate(self._threadsafe_iterate_keys(keycache, True, basketstart, basketstop)):
   1371             i = basketstart + j
-> 1372             numitems = interpretation.numitems(key.border, self.basket_numentries(i))
   1373             basket_itemoffset.append(basket_itemoffset[-1] + numitems)
   1374         return basket_itemoffset

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/interp/jagged.py in numitems(self, numbytes, numentries)
     59 
     60     def numitems(self, numbytes, numentries):
---> 61         return self.content.numitems(numbytes - numentries * self.skipbytes, numentries)
     62 
     63     def source_numitems(self, source):

~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/interp/numerical.py in numitems(self, numbytes, numentries)
    157         dtype, shape = _dtypeshape(self.fromdtype)
    158         quotient, remainder = divmod(numbytes, dtype.itemsize)
--> 159         assert remainder == 0
    160         return quotient
    161 

AssertionError: 

In [6]: