def METHOD_NAME(tiles_description_json_path, roi, output_hdf5_path, output_dataset_name):
    """
    Export a cutout volume from a TiledVolume into an hdf5 dataset.
    Args:
        tiles_description_json_path: path to the TiledVolume's json description file.
        roi: The (start, stop) corners of the cutout region to export. (Must be tuple-of-tuples.)
        output_hdf5_path: The HDF5 file to export to.
        output_dataset_name: The name of the HDF5 dataset to write.  Will be deleted first if necessary.
    """
    if not os.path.exists(tiles_description_json_path):
        raise Exception("Description file does not exist: " + tiles_description_json_path)
    start, stop = numpy.array(roi)
    shape = tuple(stop - start)
    tiled_volume = TiledVolume(tiles_description_json_path)
    with Timer() as timer:
        result_array = numpy.ndarray(shape, tiled_volume.description.dtype)
        logger.info("Reading cutout volume of shape: {}".format(shape))
        tiled_volume.read((start, stop), result_out=result_array)
        logger.info("Writing data to: {}/{}".format(output_hdf5_path, output_dataset_name))
        with h5py.File(output_hdf5_path, "a") as output_h5_file:
            if output_dataset_name in output_h5_file:
                del output_h5_file[output_dataset_name]
            dset = output_h5_file.create_dataset(
                output_dataset_name, shape, result_array.dtype, chunks=True, data=result_array
            )
            try:
                import vigra
            except ImportError:
                pass
            else:
                # Attach axistags to the exported dataset, so ilastik
                #  automatically interprets the volume correctly.
                output_axes = tiled_volume.description.output_axes
                dset.attrs["axistags"] = vigra.defaultAxistags(output_axes).toJSON()
        logger.info("Exported {:.1e} pixels in {:.1f} seconds.".format(bigintprod(shape), timer.seconds()))