问题描述
在 uproot 3 文档中有信息,即 uproot 只能写入每个条目包含 1 个值的分支。另一方面,我可以在 uproot Github 上看到一些关于编写锯齿状数组等的主题。所以,我想确保:可以 uproot 将包含数组的 TBranches 写入 TTree 吗?如果有,是否在任何地方都有记录?
谢谢!
解决方法
当它被移植到 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]))