问题标签 [hdf5]

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 投票
3 回答
10038 浏览

dataset - 连接大量 HDF5 文件

我有大约 500 个 HDF5 文件,每个文件大约 1.5 GB。

每个文件都具有相同的精确结构,即 7 个​​复合(int、double、double)数据集和可变数量的样本。

现在我想通过连接每个数据集来连接所有这些文件,以便最后我有一个 750 GB 的文件和我的 7 个数据集。

目前我正在运行一个 h5py 脚本,它:

  • 创建一个具有无限最大值的正确数据集的 HDF5 文件
  • 依次打开所有文件
  • 检查样本数量是多少(因为它是可变的)
  • 调整全局文件的大小
  • 追加数据

这显然需要很多小时,你有什么改进的建议吗?

我正在开发一个集群,所以我可以并行使用 HDF5,但是我在C编程方面还不够好,无法自己实现某些东西,我需要一个已经编写好的工具。

0 投票
1 回答
1298 浏览

python - 用于大型数据集的 hdf5 和 ndarray 追加/省时方法

背景

我有 ak n 维时间序列,每个都表示为 mx (n+1) 数组,其中包含浮点值(n 列加一表示日期)。

例子:

k(大约 400 万)个时间序列,看起来像

每天,我想为数据集的一个子集 (< k) 添加一个额外的行。所有数据集都以组的形式存储在一个hd5f 文件中。

问题

将行附加到数据集的最省时的方法是什么?

输入是一个 CSV 文件,看起来像

其中日期对于特定文件是唯一的,可以忽略。我有大约 400 万个数据集。问题是我必须查找密钥,获取完整的 numpy 数组,调整数组大小,添加行并再次存储数组。hd5f 文件的总大小约为 100 GB。知道如何加快速度吗?我认为我们可以同意使用 SQLite 或类似的东西是行不通的——只要我拥有所有数据,平均数据集将有超过 100 万个元素乘以 400 万个数据集。

谢谢!

0 投票
3 回答
1815 浏览

c++ - 如何对 hdf5 时间序列进行查询

我使用 H5TB API 将(非等距)时间序列存储为 hdf5 文件中的表。格式是这样的:

还有像这样插入“详细数据”:

现在我想以另一种数据格式存储数据,因此我喜欢像这样“查询”hdf5文件:

我想到了几种方法来做这个查询:

  1. 有一个名为 B-Tree Index 的内置功能。是否可以使用它来索引数据?
  2. 我需要在时间通道上进行二进制搜索,然后读取通道值
  3. 我自己创建了一个索引(并在有细节插入时更新它)。在这里使用的最佳算法是什么?

索引的主要动机是快速查询响应。

你会在这里建议什么?

0 投票
2 回答
2770 浏览

python - 如何扩展 h5py 以便我可以访问 hdf5 文件中的数据?

我有一个小的 python 程序,它使用 h5py 模块创建一个 hdf5 文件。我想编写一个 python 模块来处理 hdf5 文件中的数据。我怎么能那样做?

更具体地说,我可以将 numpy 数组设置为 PyArrayObject 并使用 PyArg_ParseTuple 读取它们。这样,我可以在编写 python 模块时从 numpy 数组中读取元素。如何读取 hdf5 文件以便我可以访问单个元素?

更新:感谢以下答案。我需要从 C 而不是从 Python 读取 hdf5 文件-我知道该怎么做。例如:

现在我有一个名为 '\tmp\tmp.h5' 的 hdf5 文件。我需要做的是使用 C(而不是 python)从 hdf5 文件中读取单个数组元素,以便我可以对这些元素做一些事情。显示了如何扩展 numpy 数组。如何扩展hdf5?

编辑:语法

0 投票
1 回答
223 浏览

bash - 在服务器上调用 R 以从主机上的 R 会话中提取数据?

背景

我有一个在主机上运行的 R 脚本,并在服务器上启动作业。作业输出大型 hdf5 文件。

我剩下的工作都是在主机上完成的。但是,R hdf5 库只能在服务器上运行,而不是在主机上运行(因为一个已知的错误)。

我可以从主机上的 R 连接到服务器上的 R 会话,加载 R hdf5 库,从 hdf5 文件中提取数据,然后将此对象传递给主机吗?

目前的方法

我当前的任务是从 R 中调用一个 bash 脚本,该脚本调用服务器上的 R 脚本并提取到 Rdata 文件,然后使用 rsync 将其带回主机(全部在system().

问题

有没有更好的方法从服务器上的这些 hdf5 文件中提取数据?

我正在考虑以与browser调试时进入会话相同的方式进入服务器 R 会话之类的方法。

0 投票
3 回答
32710 浏览

python - 用 Python 编写 HDF5 文件的最快方法是什么?

给定一个包含混合文本/数字的大型(10 GB)CSV 文件,在保持内存使用合理的同时,创建具有相同内容的 HDF5 文件的最快方法是什么?

如果可能的话,我想使用该h5py模块。

在下面的玩具示例中,我发现了一种将数据写入 HDF5 的非常慢且非常快的方法。以 10,000 行左右的数据块写入 HDF5 是否是最佳实践?或者有没有更好的方法将大量数据写入这样的文件?

0 投票
2 回答
2242 浏览

python - 具有 h5py 的复合数据类型:属性内的数据类型

我将Silo与 HDF5 一起使用,但在使用 h5py 访问某些元数据时遇到了问题。它吐出一些相当不寻常的 HDF5 结构,其中将DATATYPE一个DATATYPE. 以下是输出的摘录h5dump

基本上,f['sigma_t'].attrs['silo']返回tuple所有格式正确的数据,但没有数据类型的任何关联标签。(我需要知道名字meshidvalue0等等)有没有办法得到这个?我不知所措。

示例文件和脚本

HDF5 文件包含“sigma_t”字段,实际数据存储在/.silo/#000004.

脚本:

结果:

我还想要的是:

这可能吗?

0 投票
1 回答
4509 浏览

c++ - 使用 HDF5 C++ api 设置数据集的属性

我在 HDF5 1.8.7 中使用 HDF5 C++ API,并希望使用 H5::Attribute 实例在 H5::DataSet 实例中设置几个标量属性,但找不到任何示例。使用 C API 非常简单:

由于某些奇怪的原因,C++ API 中的 H5::Attribute 和 H5::DataSet 类似乎缺少必要的方法。如果有人能提出使用 C++ API 的具体示例,我将不胜感激。

0 投票
1 回答
1813 浏览

amazon-s3 - 在 Amazon EC2、S3 和/或 EBS 上托管和访问 HDF5 文件

我希望在网上放置一个相当大的 HDF5 文件,并将 Amazon S3 和/或 EBS 作为存储它的可能位置,并可能利用一两个 EC2 实例进行后端处理。我正在寻找有关它可以或以前如何完成的实用想法,如果可能的话,请提供指向实际示例的链接。我认为它可以以与某人访问其他嵌入式数据存储上的平面文件相同的方式完成,但如果有可用的实用见解,希望避免重新发明轮子。

0 投票
1 回答
1697 浏览

python - 使用 pytables 选择列子集的最优雅的方法是什么?

我在 pytables 中有一个包含 300 多列的数据集,我希望能够轻松选择不同的子集。似乎没有一个非常优雅的解决方案,或者我缺少什么?

我也很高兴有一种方法可以创建另一个表,该表只是将原始表中的选择列别名化,这样我就可以拥有我的主表,然后是我的子表。有没有办法做到这一点?