问题标签 [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.
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 中设置另外两个分支的切割,我该如何编写代码?
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 处理器
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 访问并且循环没有问题地完成。由于文件很大,这可能是一个缓存问题吗?
uproot - 用 uproot4 读取树的一部分
我有一个带有单个根树的文件,并且想在多个进程中使用 uproot4 读取它,每个进程都读取树的不相交部分。使用 uproot3 这可以通过传递一个可迭代的 for 来实现entrysteps
:
我 uproot4entrysteps
似乎已被 取代step_size
,它不再接受迭代器。
目前有没有办法在 uproot4 中做到这一点?如果没有,是否计划使用这样的选项?
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 毫秒
uproot - uproot4可以写TTrees吗?
uproot3 的写入能力有限,是否可以在 uproot4 中写入 TTree?特别是,我想创建一个脱脂,只是丢弃分支和一两个简单的事件级剪切。
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]]]
uproot - 在 upROOT 中的 ROOT 功能?
我正在尝试使用 upROOT 在 Python 中严格运行分析,但我发现(不出所料)我必须构建很多已经在 ROOT 中的工具。我不介意这样做,但我想确保我不会把事情搞砸。
例如,我有以下质量平方:
其中“p_squared”是全局动量大小(平方),“g_squared”是反伽马平方,“b_squared”是贝塔平方。
对于phi,我还有以下内容:
其中“oX”和“oY”分别是轨道的 x 和 y 原点坐标。
upROOT 中是否有内置功能来执行此操作?或者这只是一个 PyROOT 的东西?
uproot - uproot3 可以写包含数组的 TBranches 吗?
在 uproot 3 文档中有信息,即 uproot 只能写入每个条目包含 1 个值的分支。另一方面,我可以在 uproot Github 上看到一些关于编写锯齿状数组等的主题。所以,我想确保:可以将包含数组的 TBranches 连根拔起写入 TTree 吗?如果是这样,它是否记录在任何地方?
谢谢!
uproot - 尴尬的数组 ak.unzip 行为
当我访问根文件并提取我想要的数据时,如下例所示:
该数组的键的排序与用于过滤键的列表的排序不同。如果我现在使用 ak.unzip():
分拣是否可靠且可重复?如果我打开不同的根文件,我是否能够实现相同的“排序”