HDF5 I/O read/write files#
-
class h5stream
C++ Header-only library for simple HDF5 input/output.
How to use
Just include the
h5stream.hpp
into your your main file.How to Compile
g++ -lhdf5 -lhdf5_cpp -std=c++1z example.cpp
Example
Create a File with a mode.
- "tr": Create a file, truncate if it exists, Default - "r": Readonly, the file must exist - "rw": Read/write, the file must exist - "x": Create a file, fail if exists @code{.cpp} h5stream::h5stream file("sample.h5", "tr"); // or h5stream::h5stream file("sample.h5"); @endcode
write and read
std::vector
Create a vector and write it to the file @code{.cpp} std::vector<double> matrix { 1, 2, 3282, 932 }; file.write<double>(matrix, "matrix"); @endcode
write and read Metadata
Write Attributes( Metadata) to the to the same data space @code{.cpp} auto dspace = file.get_dataspace("matrix"); dspace.write_atr<double>(1.2, "Units"); @endcode
Read data from the file
@code{.cpp} auto xx = file.read_vector<double>("matrix"); //OR file.read<double>(xx, "matrix"); @endcode
Read Attribute (Metadata)
double x = 0; dspace.read_atr<double>(x, "Units"); std::cout << "Attribute : " << x << std::endl; std::cout << "HDF file size (MB): " << file.file_size() << std::endl;
Public Functions
-
inline void setFileName(const H5std_string &fileName, const std::string &rw = std::string("tr"))
create and set the file name
“rw”: Read-write access. If the file is currently open for read-only access then it will be reopened. Absence of this flag implies read-only access.
“x”: Fail if file already exists. “r” and “tr” are mutually exclusive
“tr”: Truncate file, if it already exists, erasing all data previously stored in the file.: default
- Parameters:
fileName –
rw – : Possible values are “r”: read only,
-
template<typename T = double, template<typename...> class vec = std::vector>
inline void write(const vec<T> &data, const H5std_string &datasetName) - Parameters:
data –
datasetName –
-
template<typename T = double>
inline void write(const H5std_string &datasetName, const T *data, unsigned data_size) - Template Parameters:
T – : Type of the array
- Parameters:
data – : Array that needs to stored
dataname – : DataSet name
-
template<typename T = double, template<typename...> class vec = std::vector>
inline void read(vec<T> &data, const H5std_string &datasetName) - Parameters:
data – : Array that needs to stored
dataname – : DataSet name
-
template<typename T = double, template<typename...> class vec>
inline void read(std::vector<vec<T>> &data, const H5std_string &datasetName) Read the data.
- Parameters:
data – : Array of data
datasetName – : dataset name
-
inline void close()
close the file
-
inline double fileSize() const
Return the filesize in MB.
- Returns:
-
inline dspace getDataspace(const H5std_string &dataset_name)
- Parameters:
dataset_name – : dataset name
- Returns:
-
inline gspace getGroup(const H5std_string &dataset_name)
- Parameters:
dataset_name – : DataSet name
- Returns:
-
inline auto createGroup(const H5std_string &group_name)
Create a group name.
- Parameters:
group_name – : Group name
- Returns:
-
template<typename T>
inline void writeMetadata(const T &data, const H5std_string &label) Write Metadata.
- Template Parameters:
T – : Type of the array
- Parameters:
data – : Array that needs to stored
dataname – : DataSet name
-
template<typename T>
inline void readMetadata(T &data, const H5std_string &label) - Template Parameters:
T – : Type of the array
- Parameters:
data – : Array that needs to stored
dataname – : DataSet name
-
inline void setFileName(const H5std_string &fileName, const std::string &rw = std::string("tr"))