簡體   English   中英

HDF5鏈接到數據集中的事件

[英]HDF5 Links to Events in Dataset

我正在嘗試使用HDF5存儲時間序列EEG數據。 這些文件可能很大,並且包含許多通道,我喜歡HDF5文件格式的功能(惰性I / O,動態壓縮,mpi等)。

與EEG數據有關的一件事是將數據部分標記為“有趣”。 我正在努力將這些標記存儲在文件中的好方法。 我看到支持將相同數據集鏈接到其他組等的軟/硬鏈接,但是我看不到任何鏈接到數據集各部分的方法。

例如,假設我有一個名為EEG的數據集,其中包含睡眠數據。 假設我運行一種算法,該算法需要一些時間來處理數據並生成與REM睡眠周期相對應的索引。 將這些索引范圍存儲在HDF5文件中的最佳方法是什么?

我現在想到的最好的方法是創建一個包含三列的數據集-第一列是一個字符串,包含事件的標簽(“ REM1”),第二/第三列分別包含開始/結束索引。 我不喜歡此解決方案的唯一原因是因為HDF5數據集的大小設置很合理-如果以后我確定誤認了一段REM睡眠時間並且需要添加/刪除該事件,則數據集大小將需要進行更改(刪除數據集/以新大小重新創建它不是最佳選擇)。 由於我可能發生許多事件(想象到標記眨眼事件),這使問題變得更加復雜。

我更想知道我只是不知道HDF5文件中是否有功能,因為這似乎是人們想要做的一件很普通的事情。

我認為您想要的是一個區域引用 -本質上是一種存儲對數據片段的引用的方法。 h5py中 ,可以使用regionref屬性和numpy切片語法來創建它們,因此,如果您有一個名為ds的數據集以及REM期間的start索引和end索引,則可以執行以下操作:

rem_ref = ds.regionref[start:end]
ds.attrs['REM1'] = rem_ref
ds[ds.attrs['REM1']]  # Will be a 1-d set of values

您可以很自然地存儲regionrefs-它們可以是數據集上的屬性,組中的對象,也可以創建regionref類型的數據集並將其存儲在其中。

在您的情況下,我可能會創建一個組(“ REM_periods”或類似內容)並將引用存儲在其中。 創建“ REM_periods”數據集並在其中存儲regionrefs也很合理,但是您會遇到整個“數據集長度可變性不佳”的問題。

將它們作為attrs存儲在數據集上也可以,但是,如果您想擁有多個事件類型,將會很尷尬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM