问题标签 [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 投票
0 回答
31 浏览

python - 使用 zfit 从带有剪切的 ROOT 文件导入数据集

我正在尝试对一棵树进行拟合。但是我需要在不适合的可观察值的分支上添加一些切口。网站https://zfit.readthedocs.io/en/latest/getting_started/intro/data.html告诉我,我可以通过指定 root_dir_options 在数据集中包含削减。但是不知道怎么操作。

例如,我想用树“ntuple”打开一个根文件“test.root”。拟合的可观察量是 x。

我可以写

数据 = zfit.Data.from_root("tese.root","ntuple","x")

如果我需要在树 y>1 和 z>1 中设置另外两个分支的切割,我该如何编写代码?

0 投票
1 回答
161 浏览

python - uproot 问题:我可以在 TBrowser 中看到的完整 TTree 结构没有出现在 uproot 中

摘要: 运行 uproot教程时,TTree 分支似乎消失了。

我有一个根文件,其中包含一个名为“prod”的 TTree,它具有一组复杂的锯齿状叶子和分支,我可以在 ROOT 的 TBrowser 中看到它们。我使用此根文件作为输入启动了 uproot 教程,并在交互式会话开始时收到以下错误:

为什么在尝试获取类名时出现错误?

忽略这一点并继续前进。下一个问题是当我尝试查看 TTree 中的内容时prod

uproot 教程暗示我应该得到所有的分支,但显然我错过了很多分支。特别是,唯一被转移的分支是那些我称之为“简单”的分支,因为它们只有数字数据成员。

其他分支中包含更多项目。例如,“MU”分支具有事件中每个 μ 子的属性。首先是这样的 μ 子的数量,然后是每个 μ 子属性的进一步分支,例如它的质量和与之相关的轨道编号。“MET”、“MOM_ntk”、“MOM_pt”、“MOM_px”、“MOM_py”和“MOM_pz”都只包含浮点数列表。MOM_ntk 每个事件只有一个编号(称为“alpha”),而其他 MOM 分支将在每个事件中都有“alpha”编号。

该文件只有 1000 个事件,总大小只有 5MB 左右。

我想知道所有其他分支机构都去了哪里!我的朋友“COTNBC”或“GLB”在哪里(应该包含所有运行和事件编号)。

任何建议或帮助将不胜感激!


Windows 10 PC,32GB RAM Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz x64 处理器

0 投票
0 回答
424 浏览

uproot - 如何使用 uproot 加载许多非常大的文件?

我正在使用一个CMSSW_11_1_4环境(Python 3.8.4,uproot 3.11.3,笨拙的 0.12.20),我正在尝试打开一些非常大的 .root 文件(3 个文件,每个 9 GB)并使用一个事件循环。迭代第一个文件(前 100k 个事件)时,代码似乎按预期工作。在第一个事件期间需要很多时间,但随后会很快处理其余的事件。直到它以 100k 处理事件到达第二个文件。然后,代码崩溃并AssertionError打印出一条消息。下面是一些代码来重现给定 xrootd 访问权限的问题。

我确信这是一些内存问题,因为我已经设法以这种方式处理多个文件(尽管要小得多并且在本地存储)。我该如何克服呢?我需要以不同的方式处理缓存吗?

编辑(2020 年 10 月 28 日):我尝试切换到 uproot4(0.0.27)/awkward1(0.3.1),但没有取得多大成功。我将相同的代码转换为以下代码:

这一次代码开始立即处理事件,尽管速度慢了很多(可能是更小的缓存?)。同样,当它到达第二个文件时,这次代码崩溃并显示以下消息:

最后一条评论,我用小得多的文件(每个大约 1 GB 的信号文件)运行了相同的代码,但这次使用 xrootd 访问并且循环没有问题地完成。由于文件很大,这可能是一个缓存问题吗?

0 投票
0 回答
60 浏览

uproot - 用 uproot4 读取树的一部分

我有一个带有单个根树的文件,并且想在多个进程中使用 uproot4 读取它,每个进程都读取树的不相交部分。使用 uproot3 这可以通过传递一个可迭代的 for 来实现entrysteps

我 uproot4entrysteps似乎已被 取代step_size,它不再接受迭代器。

目前有没有办法在 uproot4 中做到这一点?如果没有,是否计划使用这样的选项?

0 投票
2 回答
155 浏览

python - 在数组中重塑数组

我有一个根文件,我用 2000 个条目打开,子条目的数量可变,每列中都有一个不同的变量。可以说我只对其中的 5 个感兴趣。我想把它们放在一个数组中np.shape(array)=(2000,250,5)。250 足以包含每个条目的所有子条目。

通过uproot DATA=[variablename:[array of entries [array of subentries]] 将根文件转换为字典

我创建了一个数组np.zeros(2000,250,5)并用我想要的数据填充它,但它需要大约 500 毫秒,我需要一个可以扩展的解决方案,因为我以后的目标是 100 万个条目。我找到了多种解决方案,但我最低的是大约 300 毫秒

0 投票
0 回答
51 浏览

uproot - uproot4可以写TTrees吗?

uproot3 的写入能力有限,是否可以在 uproot4 中写入 TTree?特别是,我想创建一个脱脂,只是丢弃分支和一两个简单的事件级剪切。

0 投票
1 回答
128 浏览

python - 尴尬的数组间隔添加属性

我想从根文件中提取数据并使其成形,以一个 numpy 数组/张量结束,以将其填充到神经网络中。我已经能够通过填充获得我想要的轨迹数据,将其转换为一个 numpy 数组,但我想用它们所来自的喷气机的数据来扩展我的数组。所以我有所有航迹的信息,每架喷气机的信息以及它们对应的航迹间隔。我的第一个本能是构建一个轨道形状的数组,并使用类似的东西np.dstack来合并这两个。

这是我到目前为止的地方。出于效率原因,我希望在进入 numpy 之前能够在尴尬中实现这一点。我在 numpy 中尝试了以下方法:

但它已经花费了大约 3 秒,甚至没有达到我仅 2000 个事件的目标。目的基本是[track_variables] ->[track_variables,jet_variables if track is in intervall],要存起来[(event1)[[track_1],...,[track_padding_size]],...,(eventn)[[track_1],...,[track_padding_size]]]

0 投票
1 回答
57 浏览

uproot - 在 upROOT 中的 ROOT 功能?

我正在尝试使用 upROOT 在 Python 中严格运行分析,但我发现(不出所料)我必须构建很多已经在 ROOT 中的工具。我不介意这样做,但我想确保我不会把事情搞砸。

例如,我有以下质量平方:

其中“p_squared”是全局动量大小(平方),“g_squared”是反伽马平方,“b_squared”是贝塔平方。

对于phi,我还有以下内容:

其中“oX”和“oY”分别是轨道的 x 和 y 原点坐标。

upROOT 中是否有内置功能来执行此操作?或者这只是一个 PyROOT 的东西?

0 投票
1 回答
103 浏览

uproot - uproot3 可以写包含数组的 TBranches 吗?

在 uproot 3 文档中有信息,即 uproot 只能写入每个条目包含 1 个值的分支。另一方面,我可以在 uproot Github 上看到一些关于编写锯齿状数组等的主题。所以,我想确保:可以将包含数组的 TBranches 连根拔起写入 TTree 吗?如果是这样,它是否记录在任何地方?

谢谢!

0 投票
1 回答
39 浏览

uproot - 尴尬的数组 ak.unzip 行为

当我访问根文件并提取我想要的数据时,如下例所示:

该数组的键的排序与用于过滤键的列表的排序不同。如果我现在使用 ak.unzip():

分拣是否可靠且可重复?如果我打开不同的根文件,我是否能够实现相同的“排序”