Skip to content

Bare-bones hdf5 serialization of Eigen matrices and vectors

License

Notifications You must be signed in to change notification settings

pwm1234/eigen3-hdf5

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eigen3-hdf5

Easy serialization of C++ Eigen matrices using HDF5.

The library is meant to be bare-bones (at least for now). It gets me 90% of what I want/need in a few hundred lines of code. It may also get you 90% (or even 100%) of what you need.

Requirements

  • Eigen3 (tested on 3.1 and 3.2 branches)
  • HDF5 C++ wrapper library >= 1.8.12 (yes, this is a very recent version)

Because eigen3-hdf5 is a template library, there is nothing to link against (besides the HDF5 libraries).

API

Supports saving and restoring Eigen matrices and vectors of float, double, long double, int, unsigned int, and std::complex<>.

#include <eigen3-hdf5.hpp>

void save_matrix()
{
    Eigen::Matrix3d mat;
    mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
    H5::H5File file("filename1.h5", H5F_ACC_TRUNC);
    EigenHDF5::save(file, "MatrixDataSetName", mat);
}

void load_vector()
{
    Eigen::Vector4i vec;
    H5::H5File file("filename2.h5", H5F_ACC_RDONLY);
    EigenHDF5::load(file, "VectorDataSetName", vec);
}

See the unittests directory for more examples.

Unit tests

I am using premake4 and googletest because I am familiar with them.

The unit tests currently write to specific files in /tmp. This should change, eventually.

License

MIT license.

Next steps

  • Support more fundamental data types

Thoughts/notes

  • Using the HDF5 C++ wrapper library supposedly means it won't work with parallel hdf5. If I were to do it again, I would write eigen3-hdf5 using the regular C HDF5 API, not the C++ wrapper. Patches are welcome. :)

About

Bare-bones hdf5 serialization of Eigen matrices and vectors

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.2%
  • Lua 3.7%
  • Python 3.1%