问题标签 [uproot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
44 浏览

uproot - uproot4 上的 Model_TH3D_v3

我正在尝试从 .root 导入 TH3 v3 文件,但收到以下错误消息:

如您所见,该对象可从根浏览器访问并具有边缘。

原始文件

任何想法?uproot4 Ubuntu 20.04 vscode Insider 1.52 conda 4.9.2 python 3.9

0 投票
1 回答
69 浏览

python - 如何在 Python 中使用 uproot 读取 TMatrixT?

我有一个 *.root 文件,我正在尝试使用 uproot (uproot4) 读入 Python。它看起来像这样:

如何读取 TMatrixT 类型?使用 .keys()、.values() 和 .items() 不起作用。

将数据读入笨拙的数组、pandas 数据框或 numpy 数组的正确方法是什么?

0 投票
0 回答
114 浏览

python - 将提升直方图写入在 uproot 中创建的根文件

我目前正在尝试用 uproot 读取 ROOT 树,用 boost-histogram 记录和填充直方图,并将它们写回一个新的 ROOT 文件。这似乎对 bin 内容非常有效,但我似乎无法为最终 ROOT 文件中的直方图获得正确的 bin 错误。当我阅读这些直方图时,h.GetBinError(b)似乎等于h.GetBinContent(b),而我想知道通常为 ROOT 直方图产生的熟悉的 sumW2 错误。我的工作流程如下,使用 python 3.8:

然后我使用 uproot4.iterate 遍历输入树,为每个“块”生成一个尴尬的数组,在此表示为e

我不确定如何在构建提升直方图时获得 sumw2 权重,但根据文档,我将直方图定义更改为:

但是,当我运行我的代码时,这会导致该.to_numpy()行出现问题。错误说:“ what = uproot3_methods.convert.towriteable(what)”“ TypeError: cannot perform reduce with flexible type

是否有其他方法可以将 sumW2 样式的错误从 boost-histogram 传播到在 uproot 中创建的 ROOT 文件?或者我对这个变量的理解可能存在错误storage=......任何帮助将不胜感激。

0 投票
0 回答
72 浏览

python - 使用 uproot 4 时并行处理中的内存问题,在 uproot 3 中不是这种情况

我有这个根文件,可以在 Google 驱动器的这个链接上找到,当我使用并行处理将它转换为根 3 中的数组时,它花费的时间和内存更少。我使用的代码类似于

但是现在它消耗了我在根 4 中的所有内存,可能是我做得不对。你能看一下吗?而且也没有以前那么快了。

@jpivarski 和我在这个链接的问题中讨论了这个问题,他建议它可能只增加 10% 的内存,但对我来说超过 10%。可能多出 60-80%

0 投票
2 回答
166 浏览

python - 读取 TH1D 的一个分支

我正在尝试在 uproot4 中读取 TH1D 对象的一个​​分支。可以使用以下命令创建示例根文件:

连根拔起:

但是,当我尝试读取数组时,它会失败并出现很长的 Traceback。最后的电话是:

如果我设置 SetMakeClass(0); 在创建文件时,读取失败,而是:

使用 Python 2.7.18 和 3.8.6 解释器测试了 ROOT 6.22/06 和 5.34/21,连根拔起 4.0.5 和 4.0.6。难道我做错了什么?

0 投票
0 回答
53 浏览

root-framework - 阅读 TEfficiency with uproot

我有一个根文件,其中包含一些 TDirectories 和 TEfficiency。我需要从中提取数据以进行进一步处理。

之后

我明白了

我在这里这里检查过,但我不确定是否有解决方案。我正在使用连根拔起 3.4.15。有没有办法克服这个使用这个或另一个版本检索数据?

0 投票
1 回答
45 浏览

python - 带有 bin 标签的 NumPy 的 TH2D 对象

我在似然拟合中使用的讨厌参数之间有一个二维相关矩阵。我想把它翻译成 NumPy 以便与其他 vis 库一起使用。问题是TH2D.edges返回 bin 索引,我需要 bin 标签,即哪个 bin 是哪个讨厌的参数。该TH2D对象具有以下成员:

是否可以为每个索引提取 bin 标签?

0 投票
0 回答
20 浏览

uproot - TParameter 没有属性“值”

我有这个 TParameter(准确地说是 Model_TParameter_3c_double_3e__v2),我试图通过它的“值”属性访问它,我已经看到通过这里的文档使用它

但这不起作用并吐出:

我还使用标准成员函数 GetVal() 通过 root 读取了它,那里的一切似乎都运行良好。

我错过了什么吗?干杯

0 投票
2 回答
103 浏览

python - 在 MultiIndex pandas 数据帧上使用多维索引?

我有一个看起来像这样的多索引熊猫数据框(称为 p_z):

我希望能够根据另一个多维数据框(或 numpy 数组)选择某些行。它看起来像一个 pandas 数据框(称为 tofpid):

我也把它当作一个尴尬的数组,它是一个 (26692, ) 数组(每个条目都有非标准数量的子条目)。这是一个选择 df/array,它告诉 p_z df 要保留哪些行。所以在 p_z 的条目 0 中,它应该保留子条目 0、2、4、5、7 等。

我找不到在熊猫中完成这项工作的方法。我是 pandas 的新手,甚至是 multiindex 的新手;但我觉得应该有办法做到这一点。如果它能够更好地广播,我将在大约 1500 个类似大小的数据帧上执行此操作。如果有帮助,这些数据框来自使用 uproot 导入的 *.root 文件(如果有另一种方法可以在没有 pandas 的情况下做到这一点,我会接受它;但我很想使用 pandas 来保持井井有条)。

编辑:这是一个可重复的示例(由 Jim Pavinski 的回答提供;谢谢!)。

这两个数据帧都是在 uproot 中本地生成的,但这将重现与 uproot 相同的数据帧(使用笨拙的库)。

0 投票
0 回答
35 浏览

python - 更改根文件中的分支名称

我有一个包含一个 TTree 和 57 个分支的根文件。我想将其转换为只有 40 个分支的根文件,并更改它们的名称。我正在用python做这个。

解决这个问题的最佳方法是什么?我应该使用 uproot.recreate 创建一个新的根文件吗?如果是这样,如何使用来自 40 个旧分支的数据创建一个新的根文件,并更改分支名称?