首页 > 解决方案 > uproot3 可以写包含数组的 TBranches 吗?

问题描述

在 uproot 3 文档中有信息,即 uproot 只能写入每个条目包含 1 个值的分支。另一方面,我可以在 uproot Github 上看到一些关于编写锯齿状数组等的主题。所以,我想确保:可以将包含数组的 TBranches 连根拔起写入 TTree 吗?如果是这样,它是否记录在任何地方?

谢谢!

标签: uproot

解决方案


当它被移植到 Uproot 4 时,这将得到更好的记录,但是我们现在在 Uproot 3 中编写锯齿状数组的最佳文档是拉取请求和相关问题(所有这些都相互链接):

https://github.com/scikit-hep/uproot3/pull/477

以下是测试中的一个示例:

import uproot3
import awkward0

a = awkward0.fromiter([[0],
                       [1, 2],
                       [10, 11, 12]])

with uproot3.recreate(filename, compression=None) as f:
    f["t"] = uproot3.newtree({
        "branch": uproot3.newbranch(numpy.dtype(">i4"), size="n")
    })
    f["t"].extend({"branch": a, "n": [1, 2, 3]})

f = ROOT.TFile.Open(filename)
tree = f.Get("t")
for i, event in enumerate(tree):
    assert(numpy.all([x for x in event.branch] == a[i]))

推荐阅读