问题标签 [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 回答
239 浏览

python - 无法在 Python 中从根目录加载数据

我正在尝试从根目录加载希格斯玻色子数据集。我不习惯使用 uproot 和 .root 数据类型。我正在使用以下代码,这是一种加载库的官方说明。我已经制作了一个虚拟环境并安装了必要的库

运行上述示例代码时出现以下错误。

我是这类加载数据集的新手。

0 投票
1 回答
248 浏览

python - 如何使用 uproot 加载引用的值 (TRefArray)

我正在尝试使用 uproot 从 Delphes .root 输出文件中进行一些基本选择。Delphes 的 c++ 代码示例循环遍历事件并访问重构的 BranchElements,它具有访问属于各种类的分支元素的方法。

例如,根文件包含一个<TBranchElement b'Jet' at 0x7fb36526b3c8>(在 c++ 中)Delphes 示例代码可以用来进入object=jet->Constituents.At(i)“for”循环,然后如果这object是一个object->IsA() == Tower::Classthen 调用object->P4()来获取 4momentum。因此,虽然使用 uproot 只能分别获取这两个值,但在 Delphes 示例中,使用 Jet 类使用一种方法来访问 Tower 类(从中重建 Jet)。

我看到的信息是:

对于 uproot,如果将 TBranchElement 作为数组加载,则只能访问 中的数组元素Jet.Constituents[i],它们是数字列表。我如何能够以Jet.Constituents引用Tower.PT它包含的(或 eta、phi 等)值的方式加载?

0 投票
1 回答
251 浏览

uproot - 如何将两个连根拔起的锯齿状数组合并为一个

我正在使用带有尴尬阵列的连根拔起,并且有两个锯齿状阵列,其中包含每个事件的电子列表和每个事件的 μ 子列表。我如何结合这些来获得每个事件的轻子列表,即连接内轴

例如我有

我想要的输出是这样的

干杯,

卡尔

0 投票
1 回答
46 浏览

uproot - JaggedArray 可以计算最内层并返回另一个 JaggeredArray 吗?

当前版本 0.12.13 返回

但是,我只想计算最里面的部分,可以通过以下代码实现:

和输出看起来:

但它至少有两个缺点:速度慢和 dtype=object。有计划支持这种功能吗?

0 投票
0 回答
129 浏览

python - uproot.lazyarrays 没有读取 uproot.open 显示的内容

回到学习如何正确使用连根拔起的另一个快速问题。我正在尝试加载 Delphes 输出 .root 文件,并且我正在尝试从使用 uproot.open 转换为使用 uproot.lazyarrays 以使用拆分 MC 文件,当我天真地尝试解决这个问题时,我遇到了一些问题.root 文件中的信息。

我可以用 uproot.open 正确打开任何文件并获取所有内容,“show”命令将它们全部列出。

我希望所有内容都可以正确加载lazyarrays,但是似乎我无法获取某些内容,并且我无法理解哪个以及遵循什么规则。我正在使用 PyCharm,我可以访问已加载文件的内容并查看哪些数组已加载,哪些未加载。

可能是什么原因和/或我该如何处理?

0 投票
1 回答
164 浏览

uproot - 我可以看一个切割数据以准备在根中进行直方图绘制的简短示例吗?

我正在使用 Python 3.6.5(或更高版本)并且我已经成功安装了“numpy”、“uproot”和“awkward”。我有一个以前制作的带有锯齿形 NTuple 的 *.root 文件,其中包含相当多的分支。这是粒子物理数据,因此可以将“行”视为单独的碰撞或“事件”,而列具有数据结构。(有些列可能有第三维或更多……我会稍微解释一下。)

在这种情况下,我的事件中有很多“喷气机”,每个“喷气机”都有很多关于它的信息。

jet_E、jet_pT、jet_eta、jet_phi、Numb(b 标签的数量)、NLayer0 等。

每个“事件”可以有任意数量的喷气机,但在这种情况下它不可能有零喷气机。这些喷气式飞机中的每一个都将存储此信息,但来自一个“事件”的所有信息必须与任何其他“事件”保持不相关。(如果您已经了解粒子物理学,这部分可能已经了解。)

我一直在阅读连根拔起的文档和示例,但我无法很容易地看到,仅使用这样的 pythonic 代码,将 jet_pT 直方图绘制成直方图,但仅适用于在某些其他 jet 变量被切断的事件中的喷气机。埃塔,例如。

如何仅从 *.root 文件中提取有关 jet_eta>-1.0 和 jet_eta<1.0 的喷气机的所有 jet_pT 的信息?假设无论如何我只想查看前 3 架喷气机而忽略其余的,我将如何放置所描述的切割并且仅在任何情况下通过该切割的前 3 架喷气机直方图?

uproot 文档并没有真正说明这一点。谢谢!

0 投票
2 回答
177 浏览

uproot - 在 Uproot 问题中加载 TProfile 获取 y 值

我无法从 .root 文件中的 TProfile 对象加载 y 值。

似乎使用 file.pandas() 仅加载 x 值、计数和方差,但不加载特定的 y 值。

我也尝试过 file.values,它返回计数,但不返回 y 值

0 投票
1 回答
248 浏览

uproot - 如何使用根目录访问自定义类?

你能告诉我为什么 uproot 不解释树:Evt、AAObject、TObject 和 t?我可能在这里做错了什么,因为我不熟悉根文件。

我的目标:将根文件中的数据打开到 pandas DataFrame 中。

当我尝试遍历 ['Evt'] 树中的数据时,我收到以下分支 AAObject、TObject 和 t 的以下错误

这是我键入以探索我的文件的内容

这是 data.show() 的结果

....等等...`

谢谢!

0 投票
1 回答
876 浏览

python-3.x - 从多个 *.root 文件获取数据时遇到问题...但仅使用一个文件没有问题

我正在使用 pythong 版本 3.6.5 并且有一个具有多维结构的锯齿状 TTree。这些数据分布在 1000 多个文件中,所有文件都具有相同的 TTree 结构。

假设我有两个文件,我将它们命名为 fname1.root fname2.root

以下代码自行打开其中任何一个都没有问题:

正如我所说,如果我在“fileList”中只放一个文件,上面的代码就可以工作。

幼稚的做法是行不通的。如果我使用创建文件“列表”

并重新运行该代码。我收到以下错误...这与我一直遇到的错误非常相似。

0 投票
1 回答
412 浏览

uproot - 如何快速获得像 root_numpy root2array() 输出一样的 uproot.iterate() 输出

array2root返回具有包含分支名称的 dtype 的元组列表。有没有一种方法可以返回相同类型的格式,uproot.iterate()而无需在之后进行昂贵的重塑?

输出应与 from 相同

这就像np.array([(pt0, eta0), (pt1, eta1), ... dtype=[('pt', '<f4'), ('eta', '<f4')]]