def read_hdf5(fname, dataset, slc=None, dtype=None, shared=False): """ Read data from hdf5 file from a specific group. Parameters ---------- fname : str String defining the path of file or file name. dataset : str Path to the dataset inside hdf5 file where data is located. slc : sequence of tuples, optional Range of values for slicing data in each axis. ((start_1, end_1, step_1), ... , (start_N, end_N, step_N)) defines slicing parameters for each axis of the data matrix. dtype : numpy datatype (optional) Convert data to this datatype on read if specified. shared : bool (optional) If True, read data into shared memory location. Defaults to True. Returns ------- ndarray Data. """ try: fname = _check_read(fname) with h5py.File(fname, "r") as f: try: data = f[dataset] except KeyError: # NOTE: I think it would be better to raise an exception here. logger.error('Unrecognized hdf5 dataset: "%s"' % (str(dataset))) return None shape = _shape_after_slice(data.shape, slc) if dtype is None: dtype = data.dtype if shared: arr = empty_shared_array(shape, dtype) else: arr = np.empty(shape, dtype) data.read_direct(arr, _make_slice_object_a_tuple(slc)) except KeyError: return None _log_imported_data(fname, arr) return arr