Source code for nncore.io.handlers.hdf5

# Copyright (c) Ye Liu. Licensed under the MIT License.

import h5py
import numpy as np

from .base import FileHandler


[docs] class HDF5Handler(FileHandler): """ Handler for HDF5 files. """ def load_from_file(self, file, dataset, **kwargs): obj = file.get(dataset, **kwargs) if isinstance(obj, h5py.Dataset): obj = obj[:] return obj def dump_to_file(self, obj, file, dataset, append_mode=True, **kwargs): if not isinstance(obj, np.ndarray): raise TypeError("obj must be an np.ndarray for hdf5 files, " "but got '{}'".format(type(obj))) if dataset in file: ori_size = file[dataset].shape[0] file[dataset].resize(ori_size + obj.shape[0], axis=0) file[dataset][ori_size:] = obj else: if append_mode: kwargs.setdefault('maxshape', [None] + list(obj.shape)[1:]) file.create_dataset(dataset, data=obj, **kwargs) def load_from_path(self, path, mode='r', **kwargs): with h5py.File(path, mode=mode) as f: return self.load_from_file(f, **kwargs) def dump_to_path(self, obj, path, mode='a', **kwargs): with h5py.File(path, mode=mode) as f: self.dump_to_file(obj, f, **kwargs)