def volumina_n_layer(data, labels=None): """ BASIC FUNCTION :param data: :param labels: :return: """ app = QApplication(sys.argv) import volumina from volumina.api import Viewer v = Viewer() v.title = " Volumina Demo " v.showNormal() for ind, d in enumerate(data): layer_name = "layer_" + str(ind) if labels is not None: layer_name = labels[ind] # get data type of the elements d, to determine # if we use a grayscale overlay (float32) or a randomcolors overlay (uint) for batchLabels data_type = d.dtype if data_type is FloatType or data_type == np.float32 or data_type == np.float64: v.addGrayscaleLayer(d, name=layer_name) else: v.addRandomColorsLayer(d.astype(np.uint32), name=layer_name) app.exec_()
def streaming_n_layer(files, keys, labels=None, block_shape=[100, 100, 100]): from volumina.api import Viewer from volumina.pixelpipeline.datasources import LazyflowSource from lazyflow.graph import Graph from lazyflow.operators.ioOperators.opStreamingHdf5Reader import OpStreamingHdf5Reader from lazyflow.operators import OpCompressedCache app = QApplication(sys.argv) v = Viewer() graph = Graph() def mkH5source(fname, gname): h5file = h5py.File(fname) dtype = h5file[gname].dtype source = OpStreamingHdf5Reader(graph=graph) source.Hdf5File.setValue(h5file) source.InternalPath.setValue(gname) op = OpCompressedCache(parent=None, graph=graph) op.BlockShape.setValue(block_shape) op.Input.connect(source.OutputImage) return op.Output, dtype #rawSource = mkH5source(data[0], keys[0]) #v.addGrayscaleLayer(rawSource, name = 'raw') for i, f in enumerate(files): if labels is not None: layer_name = labels[i] else: layer_name = "layer_%i" % (i) source, dtype = mkH5source(f, keys[i]) if np.dtype(dtype) in (np.dtype('uint8'), np.dtype('float32'), np.dtype('float64')): v.addGrayscaleLayer(source, name=layer_name) else: v.addRandomColorsLayer(source, name=layer_name) v.setWindowTitle("Streaming Viewer") v.showNormal() app.exec_()