import h5py import numpy as np dataset_name = 'dataset' def createSourceFiles(n_source_files): ret = [] # Create source files (1.h5, 2.h5...) for n in range(1, n_source_files+1): name = '{}.h5'.format(n) ret.append(name) with h5py.File(name, 'w') as f: d = f.create_dataset(dataset_name, (2, 2), 'i4') d[:] = np.random.randint(n_source_files, size=(2, 2)) return ret def createVDS(sourcefiles): with h5py.File("vds.h5", mode='w') as fd: # Assemble virtual dataset num_files = len(sourcefiles) layout = h5py.VirtualLayout(shape=(num_files, 3, 3), dtype='i4') for i, fn in enumerate(sourcefiles): vsource = h5py.VirtualSource(fn, dataset_name, shape=(3, 3)) layout[i] = vsource vdataset = fd.create_virtual_dataset("dataset", layout, fillvalue=-np.inf) def show_vds_file(): with h5py.File("vds.h5", mode='r') as fd: img = fd['dataset'][0] print(img) sourcefiles = createSourceFiles(3) createVDS(sourcefiles) show_vds_file()