python - 在 R 中查找 HDF5 文件的所有属性 - 显示与 Python 不同
问题描述
Python
.h5
使用表包和代码在 Python 中打开文件时:
import tables as ta
h5 = ta.open_file("file.h5")
文件对象在“变量”窗口中h5
有大量节点可见。我正在寻找的信息在root
节点(type{RootGroup}
)内。具体有三个子节点:
1) _v_attrs
类型{AttributeSet}
2)annotation
类型{Group}
3)data
类型{Group}
当我通过Python访问时,这些都是可用的。IEtz = h5.root._v_attrs.record_timezone
R
我试图在R中读取这些相同的节点,但我没有看到所有不同的节点。hdf5
当我使用包列出 HDF5 文件的内容时
library(rhdf5)
h5ls("file.h5")
我只看到组,即只能看到annotation
和data
节点。
group name otype dclass dim
0 / annotation H5I_GROUP
1 /annotation epoch H5I_GROUP
2 /annotation/epoch dad12 H5I_DATASET COMPOUND 21
3 /annotation/epoch dad18 H5I_DATASET COMPOUND 21
4 /annotation/epoch dad24 H5I_DATASET COMPOUND 22
5 /annotation/epoch dad4 H5I_DATASET COMPOUND 21
6 /annotation/epoch hour H5I_DATASET COMPOUND 528
7 /annotation hrv_rmssd H5I_GROUP
8 /annotation/hrv_rmssd dad12 H5I_DATASET COMPOUND 0
9 /annotation/hrv_rmssd dad18 H5I_DATASET COMPOUND 0
10 /annotation/hrv_rmssd dad24 H5I_DATASET COMPOUND 0
11 /annotation/hrv_rmssd dad4 H5I_DATASET COMPOUND 0
12 /annotation/hrv_rmssd hour H5I_DATASET COMPOUND 0
13 /annotation raw H5I_GROUP
14 /annotation/raw dad12 H5I_DATASET COMPOUND 0
15 /annotation/raw dad18 H5I_DATASET COMPOUND 0
16 /annotation/raw dad24 H5I_DATASET COMPOUND 0
17 /annotation/raw dad4 H5I_DATASET COMPOUND 0
18 /annotation/raw hour H5I_DATASET COMPOUND 0
19 / data H5I_GROUP
20 /data epoch H5I_DATASET COMPOUND 1051172
21 /data raw H5I_DATASET COMPOUND 0
这些可以使用代码data <- h5read("file.h5", "/data/epoch")
作为示例进行访问。
问题
如何AttributeSet
在 R 中读取其他类型的节点?
解决方案
也许您想看看HDFql,因为它不仅可以减轻您对 HDF5 低级细节的困扰,而且在处理 HDF5 文件时还可以促进跨不同编程语言的代码可移植性(即 HDFql 保证最终结果始终与语言无关)无需对代码进行太多更改即可使用)。
在使用 HDFql 的 Python 中,您可以通过执行以下示例来检索对象(即组或数据集)的属性:
import HDFql
HDFql.execute("SHOW ATTRIBUTE my_file.h5 my_object/")
while HDFql.cursor_next() == HDFql.SUCCESS:
print("Attribute found: %s" % HDFql.cursor_get_char())
在使用 HDFql 的 R 中,这与在 Python 中几乎相同(参见相似性):
source("HDFql.R")
hdfql_execute("SHOW ATTRIBUTE my_file.h5 my_object/")
while(hdfql_cursor_next() == HDFQL_SUCCESS)
{
print(paste("Attribute found:", hdfql_cursor_get_char()))
}
如果您需要检索存储在 HDF5 文件中的所有对象的所有属性(以递归方式),请在 Python 中执行以下操作(在 R 中它将与此非常相似,因此我将跳过发布它):
import HDFql
HDFql.execute("SHOW ATTRIBUTE my_file.h5 / LIKE **")
while HDFql.cursor_next():
print("Attribute found: %s" % HDFql.cursor_get_char())
可以在此处找到有关如何在 Python 和 R 中使用 HDFql 的其他示例。
推荐阅读
- javascript - 在 for 循环中修改对象(异步/等待)
- python-3.x - 使用多项式特征缩放特征
- r - 您如何按一列对 x 轴进行排序并按另一列标记 x 轴?
- rpa - 无法使用 G1ANT 机器人登录远程桌面连接上的桌面应用程序
- angular - 反应式嵌套表单
- c# - 如何通过 IEnumerable 访问 foreach 迭代中的下一个和上一个项目?
- php - How to show data by ID in TableView from JSON
- angular-material - 我有多少种颜色
- c - 静态大小的字符串声明
- docker - 如何使用 systemd 启动和停止 docker 容器