【发布时间】:2020-06-08 23:11:10
【问题描述】:
是否有与 uproot 等效的 TTree::AddFriend() ? 我在 2 个不同的文件中有 2 个并行树,我需要使用 uproot.iterate 和使用解释(设置 uproot.iterate 的“分支”选项)读取它们。
也许我可以通过从文件上的 iterate() 调用手动获取多个迭代器,然后在每个迭代器上调用 next() 来做到这一点……但也许有一种类似于 AddFriend 的更简单的方法?
感谢任何提示!
编辑:我不确定我是否清楚,所以这里有更多细节。我的问题不是关于数组的使用,而是关于如何从不同的文件中读取它们。这是我正在做的一个模型:
# I will fill this array and give it as input to my DNN
# it's very big so I will fill it in place
bigarray = ndarray( (2,numentries),...)
# get a handle on a tree, just to be able to build interpretations :
t0 = .. first tree in input_files
interpretations = dict(
a=t0['a'].interpretation.toarray(bigarray[0]),
b=t0['b'].interpretation.toarray(bigarray[1]),
)
# iterate with :
uproot.iterate( input_files, treename,
branches = interpretations )
如果a 和b 属于两个不同文件中的两棵树呢?
【问题讨论】:
-
没有理由将它们混合在相同的解释中或尝试在单个命令中读取它们。尝试从一个文件中独立于另一个文件中的
b读取a,然后合并数组以为您的 DNN 提供输入。您可以轻松做到这一点取决于它们是否以相同的顺序表示相同的事件。如果他们不这样做,您需要按照我在下面的描述进行JOIN。 -
原因是方便,假设两棵树中的事件确实是对齐的,这就是 TTree::AddFriend 的设计目的。无论如何,再次感谢您的回答!
标签: numpy root-framework uproot