Skip to content

EasyH5 Toolbox v0.5 Release (code-name Cinco)

Compare
Choose a tag to compare
@fangq fangq released this 19 Sep 22:26
· 49 commits to master since this release

EasyH5 Toolbox - An easy-to-use HDF5 data interface (loadh5 and saveh5)

  • Copyright (C) 2019 Qianqian Fang <q.fang at neu.edu>
  • License: GNU General Public License version 3 (GPL v3) or 3-Clause BSD license, see LICENSE*.txt
  • Version: 0.5 (code name: Cinco)
  • URL: http://github.com/fangq/easyh5

ChangeLog

EasyH5 v0.5 (Cinco), FangQ <q.fang (a) neu.edu>

2019-09-19 [dc62ed5] update code name and version number
2019-09-19 [66de6e2] tracking creation order, need to use links to read in loadh5
2019-09-19*[69979e4] initial but fully working version

Overview

EasyH5 is a fully automated, fast, compact and portable MATLAB object to HDF5
exporter/importer. It contains two easy-to-use functions - loadh5.m and
saveh5.m. The saveh5.m can handle almost all MATLAB data types, including
structs, struct arrays, cells, cell arrays, real and complex arrays, strings,
and containers.Map objects. All other data classes (such as a table, digraph,
etc) can also be stored/loaded seemlessly using an undocumented data serialization
interface (MATLAB only).

EasyH5 stores complex numerical arrays using the composite data types in an
HDF5 dataset. The real-part of the data are stored as Real and the imaginary
part is stored as the Imag component. The loadh5.m automatically converts
such data structure to a complex array.

Because HDF5 does not directly support 1-D/N-D cell arrays or struct arrays,
EasyH5 converts these data structures into data groups with names in the
following format

    ['/hdf5/path/.../varname',num2str(idx1d)]

where varname is the variable/field name to the cell/struct array object,
and idx1d is the 1-D integer index of the cell/struct array. We also provide
a function, regrouph5.m to automatically collapse these group/dataset names
into 1-D cell/struct arrays after loading the data using loadh5.m. See examples
below.

Installation

The EasyH5 toolbox can be installed using a single command

    addpath('/path/to/easyh5');

where the /path/to/easyh5 should be replaced by the unzipped folder
of the toolbox (i.e. the folder containing loadh5.m/saveh5.m).

Usage

saveh5 - Save a MATLAB struct (array) or cell (array) into an HDF5 file

Example:

  a=struct('a',rand(5),'b','string','c',true,'d',2+3i,'e',{'test',[],1:5});
  saveh5(a,'test.h5');
  saveh5(a,'test2.h5','Root','rootname');

loadh5 - Load data in an HDF5 file to a MATLAB structure.

Example:

  data=loadh5('test.h5');

regrouph5 - Processing an HDF5 based data and group indexed datasets into a cell array

Example:

  a=struct('a1',rand(5),'a2','string','a3',true,'d',2+3i,'e',{'test',[],1:5});
  a(1).a1=0; a(2).a2='test';
  data=regrouph5(a)
  saveh5(a,'test.h5');
  rawdata=loadh5('test.h5')
  data=regrouph5(rawdata)

Contribute to EasyH5

Please submit your bug reports, feature requests and questions to the Github Issues page at

https://github.com/fangq/easyh5/issues

Please feel free to fork our software, making changes, and submit your revision back
to us via "Pull Requests". EasyH5 is open-source and welcome to your contributions!