def volumina_n_layer(data, labels = None): app = QApplication(sys.argv) import volumina from volumina.api import Viewer v = Viewer () v.title = " Volumina Demo " v.showMaximized () 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 labels data_type = d.dtype if 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 volumina_flexible_layer(data, layer_types, labels=None): assert len(layer_types) == len(data) app = QApplication (sys.argv) import volumina from volumina.api import Viewer v = Viewer () v.title = " Volumina Demo " v.showMaximized () for i, d in enumerate(data): layer_name = "layer_" + str(i) if labels is not None: layer_name = labels[i] # get data type of the elements d, to determine # if we use a grayscale overlay (float32) or a randomcolors overlay (uint) for labels data_type = d.dtype if layer_types[i] == 'Grayscale': v.addGrayscaleLayer(d , name = layer_name) elif layer_types[i] == 'RandomColors': v.addRandomColorsLayer(d.astype(np.uint32), name=layer_name) elif layer_types[i] == 'Red': v.addAlphaModulatedLayer(d , name=layer_name, tintColor=QColor(255,0,0)) elif layer_types[i] == 'Green': v.addAlphaModulatedLayer(d , name=layer_name, tintColor=QColor(0,255,0)) elif layer_types[i] == 'Blue': v.addAlphaModulatedLayer(d , name=layer_name, tintColor=QColor(0,0,255)) else: raise KeyError("Invalid Layer Type, %s!" % layer_types[i]) app.exec_()
def view(data, labels=None, layer_types=None): """ """ if labels is not None: assert len(labels) == len(data) if layer_types is not None: assert len(layer_types) == len(data) assert all(ltype in ('Grayscale', 'RandomColors', 'Red', 'Green', 'Blue') for ltype in layer_types) app = QApplication(sys.argv) from volumina.api import Viewer v = Viewer() v.title = "Volumina Viewer" v.showMaximized() for i, d in enumerate(data): layer_name = layer_name = "layer_" + str(i) if labels is None else labels[i] if layer_types is None: _dtype_to_layer(v, d, layer_name) else: _name_to_layer(v, d, layer_types[i], layer_name) app.exec_()
def addHocViewer(grayData=None, segData=None, title="viewer", visu=True): if visu: app = QApp.Instance().app v = Viewer() if grayData is not None: for name in grayData.keys(): data = grayData[name] if _hasVigra: if isinstance(data, vigra.arraytypes.VigraArray): v.addGrayscaleLayer(data.view(numpy.ndarray), name=name) else: v.addGrayscaleLayer(data, name=name) else: v.addGrayscaleLayer(data, name=name) if segData is not None: for name in segData.keys(): data = segData[name] if _hasVigra: if isinstance(data, vigra.arraytypes.VigraArray): v.addColorTableLayer(data.view(numpy.ndarray), name=name) else: v.addColorTableLayer(data, name=name) else: v.addGrayscaleLayer(data, name=name) v.setWindowTitle(title) v.showMaximized() app.exec_()
def volumina_single_layer(data): app = QApplication (sys.argv) from volumina.api import Viewer v = Viewer () v.title = " Volumina Demo " v.showMaximized () v.addGrayscaleLayer (data , name =" raw data ") app . exec_ ()
def volumina_viewer(): app = QApplication(sys.argv) v = Viewer() v.editor.setInteractionMode("navigation") yield v try: signal.signal(signal.SIGINT, lambda *_: app.quit()) app.exec_() finally: app.quit()
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_()
def volumina_double_layer(data, overlay): # get data type of the elements of overlay, to determine # if we use a grayscale overlay (float32) or a randomcolors overlay (uint) for labels mask = [] for i in range( len(overlay.shape) ): mask.append(0) mask = tuple(mask) data_type = type(overlay[mask]) app = QApplication (sys.argv) from volumina.api import Viewer v = Viewer () v.title = " Volumina Demo " v.showMaximized () v.addGrayscaleLayer(data , name = " raw data ") if data_type == np.float32: v.addGrayscaleLayer(overlay , name = " overlay ") else: v.addRandomColorsLayer(overlay, name = " overlay ") app . exec_ ()
if len(args) != 1: parser.error("no hdf5 dataset supplied") x = args[0].find(".h5") fname = args[0][:x + 3] gname = args[0][x + 4:] # load data f = h5py.File(fname, "r") raw = f[gname].value assert raw.ndim == 3 assert raw.dtype == numpy.uint8 f.close() app = QApplication([]) v = Viewer() direct = True raw.shape = (1, ) + raw.shape + (1, ) l1 = v.addGrayscaleLayer(raw, name="raw", direct=True) l1.visible = direct colortable = [ QColor(0, 0, 0, 0).rgba(), QColor(255, 0, 0).rgba(), QColor(0, 255, 0).rgba(), QColor(0, 0, 255).rgba() ] s = ((raw // 64)).astype(numpy.uint8)
a = np.zeros(500 * 500).reshape(500, 500).astype(np.uint8) ii = np.random.randint(0, 500, 1) jj = np.random.randint(0, 500, 1) a[ii, jj] = 1 a = vigra.filters.discDilation(a, radius=20) array[:] = a.reshape(shape).view(np.ndarray) * 255 op.Input.setDirty() do() cron.timeout.connect(do) ds = createDataSource(op.Output) layer = ColortableLayer(ds, jet()) mainwin = Viewer() mainwin.layerstack.append(layer) mainwin.dataShape = (1, h, w, 1, 1) print(mainwin.centralWidget()) BoxContr = BoxController(mainwin.editor, op.Output, boxListModel) BoxInt = BoxInterpreter(mainwin.editor.navInterpret, mainwin.editor.posModel, BoxContr, mainwin.centralWidget()) mainwin.editor.setNavigationInterpreter(BoxInt) # boxListModel.boxRemoved.connect(BoxContr.deleteItem) LV.show() mainwin.show() app.exec_()
def showStuff(raw_name, pred_viewer1, pred_viewer2, cutout_name, one_extra=None): # display the raw and annotations for cremi challenge data raw = vigra.impex.readHDF5(indir + datasets[raw_name], "data", order='C') # raw_old = vigra.readHDF5(indir+datasets["raw_bad"], "data", order = 'C') defect_prediction_128 = vigra.impex.readHDF5(indir + datasets[pred_viewer2], "data", order='C') defect_prediction_150 = vigra.impex.readHDF5(indir + datasets[pred_viewer1], "data", order='C') cutout_from_150_pred = vigra.impex.readHDF5(indir + datasets[cutout_name], "data", order='C') #################################################################################################################### # only used for fast testing stuff #change_one = vigra.readHDF5(indir+datasets["segmentation_on_equalized_image"], "data", order = 'C') #pdb.set_trace() #defect_prediction_150[1,:,:] = change_one[0,:,:,0] #################################################################################################################### # defect_prediction_150 = gt[..., 0] cutout = numpy.asarray(cutout_from_150_pred) rawdata = numpy.asarray(raw) # rawdata_old = numpy.asarray(raw_old) # op5ify # shape5d = rawdata.shape shape5d = (1, ) + rawdata.shape + (1, ) print shape5d, rawdata.shape, rawdata.dtype app = QApplication([]) v = Viewer() direct = False # layer for raw data rawdata = numpy.reshape(rawdata, shape5d) rawsource = ArraySource(rawdata) v.dataShape = shape5d lraw = GrayscaleLayer(rawsource, direct=direct) lraw.visible = True lraw.name = "raw" v.layerstack.append(lraw) # layer for cutout regions from raw data cutout = numpy.reshape(cutout, shape5d) cutoutsource = ArraySource(cutout) lcutout = GrayscaleLayer(cutoutsource, direct=direct) lcutout.visible = False lcutout.name = "cut_out" v.layerstack.append(lcutout) # layer for first prediction result defect_prediction_128 = numpy.reshape(defect_prediction_128, shape5d) synsource = ArraySource(defect_prediction_128) ct = create_random_16bit() ct[0] = 0 lsyn = ColortableLayer(synsource, ct) lsyn.name = pred_viewer2 lsyn.visible = False v.layerstack.append(lsyn) # layer for second prediction result segm = numpy.reshape(defect_prediction_150, shape5d) segsource = ArraySource(segm) ct = create_random_16bit() ct[0] = 0 lseg = ColortableLayer(segsource, ct) lseg.name = pred_viewer1 lseg.visible = False v.layerstack.append(lseg) if one_extra is None: v.showMaximized() app.exec_() if one_extra is not None: # layer for third prediction result extra_prediction = vigra.readHDF5(indir + datasets[one_extra], "data", order='C') extra_pred_reshaped = numpy.reshape(extra_prediction, shape5d) segsource = ArraySource(extra_pred_reshaped) ct = create_random_16bit() ct[0] = 0 # ct = create_default_16bit() lseg = ColortableLayer(segsource, ct) lseg.name = one_extra lseg.visible = False v.layerstack.append(lseg) v.showMaximized() app.exec_()