Skip to content

fitinf for single tracks

km3io.tools.fitinf fails for a single track:


[ins] In [1]: import km3io                                                                                                            

[ins] In [2]: from km3net_testdata import data_path                                                                                   

[ins] In [3]: from km3io.definitions import fitparameters as kfit                                                                     

[ins] In [4]: f = km3io.OfflineReader(data_path("offline/km3net_offline.root"))                                                       

[ins] In [5]: f.events.tracks.fitinf                                                                                                  
Out[5]: <Array [[[0.00496, 0.00342, -295, ... [], []]] type='10 * var * var * float64'>

[ins] In [6]: km3io.tools.fitinf(kfit.JGANDALF_BETA0_RAD, f.events.tracks)                                                            
Out[6]: <Array [[0.00496, 0.00496, ... 0.0123]] type='10 * var * float64'>

[ins] In [7]: km3io.tools.fitinf(kfit.JGANDALF_BETA0_RAD, f.events[3].tracks)                                                         
Out[7]: <Array [0.00604, 0.00604, ... 0.0294, 0.00878] type='20 * float64'>

[ins] In [8]: km3io.tools.fitinf(kfit.JGANDALF_BETA0_RAD, f.events[3].tracks[0])                                                      
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
~/Dev/km3io/km3io/tools.py in fitinf(fitparam, tracks)
    145     try:
--> 146         params = fit[count_nested(fit, axis=2) > index]
    147         return ak1.Array([i[:, index] for i in params])

~/Dev/km3io/km3io/tools.py in count_nested(arr, axis)
    175     if axis == 2:
--> 176         return ak1.count(arr, axis=2)
    177 

~/Dev/km3io/venv/lib/python3.8/site-packages/awkward1/operations/reducers.py in count(array, axis, keepdims, mask_identity)
    101         return awkward1._util.wrap(
--> 102             layout.count(axis=axis, mask=mask_identity, keepdims=keepdims), behavior
    103         )

ValueError: axis=2 exceeds the depth of the nested list structure (which is 1)

(https://github.com/scikit-hep/awkward-1.0/blob/0.2.36/src/libawkward/Content.cpp#L925)

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-8-4a631ce37098> in <module>
----> 1 km3io.tools.fitinf(kfit.JGANDALF_BETA0_RAD, f.events[3].tracks[0])

~/Dev/km3io/km3io/tools.py in fitinf(fitparam, tracks)
    148     except ValueError:
    149         # This is the case for tracks[:, 0] or any other selection.
--> 150         params = fit[count_nested(fit, axis=1) > index]
    151         return params[:, index]
    152 

~/Dev/km3io/km3io/tools.py in count_nested(arr, axis)
    172         return ak1.num(arr, axis=0)
    173     if axis == 1:
--> 174         return ak1.num(arr, axis=1)
    175     if axis == 2:
    176         return ak1.count(arr, axis=2)

~/Dev/km3io/venv/lib/python3.8/site-packages/awkward1/operations/structure.py in num(array, axis, highlevel)
    200         array, allow_record=False, allow_other=False
    201     )
--> 202     out = layout.num(axis=axis)
    203     if highlevel:
    204         return awkward1._util.wrap(out, behavior=awkward1._util.behaviorof(array))

ValueError: 'axis' out of range for 'num'

(https://github.com/scikit-hep/awkward-1.0/blob/0.2.36/src/libawkward/array/NumpyArray.cpp#L1333)