6.2 真实世界的例子:粒子加速数据库
让我们来看看真实世界里如何使用HDF5的组、数据集和特征来解决数据管理的问题。最近科罗拉多大学在NASA的授权下安装了一个新的粉尘静电加速器。该装置能够将微米级粉尘带上静电后以1~100km/s的速度射入目标腔室,以此来模拟太空中粉尘微粒对物体表面和硬件造成的影响。
6.2.1 基于HDF5的应用格式
该装置会生成大量的数据。它每次运行数小时,每秒发射10个微粒,每个微粒会生成3个波形,每个波形有100 000个数据点。计算机系统分析这些波形来估算微粒的质量和速度。波形数据和估算的质量、速度被记录在一个HDF5文件,供该项目的科学家使用。
计算机系统分析的基本单位是微粒“事件”,也就是3个浮点波形,每个波形还具有一些属性,如采样率、数字化范围等。对于每个事件,我们还有用于保存估算出的微粒质量和速度的元数据,以及一些顶层元数据如文件的时间戳。
让我们用h5ls查看其中的一个文件:
这里有大量的数据,不过非常直观。根组含有时间戳特征(文件何时被写入)以及一个表示文件内的组、数据集和特征以何种格式组织的版本等特征。
然后射线发出的每个微粒都有其自己的组。组内特征记录了分析得到的质量和速度,以及一个整型的事件标识符。最后,我们原始数据的三个波形作为数据集被记录在微粒的“组”内。它们也有各自的特征,就是采样的时间间隔。
6.2.2 数据分析
这里的关键是描述波形的元数据必须和数据本身存储在一起。比如,如果我们不知道采样的时间间隔,那么光知道波形的时序就毫无意义。在文件中,时间间隔(dt)作为波形数据集的特征保存。如果我们想要正确画出波形的时间标尺,我们只需要这样做:
HDF5还有另一个好处就是可以简化你的分析。如果使用其他格式,通常你会有一个或多个输入文件、一段处理代码和一个保存计算输出的“结果”文件。使用HDF5,你只需要一个文件就可以同时保存输入数据和分析结果。
假设我们写了一段代码,它可以从波形数据中估算微粒的带电量。我们可以直接将其保存在波形数据的文件里,质量和速度的估算也是一样:
如果计算输出的不是标量而是数据集也可以同样处理。这里的关键在于不要将HDF5容器看作是文件,而是将其看作一个数据库。
提示
不要被大量的数据冲昏了你的头脑,记得时常备份你的数据,以免一不当心干了傻事。
我们已经见过了HDF5的4种主要对象:文件、组、数据集和特征。现在是时候休息一会儿,然后去讨论一下HDF5类型系统,看看它能为你做些什么。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论