2014-03-31 3 views
0

HDF5를 사용하여 시계열 EEG 데이터를 저장하려고합니다. 이 파일은 상당히 클 수 있으며 많은 채널로 구성되며 HDF5 파일 형식 (지연 I/O, 동적 압축, mpi 등)의 기능을 좋아합니다.HDF5 데이터 세트의 이벤트에 대한 링크

EEG 데이터와 관련하여 공통점은 '흥미로운'데이터 섹션을 표시하는 것입니다. 나는이 마크를 파일에 저장하는 좋은 방법으로 고심하고있다. 동일한 데이터 세트를 다른 그룹 등에 연결하는 데 지원되는 소프트/하드 링크가 표시되지만 데이터 세트의 섹션에 연결할 수있는 방법은 없습니다.

예를 들어, 수면 데이터가 포함 된 EEG라는 데이터 세트가 있다고 가정 해 보겠습니다. 잠시 동안 데이터를 처리하고 REM 수면 기간에 해당하는 색인을 생성하는 알고리즘을 실행한다고 가정 해 보겠습니다. 이러한 인덱스 범위를 HDF5 파일에 저장하는 가장 좋은 방법은 무엇입니까?

내가 생각할 수있는 가장 좋은 점은 세 개의 열이있는 데이터 집합을 만드는 것입니다. 첫 번째 열은 문자열이며 이벤트 ("REM1")의 레이블을 포함하고 두 번째/세 번째 열은 시작을 포함합니다/끝 색인. HDF5 데이터 세트가 크기가 꽤 크기 때문에이 솔루션이 마음에 들지 않는 유일한 이유입니다. 나중에 REM 수면 기간이 잘못 식별되어 해당 이벤트를 추가/제거해야 할 경우 데이터 세트 크기가 필요합니다. 변경 (및 데이터 세트 삭제/새 크기로 다시 작성)이 차선책입니다. 사실 나는 여러 가지 사건 (마킹 눈 깜박임 현상을 상상해 볼 수 있음)을 가지고 있기 때문에, 이것은 더욱 문제가됩니다.

HDF5 파일에 기능이 있는지 궁금해합니다. 왜냐하면이 기능은 꽤 일반적인 것으로 보이기 때문입니다.

+0

하이퍼 랩과 영역 사용은 어떻습니까? 또는 "REM1"을 데이터로 시작 및 끝 인덱스로 특성으로 쓸 수 있습니다. 생각? –

+0

하이퍼 랩과 영역은 파일을 슬라이스하기 위해 사용하는 것과 정확히 같습니다. 내 질문은 이러한 하이퍼 랩 선택/영역을 파일에 '링크'로 저장할 수있는 능력에 있습니다. 소프트 링크가 다른 그룹에 링크 할 수있는 것과 같은 방식으로, 데이터 세트 소프트 링크는 단순히 다른 데이터 세트로의 하이퍼 슬랩 선택 일 수 있습니다. 나는 속성을 사용하는 것을 고려했다. 그러나 나는 샘플 레이트, 채널 레이블 등과 같은 것을 나타 내기 위해 속성을 필요로한다. 이벤트 이름, 시작/중지 인덱스, 유효 비트 - 이벤트를 가진 확장 가능한 데이터 셋을 사용하고있다. 이 '이벤트'데이터 세트의 항목을 1에서 0으로 변경하십시오. – Griffin

답변

0

내가 원하는 것은 지역 참조입니다. 본질적으로 데이터 조각에 대한 참조를 저장하는 방법입니다. h5py에서, 당신은 regionref 재산과 NumPy와 슬라이스 구문을 만들 수 있으므로이 경우 데이터 세트가 ds하고 REM 기간의 당신의 startend 인덱스라고 할 수있다 :

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로 저장하더라도 괜찮 으면 좋겠지 만 둘 이상의 이벤트 유형을 원한다면 어색해집니다.

관련 문제