Skip to content

feat: finish implementing library kwarg for RNTuples#1632

Open
ariostas wants to merge 1 commit into
mainfrom
ariostas/rntuple_implement_library
Open

feat: finish implementing library kwarg for RNTuples#1632
ariostas wants to merge 1 commit into
mainfrom
ariostas/rntuple_implement_library

Conversation

@ariostas
Copy link
Copy Markdown
Member

This PR finishes implementing the library kwarg used in arrays() and similar functions for RNTuples. I initially postponed the implementation since I think it would be ideal to have all the conversions done by Awkward. But given that it is needed by users, I wrote a simple implementation.

AI disclosure: I didn't use AI for the code changes.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 18, 2026

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
1182 1 1181 18
View the top 1 failed test(s) by shortest run time
tests/test_1591_rntuple_read_to_numpy.py::test_reading_into_numpy
Stack Traces | 0.01s run time
def test_reading_into_numpy():
        filename = skhep_testdata.data_path(
            "Run2012BC_DoubleMuParked_Muons_1000evts_rntuple_v1-0-0-0.root"
        )
        with uproot.open(filename) as f:
            obj = f["Events"]
            ak_arrays = obj.arrays(filter_name="n*")
            np_arrays = obj.arrays(library="np", filter_name="n*")
            assert isinstance(ak_arrays, ak.Array)
>           assert isinstance(np_arrays, np.ndarray)
E           AssertionError: assert False
E            +  where False = isinstance({'nMuon': array([ 2,  2,  1,  4,  4,  3,  2,  2,  2,  2,  2,  2,  6,  3,  2,  1,  2,\n        2,  2,  2,  2,  5,  3,  3,  4,  2,  2,  2,  3,  2,  0,  2,  3,  2,\n        3,  3,  2,  2,  2,  2,  2,  2,  3,  2,  3,  1,  3,  2,  5,  3,  1,\n        5,  2,  2,  3,  2,  1,  2,  3,  2,  3,  2,  1,  1,  5,  2,  0,  2,\n        1,  2,  1,  4,  2,  2,  2,  2,  4,  2,  1,  1,  2,  1,  2,  1,  1,\n        2,  1,  5,  2,  1,  3,  3,  2,  2,  3,  4,  1,  2,  0,  2,  2,  2,\n        2,  2,  1,  2,  2,  2,  4,  3,  2,  3,  2,  7,  2,  2,  2,  3,  4,\n        2,  1,  0,  2,  3,  2,  2,  3,  2,  2,  1,  2,  2,  1,  4,  2,  2,\n        5,  2,  3,  2,  2,  3,  5,  2,  1,  7,  3,  2,  2,  2,  2,  2,  2,\n        2,  2,  2,  2,  2,  4,  2,  3,  2,  0,  2,  1,  3,  2,  4,  5,  2,\n        2,  2,  5,  2,  3,  2,  2,  3,  2,  4,  2,  1,  3,  0,  2,  2,  3,\n        4,  2,  3,  3,  6,  2,  2,  2,  2,  2,  6,  2,  2,  1,  2,  2,  3,\n        3,  2,  2,  2,  2,  2,  4,  2,  4,  2,  2,  2,  2,  4,  2,  2,  2,\n        2,  2,  3,  2,  2,  2,  3,  4,  2,  3,  0,  2,  1,  3,  4,  0,  1,\n        2,  2,  1,  4,  3,  2,  1,  2,  2,  2,  2,  2,  4,  2,  4,  4,  3,\n        2,  2,  2,  2,  3,  2,  5,  2,  2,  4,  3,  3,  2,  3,  1,  2,  2,\n        0,  2,  2,  2,  2,  5,  3,  2,  3,  2,  0,  2,  2,  2,  5,  2,  4,\n        0,  5,  2,  2,  3,  3,  2,  2,  2,  2,  2,  2,  3,  2,  2,  2,  2,\n        4,  2,  2,  2,  1,  2,  2,  9,  5,  2,  3,  1,  4,  2,  2,  2,  2,\n        2,  3,  3,  3,  2,  2,  2,  1,  2,  2,  2,  1,  7,  2,  2,  3,  0,\n        2,  2,  1,  2,  3,  3,  1,  2,  2,  3,  3,  6,  2,  0,  2,  2,  2,\n        3,  2,  1,  3,  2,  2,  2,  2,  2,  1,  3,  2,  2,  2,  3,  2,  2,\n        2,  3,  3,  5,  2,  2,  3,  1,  2,  2,  3,  3,  2,  2,  3,  2,  2,\n        2,  2,  2,  4,  2,  1,  3,  2,  2,  1,  2,  4,  2,  1,  2,  2,  0,\n        3,  2,  2,  2,  2,  1,  3,  2,  2,  1,  2,  2,  2,  4,  2,  2,  2,\n        2,  4,  3,  2,  3,  2,  2,  2,  2,  2,  3,  2,  2,  2,  2,  1,  2,\n        3,  2,  3,  4,  1,  1,  2,  2,  2,  2,  2,  2,  2,  4,  2,  2,  2,\n        4,  3,  2,  4,  2,  2,  5,  2,  2,  4,  2,  2,  3,  3,  2,  3,  2,\n        2,  3,  3,  1,  2,  2,  4,  2,  3,  3,  2,  2,  2,  2,  2,  2,  3,\n        6,  3,  2,  2,  2,  3,  3,  2,  2,  3,  5,  2,  2,  1,  3,  1,  2,\n        3,  2,  1,  2,  2,  3,  4,  2,  3,  3,  2,  5,  3,  1,  1,  2,  0,\n        2,  2,  3,  4,  3,  1,  4,  2,  2,  3,  3,  1,  3,  3,  3,  2,  1,\n        4,  4,  2,  2,  4,  2,  2,  4,  2,  2,  3,  2,  2,  2,  1,  2,  1,\n        2,  1,  3,  2,  1,  2,  1,  2,  2,  2,  0,  2,  3,  3,  2,  1,  2,\n        3,  2,  1,  3,  2,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,\n        2,  2,  3,  2,  2,  2,  5,  2,  2,  1,  2,  2,  2,  1,  1,  3,  2,\n        2,  2,  2,  2,  3,  5,  2,  2,  1,  4,  2,  2,  2,  3,  2,  2,  4,\n        3,  2,  3,  3,  1,  4,  2,  2,  2,  0,  2,  1,  1,  4,  3,  2,  3,\n        2,  1,  2,  2,  1,  2,  8,  2,  2,  4,  2,  3,  1,  2,  2,  2,  2,\n        2,  2,  2,  2,  2,  2,  2,  1,  2,  5,  2,  3,  0,  1,  4,  0,  2,\n        2,  2,  4,  1,  5,  2,  2,  2,  2,  2,  2,  2,  3,  3,  2,  2,  2,\n        2,  2,  4,  2,  2,  2,  2,  5,  2,  2,  4,  2,  3,  5,  3,  2,  3,\n        3,  2,  2,  3,  2,  1,  5,  2,  2,  4,  2,  3,  2,  2,  2,  2,  2,\n        2,  2,  2,  2,  2,  4,  2,  2,  3,  1,  2,  2,  4,  1,  2,  1,  4,\n        2,  1,  2,  3,  2,  1,  3,  2,  3,  4,  2,  2,  2,  3,  3,  3,  4,\n        4,  2,  2,  1,  2,  5,  2,  5,  2,  4,  3,  3,  3,  2,  2,  2,  2,\n        5,  1,  2,  2,  3,  4,  3,  2,  2,  4,  1,  2,  2,  2,  3,  3,  2,\n        3,  2,  2, 10,  3,  2,  3,  1,  1,  2,  2,  2,  4,  2,  2,  4,  2,\n        1,  2,  3,  2,  2,  1,  2,  2,  2,  2,  3,  4,  2,  2,  3,  2,  3,\n        2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  1,  3,  5,  3,  4,  2,  3,\n        2,  1,  2,  5,  2,  2,  4,  3,  2,  1,  4,  2,  2,  2,  1,  2,  3,\n        1,  2,  3,  5,  2,  3,  3,  2,  3,  1,  5,  4,  3,  2,  5,  4,  2,\n        3,  2,  3,  2,  3,  2,  3,  3,  2,  2,  2,  3,  3,  2,  1,  2,  2,\n        5,  3,  1,  2,  3,  2,  2,  2,  2,  2,  3,  2,  4,  2,  1,  5,  2,\n        3,  2,  3,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  1,  1,  2,  3,\n        0,  3,  2,  5,  2,  3,  2,  4,  3,  2,  2, 13,  4,  2,  2,  2,  2,\n        2,  2,  3,  2,  1,  2,  4,  1,  4,  2,  2,  2,  3,  2,  0,  3,  2,\n        3,  2,  2,  1,  2,  3,  2,  3,  2,  2,  2,  2,  3,  2,  3,  2,  2,\n        4,  4,  0,  3,  1,  3,  2,  2,  1,  3,  2,  3,  4,  3])}, <class 'numpy.ndarray'>)
E            +    where <class 'numpy.ndarray'> = np.ndarray

ak_arrays  = <Array [{nMuon: 2}, {...}, ..., {...}, {nMuon: 3}] type='1000 * {nMuon: int64}'>
f          = <ReadOnlyDirectory '/' at 0x150b0612d570>
filename   = '.../home/ar1092/.local/skhepdata/Run2012BC_DoubleMuParked_Muons_1000evts_rntuple_v1-0-0-0.root'
np_arrays  = {'nMuon': array([ 2,  2,  1,  4,  4,  3,  2,  2,  2,  2,  2,  2,  6,  3,  2,  1,  2,
        2,  2,  2,  2,  5,  3,  3,  4,  2,  2,  2,  3,  2,  0,  2,  3,  2,
        3,  3,  2,  2,  2,  2,  2,  2,  3,  2,  3,  1,  3,  2,  5,  3,  1,
        5,  2,  2,  3,  2,  1,  2,  3,  2,  3,  2,  1,  1,  5,  2,  0,  2,
        1,  2,  1,  4,  2,  2,  2,  2,  4,  2,  1,  1,  2,  1,  2,  1,  1,
        2,  1,  5,  2,  1,  3,  3,  2,  2,  3,  4,  1,  2,  0,  2,  2,  2,
        2,  2,  1,  2,  2,  2,  4,  3,  2,  3,  2,  7,  2,  2,  2,  3,  4,
        2,  1,  0,  2,  3,  2,  2,  3,  2,  2,  1,  2,  2,  1,  4,  2,  2,
        5,  2,  3,  2,  2,  3,  5,  2,  1,  7,  3,  2,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  4,  2,  3,  2,  0,  2,  1,  3,  2,  4,  5,  2,
        2,  2,  5,  2,  3,  2,  2,  3,  2,  4,  2,  1,  3,  0,  2,  2,  3,
        4,  2,  3,  3,  6,  2,  2,  2,  2,  2,  6,  2,  2,  1,  2,  2,  3,
        3,  2,  2,  2,  2,  2,  4,  2,  4,  2,  2,  2,  2,  4,  2,  2,  2,
        2,  2,  3,  2,  2,  2,  3,  4,  2,  3,  0,  2,  1,  3,  4,  0,  1,
        2,  2,  1,  4,  3,  2,  1,  2,  2,  2,  2,  2,  4,  2,  4,  4,  3,
        2,  2,  2,  2,  3,  2,  5,  2,  2,  4,  3,  3,  2,  3,  1,  2,  2,
        0,  2,  2,  2,  2,  5,  3,  2,  3,  2,  0,  2,  2,  2,  5,  2,  4,
        0,  5,  2,  2,  3,  3,  2,  2,  2,  2,  2,  2,  3,  2,  2,  2,  2,
        4,  2,  2,  2,  1,  2,  2,  9,  5,  2,  3,  1,  4,  2,  2,  2,  2,
        2,  3,  3,  3,  2,  2,  2,  1,  2,  2,  2,  1,  7,  2,  2,  3,  0,
        2,  2,  1,  2,  3,  3,  1,  2,  2,  3,  3,  6,  2,  0,  2,  2,  2,
        3,  2,  1,  3,  2,  2,  2,  2,  2,  1,  3,  2,  2,  2,  3,  2,  2,
        2,  3,  3,  5,  2,  2,  3,  1,  2,  2,  3,  3,  2,  2,  3,  2,  2,
        2,  2,  2,  4,  2,  1,  3,  2,  2,  1,  2,  4,  2,  1,  2,  2,  0,
        3,  2,  2,  2,  2,  1,  3,  2,  2,  1,  2,  2,  2,  4,  2,  2,  2,
        2,  4,  3,  2,  3,  2,  2,  2,  2,  2,  3,  2,  2,  2,  2,  1,  2,
        3,  2,  3,  4,  1,  1,  2,  2,  2,  2,  2,  2,  2,  4,  2,  2,  2,
        4,  3,  2,  4,  2,  2,  5,  2,  2,  4,  2,  2,  3,  3,  2,  3,  2,
        2,  3,  3,  1,  2,  2,  4,  2,  3,  3,  2,  2,  2,  2,  2,  2,  3,
        6,  3,  2,  2,  2,  3,  3,  2,  2,  3,  5,  2,  2,  1,  3,  1,  2,
        3,  2,  1,  2,  2,  3,  4,  2,  3,  3,  2,  5,  3,  1,  1,  2,  0,
        2,  2,  3,  4,  3,  1,  4,  2,  2,  3,  3,  1,  3,  3,  3,  2,  1,
        4,  4,  2,  2,  4,  2,  2,  4,  2,  2,  3,  2,  2,  2,  1,  2,  1,
        2,  1,  3,  2,  1,  2,  1,  2,  2,  2,  0,  2,  3,  3,  2,  1,  2,
        3,  2,  1,  3,  2,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,
        2,  2,  3,  2,  2,  2,  5,  2,  2,  1,  2,  2,  2,  1,  1,  3,  2,
        2,  2,  2,  2,  3,  5,  2,  2,  1,  4,  2,  2,  2,  3,  2,  2,  4,
        3,  2,  3,  3,  1,  4,  2,  2,  2,  0,  2,  1,  1,  4,  3,  2,  3,
        2,  1,  2,  2,  1,  2,  8,  2,  2,  4,  2,  3,  1,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  2,  2,  1,  2,  5,  2,  3,  0,  1,  4,  0,  2,
        2,  2,  4,  1,  5,  2,  2,  2,  2,  2,  2,  2,  3,  3,  2,  2,  2,
        2,  2,  4,  2,  2,  2,  2,  5,  2,  2,  4,  2,  3,  5,  3,  2,  3,
        3,  2,  2,  3,  2,  1,  5,  2,  2,  4,  2,  3,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  4,  2,  2,  3,  1,  2,  2,  4,  1,  2,  1,  4,
        2,  1,  2,  3,  2,  1,  3,  2,  3,  4,  2,  2,  2,  3,  3,  3,  4,
        4,  2,  2,  1,  2,  5,  2,  5,  2,  4,  3,  3,  3,  2,  2,  2,  2,
        5,  1,  2,  2,  3,  4,  3,  2,  2,  4,  1,  2,  2,  2,  3,  3,  2,
        3,  2,  2, 10,  3,  2,  3,  1,  1,  2,  2,  2,  4,  2,  2,  4,  2,
        1,  2,  3,  2,  2,  1,  2,  2,  2,  2,  3,  4,  2,  2,  3,  2,  3,
        2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  1,  3,  5,  3,  4,  2,  3,
        2,  1,  2,  5,  2,  2,  4,  3,  2,  1,  4,  2,  2,  2,  1,  2,  3,
        1,  2,  3,  5,  2,  3,  3,  2,  3,  1,  5,  4,  3,  2,  5,  4,  2,
        3,  2,  3,  2,  3,  2,  3,  3,  2,  2,  2,  3,  3,  2,  1,  2,  2,
        5,  3,  1,  2,  3,  2,  2,  2,  2,  2,  3,  2,  4,  2,  1,  5,  2,
        3,  2,  3,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  1,  1,  2,  3,
        0,  3,  2,  5,  2,  3,  2,  4,  3,  2,  2, 13,  4,  2,  2,  2,  2,
        2,  2,  3,  2,  1,  2,  4,  1,  4,  2,  2,  2,  3,  2,  0,  3,  2,
        3,  2,  2,  1,  2,  3,  2,  3,  2,  2,  2,  2,  3,  2,  3,  2,  2,
        4,  4,  0,  3,  1,  3,  2,  2,  1,  3,  2,  3,  4,  3])}
obj        = <ROOT::RNTuple 'Events' (7 fields) at 0x150cb68f2710>

tests/test_1591_rntuple_read_to_numpy.py:18: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant