Skip to content

Writing JUNO_ROOT output fails with uproot>=5.6.7 #68

@JostMigenda

Description

@JostMigenda
Full error message
> sntools ~/.astropy/cache/snewpy/models/Fornax_2021/lum_spec_22M_r10000_dat.h5 --format SNEWPY-Fornax_2021 --detector JUNO -o outfile-Fornax_2021.root -m ROOT_JUNO --end 200 --randomseed 314 --channel ps --distance 100

[ps] Generated 4 particles (expected: 3.92 particles)
[ps] Generated 4 particles (expected: 3.91 particles)
[ps] Generated 3 particles (expected: 3.80 particles)
[ps] Generated 4 particles (expected: 3.16 particles)
Traceback (most recent call last):
  File "/opt/miniconda3/envs/snewpy/bin/sntools", line 7, in <module>
    sys.exit(main())
             ~~~~^^
  File "/opt/miniconda3/envs/snewpy/lib/python3.13/site-packages/sntools/genevts.py", line 86, in main
    root_outfile.mktree("SNEvents",{"nparticles": "uint64", "origPDGID":"int32", "nuE":"double", "pdgid": ("int32",(2,)),"t": ("float64",(2,)),
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                    "px": ("float64",(2,)),"py":("float64",(2,)),"pz":("float64",(2,)),"m":("float64",(2,)), "channel": "int64"})
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/miniconda3/envs/snewpy/lib/python3.13/site-packages/uproot/writing/writable.py", line 1300, in mktree
    tree = self.mktree(
        name,
    ...<5 lines>...
        resize_factor=resize_factor,
    )
  File "/opt/miniconda3/envs/snewpy/lib/python3.13/site-packages/uproot/writing/writable.py", line 1328, in mktree
    directory._cascading.add_tree(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        directory._file.sink,
        ^^^^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
        resize_factor,
        ^^^^^^^^^^^^^^
    ),
    ^
  File "/opt/miniconda3/envs/snewpy/lib/python3.13/site-packages/uproot/writing/_cascade.py", line 1714, in add_tree
    tree = uproot.writing._cascadetree.Tree(
        self,
    ...<7 lines>...
        resize_factor,
    )
  File "/opt/miniconda3/envs/snewpy/lib/python3.13/site-packages/uproot/writing/_cascadetree.py", line 290, in __init__
    raise TypeError(
        f"cannot write Awkward Array type to ROOT file:\n\n    {branch_datashape!s}"
    )
TypeError: cannot write Awkward Array type to ROOT file:

    union[string, (int64)]

Minimal example:

import uproot

f = uproot.recreate("foo.root")
f.mktree("SNEvents",{"pdgid": ("int32",(2,))})

This succeeds using uproot 5.6.6 but raises a TypeError: cannot write Awkward Array type to ROOT file: union[string, (int64)] on uproot 5.6.7 and later.

According to uproot docs, the second argument to mktree should be of type dict of str → NumPy dtype/Awkward type; it looks like ("int32", (2,)) is not seen a valid NumPy/Awkward type specification.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions