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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions