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

uproot - 如何使用 uproot 访问 TGraph?

我正在尝试使用根目录访问 ROOT TGraph。在 uproot 教程(https://github.com/scikit-hep/uproot#histograms-tprofiles-tgraphs-and-others)中提到了 TGraphs,但没有写到如何将它们加载到 python。有人可以告诉我如何做到这一点的代码片段吗?已经谢谢你了!

0 投票
1 回答
53 浏览

python - ChunkedArray 的内容、开始和停止 - 由lazyarray 构建

我有一些代码可以很好地JaggedArrays提取content, starts, stops,但我想在一些 上运行相同的代码ChunkedArrayslazyarraysuproot. 不幸的是,我得到了以下错误:

有什么办法可以使这个工作吗?

0 投票
1 回答
94 浏览

python - 如何有效地在根目录中检索曲目?

因此,我得到了一个 TFile,其中包含两个 TTree 对象,其中包含轨道/塔 pT、eta 和 phi,按事件划分。我的目标是提取事件中的每个轨道和塔,然后使用 FastJet 包对整个事件进行聚类。现在,如果我使用纯 ROOT 执行此任务,我的分析最多需要 30 分钟(使用 ~100 GB TFile)。同时,uproot 将在此时间限制内仅处理 10,000 个事件...

很明显我做错了什么,所以我想问一下,访问逐个轨道信息以获得与 ROOT 相同的速度的正确方法是什么?

0 投票
1 回答
219 浏览

uproot - 如何使用 uproot 将带有 TVector3 分支的 TTree 加载到 Pandas DataFrame 中

我有几个包含 TTree 的 ROOT 文件,其中(除其他外)一些分支是 TVector3 对象。我正在尝试将矢量分量 (x, y, z) 加载到 Pandas DataFrame 中,但无论我尝试什么,我都会收到此错误:

我正在尝试使用uproot.pandas.iterate,但也尝试使用树的f[tree_name].array('hitPosExtrap')方法无济于事。阅读连根拔起的自述文件,我觉得它好像能够理解 TVector3 对象,但我想我错过了一些东西。

有谁知道我从这些树中获取矢量组件(或一些类似 TVector3 的对象)的方法?

0 投票
1 回答
92 浏览

python - 从 Pandas multiIndex 获取数据

我正在使用pandasuproot从 .root 文件中读取数据,我得到如下表:

桌子

所以,从我的 .root 文件中,我得到了一些树枝。

本质上,我必须为每个条目检索“JetPhi”数据,其中有超过 2 个子条目(或等效地,“nCleanedJets”等于或大于 2 的条目),计算前两个之间“JetPhi”的差异子条目,然后为这些差异制作直方图。

我试图在互联网上查找并尝试了不同的可能性,但我没有找到任何有用的解决方案。如果有人能给我任何提示、建议和/或建议,我将不胜感激。我以前用 C++ 编写代码,但我是 python 新手。

我以前用 C++ 编写代码,所以我是 python 新手,但我仍然不掌握这种语言。

0 投票
0 回答
531 浏览

python-3.x - 在 Jupyter 笔记本中导入根目录的问题

从前段时间开始,我在 jupyter 笔记本中导入 uproot 时遇到了麻烦。它以前运行良好,在我的其他 python 脚本中导入它时仍然运行良好,但是当我尝试在 jupyter notebook 中导入它时,它说ModuleNotFoundError: No module named 'uproot'. 我正在使用虚拟环境,问题很奇怪,因为uproot它肯定安装在 venv 中。即使我尝试

在笔记本的一个单元格中,输出显示:

[编辑] 我现在所做的是将 jupyter-lab 安装到 venv 并且问题似乎更深:

0 投票
2 回答
140 浏览

python - 在 Pandas 中检索数据

我正在使用 pandas 和 uproot 从 .root 文件中读取数据,我得到如下表:

在此处输入图像描述

上述表格由以下代码制成:

我需要在 LepPt 中找到最大值,一旦找到最大值,我还需要检索该最大值的 LepLepId。我找到最大值没有问题:

通过这种方式,我得到了一个包含所有最大值的数组。但是,我必须根据 LepLepId 分隔这些值。所以我需要一个最大 LepPt 和 |LepLepId|=11 的数组和一个最大 LepPt 和 |LepLepId|=13 的数组。

如果有人能给我任何提示、建议和/或建议,我将不胜感激。

0 投票
2 回答
367 浏览

physics - 使用 uproot.daskframes 从许多 ROOT 文件创建 daskframe 时如何避免“打开的文件过多”错误

我想尝试使用 uproot 将一些带有平面 ROOT NTupels 的根文件读入桌面框架。214 个文件,每个 500kb,每个大约 8000 行和 16 列/变量。它们很容易适应内存中的 pandas 数据框,但我正在尝试学习 dask(和 uproot,以前只使用 root_pandas),因为我希望将来会有更大的数据集。

所以我认为这uproot.daskframes(list_of_paths, flatten=True)将是把文件读入桌面框架的工具。很好地创建框架,但在以下Too many open files错误中计算它:https://pastebin.com/mfHgB16Q。当我将文件限制为例如 100 个时,它的计算工作但很慢(30 秒),在少数文件上,没问题。当我使用 100 个文件并增加篮子(例如 100Mb)以提高速度时,我得到一个RecursionErrorhttps ://pastebin.com/xTHa1Wav

我自己的解决方案是创建带有连根拔起的普通熊猫数据框,延迟创建并使用 dask 创建连接它们,这对我来说效果很好,并且比uproot.daskframes大量文件的计算速度更快。

延迟数据帧创建的好处是我可以使用 dask 来并行化它。

但我觉得应该有一些规范的方式,可能是我缺少的东西,也许还有其他选项我应该用于该daskframes功能,或者我应该完全使用其他功能来做到这一点。你能帮我有什么想法吗或最佳实践?

0 投票
1 回答
155 浏览

python - 将笨拙的数组 JaggedArray 内容和偏移量组合成嵌套的 JaggedArray

我正在尝试使用优秀的uprootawkward-array读取存储在 TTree 中的一些分析数据。我知道 ROOT 不会std::vector<std::vector<int>>以柱状格式编写嵌套向量(即。),但是在讨论之后,我修改了我的树输出以包含两个单独std::vector<int>的分支:一个包含内容,一个std::vector<int>包含偏移量。内容向量在填充树之间多次将值推入其中。每次推入值时,内容向量的大小都会存储在偏移量中。

JaggedArray我的想法是,当我阅读树时,我将通过嵌套重新创建我需要的结构。但是,通过阅读笨拙的数组文档,我似乎无法找到正确的方法来构建这个嵌套JaggedArray而不在 python 中循环。fromoffsets需要一维索引,这意味着锯齿状索引必须变平,然后失去其结构。其他classmethods 似乎都不适合。下面的示例使用了一个生成器,由于在 python 中循环,我认为它会相当慢。有没有更好的方法来构建JaggedArray?或者更好的方法将数据存储在树中?

谢谢!

0 投票
1 回答
86 浏览

uproot - 如何用锯齿状数组作为分支编写树?

我想写一棵有两个分支的树。一个分支每个填充包含一个数字,另一个分支每个填充包含一个可变长度数组。从文档中,我可以看到如何做第一个,但不知道如何做第二个?