首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用uproot访问自定义类?

如何使用uproot访问自定义类?
EN

Stack Overflow用户
提问于 2019-10-31 18:10:03
回答 1查看 236关注 0票数 3

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

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

当我试图循环“Evt”树中的数据时,我得到以下分支AAObject、TObject和t的错误

代码语言:javascript
复制
ValueError: cannot interpret branch b'AAObject' as a Python type
in file: /myfile.root


ValueError: cannot interpret branch b't' as a Python type
in file: /myfile.root

ValueError: cannot interpret branch b'TObject' as a Python type
in file: /myfile.root

这是我在浏览我的文件时输入的内容

代码语言:javascript
复制
data = uproot.open("myfile.root")["E"]
data.show() 
data_branch_Evt['Evt']['AAObject'].basket(0)
data_branch_Evt['t'].basket(0)`

下面是data.show()的结果

代码语言:javascript
复制
Evt                        TStreamerInfo              None
AAObject                   TStreamerInfo              None
TObject                    TStreamerInfo              None
fUniqueID                  TStreamerBasicType         asdtype('>u4')
fBits                      TStreamerBasicType         asdtype('>u4')

usr                        TStreamerSTL  asjagged(asdtype('>f8'), 10)
usr_names                  TStreamerSTL asgenobj(STLVector(STLString()))

id                         TStreamerBasicType         asdtype('>i4')
det_id                     TStreamerBasicType         asdtype('>i4')
mc_id                      TStreamerBasicType         asdtype('>i4')
run_id                     TStreamerBasicType         asdtype('>i4')
mc_run_id                  TStreamerBasicType         asdtype('>i4')
frame_index                TStreamerBasicType         asdtype('>i4')
trigger_mask               TStreamerBasicType         asdtype('>u8')
trigger_counter            TStreamerBasicType         asdtype('>u8')
overlays                   TStreamerBasicType         asdtype('>u4')
t                          TStreamerObjectAny         None
t.fSec                     TStreamerBasicType         asdtype('>i4')
t.fNanoSec                 TStreamerBasicType         asdtype('>i4')

hits                       TStreamerSTL               asdtype('>i4')

....etc...`

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-01 06:54:10

并不是所有的根类型都被识别--在类的定义中有一些东西还没有被处理。如果没有看到这个文件(作为一个GitHub问题),我就无法诊断它。我们从一个非常小的类型集开始,并根据需要添加更多的类型。

这不是在逐个类的基础上处理每个类的问题,而是关于处理类特性的问题。例如,最近添加的是包含数字向量的类。如果您有内容非常保守的类,比如“只有数字字段”,那么它应该被自动识别。

我们必须逐个处理的不是类型(如类),而是技术上的“种类”,或类型的类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58640970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档