Example #1
0
def figureDialog() -> Tuple[Figure, QtWidgets.QDialog]:
    """Make a dialog window containing a :class:`.MPLPlotWidget`.

    :return: The figure object of the plot, and the dialog window object.
    """
    widget = MPLPlotWidget()
    return widget.plot.fig, widgetDialog(widget)
Example #2
0
def main():
    fc = linearFlowchart(('dummy', DummyNode))
    node = fc.nodes()['dummy']
    dialog = widgetDialog(node.ui, title='dummy node')
    data = testdata.get_2d_scalar_cos_data(2, 2, 1)
    fc.setInput(dataIn=data)
    return dialog, fc
def main():
    app = QtWidgets.QApplication([])
    widgets = []

    widgets.append(test_basic_line_plot())
    # widgets.append(
    #     test_images())
    # widgets.append(
    #     test_scatter2d())
    # widgets.append(
    #     test_complex_line_plots())
    # widgets.append(
    #     test_complex_line_plots(single_panel=True))
    # widgets.append(
    #     test_complex_line_plots(mag_and_phase_format=True))
    # widgets.append(
    #     test_complex_line_plots(single_panel=True, mag_and_phase_format=True))
    # widgets.append(
    #     test_complex_images())
    # widgets.append(
    #     test_complex_images(mag_and_phase_format=True))

    dgs = []
    for w in widgets:
        dgs.append(widgetDialog(w))
        dgs[-1].show()
    return app.exec_()
def xySelection(interactive=False):
    if not interactive:
        app = QtGui.QApplication([])

    fc = linearFlowchart(('xysel', XYSelector))
    selector = fc.nodes()['xysel']
    dialog = widgetDialog(selector.ui, 'xysel')

    data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(4, 4, 4))
    fc.setInput(dataIn=data)

    if not interactive:
        app.exec_()
    else:
        return dialog, fc
def dimReduction(interactive=False):
    if not interactive:
        app = QtGui.QApplication([])

    fc = linearFlowchart(('reducer', DimensionReducer))
    reducer = fc.nodes()['reducer']
    dialog = widgetDialog(reducer.ui, 'reducer')

    data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(2, 2, 2))
    fc.setInput(dataIn=data)

    if not interactive:
        app.exec_()
    else:
        return dialog, fc
Example #6
0
def test_dataSelectionWidget(readonly: bool = False):
    def selectionCb(selection):
        print(selection)

    # app = QtWidgets.QApplication([])
    widget = DataSelectionWidget(readonly=readonly)
    widget.dataSelectionMade.connect(selectionCb)

    # set up the UI, feed data in
    data = testdata.three_incompatible_3d_sets(5, 5, 5)
    dialog = widgetDialog(widget)
    widget.setData(data.structure(), data.shapes())
    widget.clear()
    widget.setData(data.structure(), data.shapes())
    return dialog
def xySelectionWidget():
    def selectionCb(selection):
        print(selection)

    app = QtGui.QApplication([])
    widget = XYSelectionWidget()
    widget.rolesChanged.connect(selectionCb)

    # set up the UI, feed data in
    data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(5, 5, 5))
    dialog = widgetDialog(widget)
    widget.setData(data)
    widget.clear()
    widget.setData(data)
    return app.exec_()
Example #8
0
def dataSelectionWidget(readonly=False):
    def selectionCb(selection):
        print(selection)

    app = QtGui.QApplication([])
    widget = DataSelectionWidget(readonly=readonly)
    widget.dataSelectionMade.connect(selectionCb)

    # set up the UI, feed data in
    data = testdata.three_incompatible_3d_sets(5, 5, 5)
    dialog = widgetDialog(widget)
    widget.setData(data)
    widget.clear()
    widget.setData(data)
    return app.exec_()
Example #9
0
def loader_node(interactive=False):
    def cb(*vals):
        print(vals)

    if not interactive:
        app = QtWidgets.QApplication([])

    fc = linearFlowchart(('loader', dds.DDH5Loader))
    loader = fc.nodes()['loader']
    dialog = widgetDialog(loader.ui, 'loader')

    if not interactive:
        loader.newDataStructure.connect(cb)
        app.exec_()
    else:
        return dialog, fc
def main(multi=False):
    def cb(value):
        print('Selection made:', value)

    data = str2dd("data1(x,y,z); data2(x,z);")

    if not multi:
        w = DimensionSelector()
        combo = w.combo
        combo.setDimensions(data.axes() + data.dependents())
        combo.dimensionSelected.connect(cb)
    else:
        w = MultiDimensionSelector()
        w.setDimensions(data.axes() + data.dependents())
        w.dimensionSelectionMade.connect(cb)

    return widgetDialog(w)
Example #11
0
def gridOptionWidget():
    def cb(val):
        print(val)

    app = QtGui.QApplication([])
    widget = GridOptionWidget()
    widget.optionSelected.connect(cb)

    # set up the UI, feed data in
    data = datadict_to_meshgrid(
        testdata.three_compatible_3d_sets(5, 5, 5)
    )
    dialog = widgetDialog(widget)
    widget.setAxes(data.axes())
    widget.setShape(data.shape())

    return app.exec_()
def test_data_selector():
    fc = linearFlowchart(('selector', DataSelector))
    selector = fc.nodes()['selector']
    dialog = widgetDialog(selector.ui, title='selector')

    data = testdata.three_incompatible_3d_sets(2, 2, 2)
    fc.setInput(dataIn=data)
    selector.selectedData = ['data']

    # for testing purposes, insert differently structured data
    data2 = testdata.two_compatible_noisy_2d_sets()
    fc.setInput(dataIn=data2)

    # ... and go back.
    fc.setInput(dataIn=data)
    selector.selectedData = ['data']

    return dialog, fc
Example #13
0
def test_gridOptionWidget():
    def cb(val):
        print(val)

    widget = GridOptionWidget()
    widget.optionSelected.connect(cb)

    # set up the UI, feed data in
    data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(5, 5, 5))
    dialog = widgetDialog(widget)
    widget.setAxes(data.axes())

    widget.setShape({
        'order': ['x', 'y', 'z'],
        'shape': (5, 5, 5),
    })

    return dialog
Example #14
0
def gridder(interactive=False):
    def cb(val):
        print(val)

    if not interactive:
        app = QtGui.QApplication([])

    fc = linearFlowchart(('grid', DataGridder))
    gridder = fc.nodes()['grid']
    dialog = widgetDialog(gridder.ui, 'gridder')

    data = testdata.three_compatible_3d_sets(2, 2, 2)
    fc.setInput(dataIn=data)

    if not interactive:
        gridder.shapeDetermined.connect(cb)
        app.exec_()
    else:
        return dialog, fc
Example #15
0
def test_GridNode():
    def cb(val):
        print(val)

    fc = linearFlowchart(('grid', DataGridder))
    gridder = fc.nodes()['grid']
    dialog = widgetDialog(gridder.ui, 'gridder')

    data = testdata.three_compatible_3d_sets(2, 2, 2)
    fc.setInput(dataIn=data)

    gridder.shapeDetermined.connect(cb)

    gridder.grid = GridOption.guessShape, {}
    gridder.grid = GridOption.specifyShape, \
                   dict(order=['x', 'y', 'z'], shape=(2,2,3))
    gridder.grid = GridOption.guessShape, {}
    gridder.grid = GridOption.specifyShape, \
                   dict(order=['x', 'y', 'z'], shape=(2,2,3))

    return dialog, fc
Example #16
0
def test_shapeSpecWidget():
    def cb(val):
        print(val)

    widget = ShapeSpecificationWidget()
    widget.newShapeNotification.connect(cb)

    # set up the UI, feed data in
    dialog = widgetDialog(widget)
    widget.setAxes(['x', 'y', 'aVeryVeryVeryVeryLongAxisName'])

    widget.setShape({
        'order': ['x', 'y', 'aVeryVeryVeryVeryLongAxisName'],
        'shape': (5, 5, 5),
    })

    widget.setShape({
        'order': ['y', 'x', 'aVeryVeryVeryVeryLongAxisName'],
        'shape': (11, 4, -9),
    })

    return dialog
Example #17
0
def test_data_selector(interactive=True):
    if not interactive:
        app = QtGui.QApplication([])

    fc = linearFlowchart(('selector', DataSelector))
    selector = fc.nodes()['selector']
    dialog = widgetDialog(selector.ui, 'selector')

    data = testdata.three_incompatible_3d_sets(2, 2, 2)
    fc.setInput(dataIn=data)
    selector.selectedData = ['data']

    # for testing purposes, insert differently structured data
    data2 = testdata.two_compatible_noisy_2d_sets()
    fc.setInput(dataIn=data2)

    # ... and go back.
    fc.setInput(dataIn=data)
    selector.selectedData = ['data']

    if not interactive:
        app.exec_()
    else:
        return dialog, fc
def image_test():
    app = QtWidgets.QApplication([])

    # create data
    x = np.linspace(0, 10, 51)
    y = np.linspace(-4, 4, 51)
    xx, yy = np.meshgrid(x, y, indexing='ij')
    zz = np.cos(xx)*np.exp(-(yy-1.)**2)

    # layout widget
    pgWidget = pg.GraphicsLayoutWidget()

    # main plot
    imgPlot = pgWidget.addPlot(title='my image', row=0, col=0)
    img = pg.ImageItem()
    imgPlot.addItem(img)

    # histogram and colorbar
    hist = pg.HistogramLUTItem()
    hist.setImageItem(img)
    pgWidget.addItem(hist)
    hist.gradient.loadPreset('viridis')

    # cut elements
    pgWidget2 = pg.GraphicsLayoutWidget()

    # plots for x and y cuts
    xplot = pgWidget2.addPlot(row=1, col=0)
    yplot = pgWidget2.addPlot(row=0, col=0)

    xplot.addLegend()
    yplot.addLegend()

    # add crosshair to main plot
    vline = pg.InfiniteLine(angle=90, movable=False, pen='r')
    hline = pg.InfiniteLine(angle=0, movable=False, pen='b')
    imgPlot.addItem(vline, ignoreBounds=True)
    imgPlot.addItem(hline, ignoreBounds=True)

    def crossMoved(event):
        pos = event[0].scenePos()
        if imgPlot.sceneBoundingRect().contains(pos):
            origin = imgPlot.vb.mapSceneToView(pos)
            vline.setPos(origin.x())
            hline.setPos(origin.y())
            vidx = np.argmin(np.abs(origin.x()-x))
            hidx = np.argmin(np.abs(origin.y()-y))
            yplot.clear()
            yplot.plot(zz[vidx, :], y, name='vertical cut',
                       pen=pg.mkPen('r', width=2),
                       symbol='o', symbolBrush='r', symbolPen=None)
            xplot.clear()
            xplot.plot(x, zz[:, hidx], name='horizontal cut',
                       pen=pg.mkPen('b', width=2),
                       symbol='o', symbolBrush='b', symbolPen=None)

    proxy = pg.SignalProxy(imgPlot.scene().sigMouseClicked, slot=crossMoved)

    dg = widgetDialog(pgWidget, title='pyqtgraph image test')
    dg2 = widgetDialog(pgWidget2, title='line cuts')

    # setting the data
    img.setImage(zz)
    img.setRect(QtCore.QRectF(0, -4, 10, 8.))
    hist.setLevels(zz.min(), zz.max())

    # formatting
    imgPlot.setLabel('left', "Y", units='T')
    imgPlot.setLabel('bottom', "X", units='A')
    xplot.setLabel('left', 'Z')
    xplot.setLabel('bottom', "X", units='A')
    yplot.setLabel('left', "Y", units='T')
    yplot.setLabel('bottom', "Z")

    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtWidgets.QApplication.instance().exec_()