Source code for gunpowder.nodes.hdf5_write

from .hdf5like_write_base import Hdf5LikeWrite
from gunpowder.ext import h5py
import os


[docs] class Hdf5Write(Hdf5LikeWrite): """Assemble arrays of passing batches in one HDF5 file. This is useful to store chunks produced by :class:`Scan` on disk without keeping the larger array in memory. The ROIs of the passing arrays will be used to determine the position where to store the data in the dataset. Args: dataset_names (``dict``, :class:`ArrayKey` -> ``string``): A dictionary from array keys to names of the datasets to store them in. output_dir (``string``): The directory to save the HDF5 file. Will be created, if it does not exist. output_filename (``string``): The output filename of the container. Will be created, if it does not exist, otherwise data is overwritten in the existing container. compression_type (``string`` or ``int``): Compression strategy. Legal values are ``gzip``, ``szip``, ``lzf``. If an integer between 1 and 10, this indicates ``gzip`` compression level. dataset_dtypes (``dict``, :class:`ArrayKey` -> data type): A dictionary from array keys to datatype (eg. ``np.int8``). If given, arrays are stored using this type. The original arrays within the pipeline remain unchanged. """ def _open_file(self, filename): if os.path.exists(filename): return h5py.File(filename, "r+") else: return h5py.File(filename, "w")