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_()
Exemple #3
0
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_()
Exemple #4
0
    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_ ()
Exemple #6
0
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()
Exemple #7
0
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)
Exemple #10
0
        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_()
Exemple #11
0
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_()