问题标签 [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.
uproot - 如何使用 uproot 访问 TGraph?
我正在尝试使用根目录访问 ROOT TGraph。在 uproot 教程(https://github.com/scikit-hep/uproot#histograms-tprofiles-tgraphs-and-others)中提到了 TGraphs,但没有写到如何将它们加载到 python。有人可以告诉我如何做到这一点的代码片段吗?已经谢谢你了!
python - ChunkedArray 的内容、开始和停止 - 由lazyarray 构建
我有一些代码可以很好地JaggedArrays
提取content
, starts
, stops
,但我想在一些 上运行相同的代码ChunkedArrays
,lazyarrays
从uproot
. 不幸的是,我得到了以下错误:
有什么办法可以使这个工作吗?
python - 如何有效地在根目录中检索曲目?
因此,我得到了一个 TFile,其中包含两个 TTree 对象,其中包含轨道/塔 pT、eta 和 phi,按事件划分。我的目标是提取事件中的每个轨道和塔,然后使用 FastJet 包对整个事件进行聚类。现在,如果我使用纯 ROOT 执行此任务,我的分析最多需要 30 分钟(使用 ~100 GB TFile)。同时,uproot 将在此时间限制内仅处理 10,000 个事件...
很明显我做错了什么,所以我想问一下,访问逐个轨道信息以获得与 ROOT 相同的速度的正确方法是什么?
uproot - 如何使用 uproot 将带有 TVector3 分支的 TTree 加载到 Pandas DataFrame 中
我有几个包含 TTree 的 ROOT 文件,其中(除其他外)一些分支是 TVector3 对象。我正在尝试将矢量分量 (x, y, z) 加载到 Pandas DataFrame 中,但无论我尝试什么,我都会收到此错误:
我正在尝试使用uproot.pandas.iterate
,但也尝试使用树的f[tree_name].array('hitPosExtrap')
方法无济于事。阅读连根拔起的自述文件,我觉得它好像能够理解 TVector3 对象,但我想我错过了一些东西。
有谁知道我从这些树中获取矢量组件(或一些类似 TVector3 的对象)的方法?
python - 从 Pandas multiIndex 获取数据
我正在使用pandas和uproot从 .root 文件中读取数据,我得到如下表:
所以,从我的 .root 文件中,我得到了一些树枝。
本质上,我必须为每个条目检索“JetPhi”数据,其中有超过 2 个子条目(或等效地,“nCleanedJets”等于或大于 2 的条目),计算前两个之间“JetPhi”的差异子条目,然后为这些差异制作直方图。
我试图在互联网上查找并尝试了不同的可能性,但我没有找到任何有用的解决方案。如果有人能给我任何提示、建议和/或建议,我将不胜感激。我以前用 C++ 编写代码,但我是 python 新手。
我以前用 C++ 编写代码,所以我是 python 新手,但我仍然不掌握这种语言。
python-3.x - 在 Jupyter 笔记本中导入根目录的问题
从前段时间开始,我在 jupyter 笔记本中导入 uproot 时遇到了麻烦。它以前运行良好,在我的其他 python 脚本中导入它时仍然运行良好,但是当我尝试在 jupyter notebook 中导入它时,它说ModuleNotFoundError: No module named 'uproot'
. 我正在使用虚拟环境,问题很奇怪,因为uproot
它肯定安装在 venv 中。即使我尝试
在笔记本的一个单元格中,输出显示:
[编辑] 我现在所做的是将 jupyter-lab 安装到 venv 并且问题似乎更深:
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)以提高速度时,我得到一个RecursionError
:https ://pastebin.com/xTHa1Wav
我自己的解决方案是创建带有连根拔起的普通熊猫数据框,延迟创建并使用 dask 创建连接它们,这对我来说效果很好,并且比uproot.daskframes
大量文件的计算速度更快。
延迟数据帧创建的好处是我可以使用 dask 来并行化它。
但我觉得应该有一些规范的方式,可能是我缺少的东西,也许还有其他选项我应该用于该daskframes
功能,或者我应该完全使用其他功能来做到这一点。你能帮我有什么想法吗或最佳实践?
python - 将笨拙的数组 JaggedArray 内容和偏移量组合成嵌套的 JaggedArray
我正在尝试使用优秀的uproot
并awkward-array
读取存储在 TTree 中的一些分析数据。我知道 ROOT 不会std::vector<std::vector<int>>
以柱状格式编写嵌套向量(即。),但是在讨论之后,我修改了我的树输出以包含两个单独std::vector<int>
的分支:一个包含内容,一个std::vector<int>
包含偏移量。内容向量在填充树之间多次将值推入其中。每次推入值时,内容向量的大小都会存储在偏移量中。
JaggedArray
我的想法是,当我阅读树时,我将通过嵌套重新创建我需要的结构。但是,通过阅读笨拙的数组文档,我似乎无法找到正确的方法来构建这个嵌套JaggedArray
而不在 python 中循环。fromoffsets
需要一维索引,这意味着锯齿状索引必须变平,然后失去其结构。其他classmethod
s 似乎都不适合。下面的示例使用了一个生成器,由于在 python 中循环,我认为它会相当慢。有没有更好的方法来构建JaggedArray
?或者更好的方法将数据存储在树中?
谢谢!
uproot - 如何用锯齿状数组作为分支编写树?
我想写一棵有两个分支的树。一个分支每个填充包含一个数字,另一个分支每个填充包含一个可变长度数组。从文档中,我可以看到如何做第一个,但不知道如何做第二个?