示例#1
0
def init_prog_show_data(init_prog, distribution='uniform'):
    prog, qtbot = init_prog
    data_red, data_green, data_blue, data_spread = init_data()
    if distribution == 'uniform':
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green, data_blue])
    else:
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_spread])
    prog.show_data(data)
    return prog, qtbot, (data_red, data_green, data_blue, data_spread)
示例#2
0
    def test_update_display_items(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()

        data = utils.DataFromPlugins(distribution='spread', data=[data_spread])
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()
    def grab_data(self, Naverage=1, **kwargs):
        """

        """
        coeff = self.settings.child(('width_coeff')).value()
        fun_type = self.settings.child(('fun_type')).value()

        self.datas = np.zeros((self.Ny, self.Nx))
        self.stop_flag = False

        if self.scan_parameters is not None:
            for ind in range(self.scan_parameters.Nsteps):
                if self.stop_flag:
                    break
                positions = (self.x_axis[self.scan_parameters.axes_indexes[ind,
                                                                           0]],
                             self.y_axis[self.scan_parameters.axes_indexes[ind,
                                                                           1]])

                if fun_type == 'Gaussians':
                    self.datas[self.scan_parameters.axes_indexes[ind, 1],
                               self.scan_parameters.axes_indexes[
                                   ind, 0]] = random_hypergaussians2D_signal(
                                       positions, coeff)
                else:
                    self.datas[self.scan_parameters.axes_indexes[ind, 1],
                               self.scan_parameters.axes_indexes[
                                   ind,
                                   0]] = diverging2D_signal(positions, coeff)
                if ind % 100 == 0:  # refresh plot every 100 grabed points
                    self.data_grabed_signal_temp.emit([
                        utils.DataFromPlugins(
                            name='MockScanner',
                            data=[self.datas],
                            dim='Data2D',
                            x_axis=utils.Axis(data=self.x_axis),
                            y_axis=utils.Axis(data=self.y_axis))
                    ])
                    QtWidgets.QApplication.processEvents()
                    QThread.msleep(100)

        self.data_grabed_signal.emit([
            utils.DataFromPlugins(name='MockScanner',
                                  data=[self.datas],
                                  dim='Data2D',
                                  x_axis=utils.Axis(data=self.x_axis),
                                  y_axis=utils.Axis(data=self.y_axis))
        ])
        self.ind_data += 1
    def grab_data(self, Naverage=1, **kwargs):
        """

        """
        coeff = self.settings.child(('width_coeff')).value()
        fun_type = self.settings.child(('fun_type')).value()
        if 'positions' in kwargs:
            positions = kwargs['positions']

            if len(positions) == 2:
                if fun_type == 'Gaussians':
                    data = random_hypergaussians2D_signal(positions, coeff)
                else:
                    data = diverging2D_signal(positions, coeff)
            else:
                if fun_type == 'Gaussians':
                    data = random_hypergaussians1D(positions, coeff)[0]
                else:
                    data = diverging1D(positions[0], coeff)
        else:
            if fun_type == 'Gaussians':
                data = random_hypergaussians1D(
                    np.roll(x_axis1D, -self.ind_data)[0], coeff)
            else:
                data = diverging1D(np.roll(x_axis1D, -self.ind_data)[0], coeff)

        self.data_grabed_signal.emit([
            utils.DataFromPlugins(
                name='MockAdaptive',
                data=[np.array([data])],
                dim='Data0D',
            )
        ])
        self.ind_data += 1
    def ini_detector(self, controller=None):
        """
            Initialisation procedure of the detector.

            Returns
            -------
            ???
                the initialized status.

            See Also
            --------
            set_Mock_data
        """

        self.status.update(edict(initialized=False, info="", x_axis=None, y_axis=None, controller=None))
        if self.settings.child(('controller_status')).value() == "Slave":
            if controller is None:
                raise Exception('no controller has been defined externally while this detector is a slave one')
            else:
                self.controller = controller
        else:
            self.controller = "Mock controller"
        self.emit_status(utils.ThreadCommand('update_main_settings', [['wait_time'],
                                                                      self.settings.child(('wait_time')).value(),
                                                                      'value']))

        # initialize viewers with the future type of data
        self.data_grabed_signal.emit(
            [utils.DataFromPlugins(name='Mock1', data=[np.array(0)], dim='Data0D', labels=['RandomGaussians'])])

        self.status.initialized = True
        self.status.controller = self.controller
        return self.status
示例#6
0
    def test_get_crosshair_lineout_uniform(self, init_prog, position):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        datas = dict(red=data_red, green=data_green)
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()

        XCROSS, YCROSS = position

        prog.view.get_action('crosshair').trigger()
        QtWidgets.QApplication.processEvents()

        with qtbot.waitSignal(
                prog.view.lineout_plotter.crosshair_lineout_plotted,
                timeout=1000) as blocker:
            prog.view.crosshair.set_crosshair_position(XCROSS, YCROSS)

        crosshair_dict = blocker.args[0]
        for data_key, lineout_data in crosshair_dict.items():
            if YCROSS < 0 or YCROSS > datas[data_key].shape[0]:
                assert np.any(lineout_data.hor_data == approx(
                    np.zeros((datas[data_key].shape[1], ))))
            else:
                assert np.any(lineout_data.hor_data == approx(datas[data_key][
                    YCROSS, :]))
            if XCROSS < 0 or XCROSS > datas[data_key].shape[1]:
                assert np.any(lineout_data.ver_data == approx(
                    np.zeros((datas[data_key].shape[0], ))))
            else:
                assert np.any(
                    lineout_data.ver_data == approx(datas[data_key][:,
                                                                    XCROSS]))
示例#7
0
    def test_data_from_roi_spread(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='spread', data=[data_spread])
        prog.show_data(data)

        index_roi, roi, roi_type = create_one_roi(prog,
                                                  qtbot,
                                                  roitype='RectROI')
        roi.setPos((0, 0))

        assert prog.view.is_action_checked('roi')

        with qtbot.waitSignal(prog.data_to_export_signal,
                              timeout=1000) as blocker:
            roi.setSize((data_red.T).shape)
            roi.setPos((0, 0))

        data_to_export = blocker.args[0]
        assert len(data_to_export['data1D']) != 0
        assert len(data_to_export['data0D']) != 0

        assert f'{prog.title}_Hlineout_{ROIManager.roi_format(index_roi)}' in data_to_export[
            'data1D']
        assert f'{prog.title}_Vlineout_{ROIManager.roi_format(index_roi)}' in data_to_export[
            'data1D']
        assert f'{prog.title}_Integrated_{ROIManager.roi_format(index_roi)}' in data_to_export[
            'data0D']
示例#8
0
    def format_data_as_datafromplugins(data_red=None,
                                       data_green=None,
                                       data_blue=None,
                                       data_spread=None):
        if data_spread is None:
            distribution = 'uniform'
            shape = (0, 0)
            for data in [data_red, data_green, data_blue]:
                if data is not None:
                    shape = data.shape
                    break

            data_list = [
                data_red if data_red is not None else np.zeros(shape),
                data_green if data_green is not None else np.zeros(shape),
                data_blue if data_blue is not None else np.zeros(shape),
            ]
        else:
            distribution = 'spread'
            data_list = [data_spread]

        datas = utils.DataFromPlugins(name='',
                                      distribution=distribution,
                                      data=data_list)
        return datas
示例#9
0
    def test_get_crosshair_lineout_spread(self, init_prog, position):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='spread', data=[data_spread])
        datas = dict(spread=data_spread)
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()

        red_image_item = prog.view.data_displayer.get_image('red')
        XCROSS, YCROSS = position

        prog.view.get_action('crosshair').trigger()
        QtWidgets.QApplication.processEvents()

        with qtbot.waitSignal(
                prog.view.lineout_plotter.crosshair_lineout_plotted,
                timeout=1000) as blocker:
            prog.view.crosshair.set_crosshair_position(XCROSS, YCROSS)

        crosshair_dict = blocker.args[0]
        data_H_index = slice(None, None, 1)
        data_V_index = slice(None, None, 1)
        for data_key, lineout_data in crosshair_dict.items():
            points, hor_data = red_image_item.get_points_at('y', position[1])
            x_sorted_indexes = np.argsort(points[:, 0])
            hor_data = hor_data[x_sorted_indexes][data_H_index]

            points, ver_data = red_image_item.get_points_at('x', position[0])
            x_sorted_indexes = np.argsort(points[:, 1])
            ver_data = ver_data[x_sorted_indexes][data_V_index]

            assert np.any(lineout_data.hor_data == approx(hor_data))
            assert np.any(lineout_data.ver_data == approx(ver_data))
示例#10
0
    def test_get_image(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()

        with pytest.raises(KeyError):
            prog.view.data_displayer.get_image('not a valid image name')
示例#11
0
    def test_show_data_spread(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='spread',
                                     data=[data_spread, data_spread])
        prog.show_data(data)
        assert prog.view.is_action_checked('red')
        assert prog.view.is_action_checked('green')
        assert not prog.view.is_action_checked('blue')
示例#12
0
def main_controller():
    app = QtWidgets.QApplication(sys.argv)
    form = QtWidgets.QWidget()
    Nx = 100
    Ny = 200
    data_random = np.random.normal(size=(Ny, Nx))
    x = np.linspace(0, Nx - 1, Nx)
    y = np.linspace(0, Ny - 1, Ny)
    from pymodaq.daq_utils.daq_utils import gauss2D

    data_red = 3 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1,
                           90) * np.sin(x / 5)**2 + 0.1 * data_random
    # data_red = pg.gaussianFilter(data_red, (2, 2))
    data_green = 24 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1, 0)
    # data_green = pg.gaussianFilter(data_green, (2, 2))
    data_green[70:80, 7:12] = np.nan

    data_blue = 10 * gauss2D(x, 0.7 * Nx, Nx / 5, y, 0.2 * Ny, Ny / 5, 1)
    data_blue = pg.gaussianFilter(data_blue, (2, 2))

    prog = Viewer2D(form)
    # prog.set_axis_scaling(scaling_options=utils.ScalingOptions(
    #     scaled_xaxis=utils.ScaledAxis(label="eV", units=None, offset=100, scaling=0.1),
    #     scaled_yaxis=utils.ScaledAxis(label="time", units='s', offset=-20, scaling=2)))
    form.show()
    #prog.auto_levels_action_sym.trigger()
    #prog.view.actions['autolevels'].trigger()

    data_spread = np.load('../../../resources/triangulation_data.npy')
    # data_shuffled = data
    # np.random.shuffle(data_shuffled)
    # prog.show_data(utils.DataFromPlugins(name='mydata', distribution='spread',
    #                                      data=[data, data_shuffled]))
    prog.view.get_action('histo').trigger()
    prog.view.get_action('autolevels').trigger()

    prog.show_data(
        utils.DataFromPlugins(name='mydata',
                              distribution='uniform',
                              data=[data_red, data_green]))
    #prog.show_data(utils.DataFromPlugins(name='mydata', distribution='spread', data=[data_spread]))

    #prog.ROI_select_signal.connect(print_roi_select)
    #prog.view.get_action('ROIselect').trigger()
    #prog.view.ROIselect.setSize((20, 35))
    #prog.view.ROIselect.setPos((45, 123))
    prog.show_roi_target(True)
    prog.move_scale_roi_target((50, 40), (20, 20))

    QtWidgets.QApplication.processEvents()

    # prog.setImage(data_spread=data)
    #app.processEvents()

    sys.exit(app.exec_())
示例#13
0
    def test_isocurve_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        prog.view.get_action('isocurve').trigger()

        assert prog.view.is_action_checked('isocurve')
        assert prog.view.is_action_checked('histo')
示例#14
0
    def test_histo_connected_to_image(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green, data_blue])
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()
        for color in ['red', 'green', 'blue']:
            assert prog.view.histogrammer.get_histogram(color).getLookupTable == \
                   prog.view.data_displayer.get_image(color).lut
示例#15
0
    def test_roi_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        create_one_roi(prog, qtbot, roitype='RectROI')

        assert prog.view.is_action_checked('roi')
        assert prog.view.roi_manager.roiwidget.isVisible()
示例#16
0
    def test_DataFromPlugins(self):
        data = [
            utils.linspace_step(1, 100, 1),
            utils.linspace_step(0.01, 1, 0.01)
        ]
        nav_axes = ["test"]
        x_axis = utils.Axis(data=utils.linspace_step(1, 100, 1))
        y_axis = utils.Axis(data=utils.linspace_step(1, 100, 1))
        data_test = utils.DataFromPlugins(data=data,
                                          nav_axes=nav_axes,
                                          nav_x_axis=x_axis,
                                          nav_y_axis=y_axis)
        assert isinstance(data_test, utils.DataFromPlugins)
        assert data_test['data'] == data
        assert data_test['nav_axes'] == nav_axes
        assert data_test['nav_x_axis'] == x_axis
        assert data_test['nav_y_axis'] == y_axis
        assert data_test['dim'] == 'Data1D'
        data = [np.array([1])]
        data_test = utils.DataFromPlugins(data=data)
        assert data_test['dim'] == 'Data0D'
        data = [np.array([[1, 1], [1, 2]])]
        data_test = utils.DataFromPlugins(data=data)
        assert data_test['dim'] == 'Data2D'
        data = [np.array([[[1, 1], [1, 2]], [[2, 1], [2, 2]]])]
        data_test = utils.DataFromPlugins(data=data)
        assert data_test['dim'] == 'DataND'

        with pytest.raises(TypeError):
            utils.DataFromPlugins(data=[1, 2, 3, 4, 5])
        with pytest.raises(TypeError):
            utils.DataFromPlugins(data="str")
示例#17
0
    def test_show_data_triggers_data_to_export_signal(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])

        with qtbot.waitSignal(prog.data_to_export_signal,
                              timeout=1000) as blocker:
            prog.show_data(data)

        with qtbot.waitSignal(prog.data_to_export_signal,
                              timeout=1000) as blocker:
            prog.show_data(data)
示例#18
0
    def test_aspect_ratio_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        prog.view.get_action('aspect_ratio').trigger()
        assert prog.view.is_action_checked('aspect_ratio')
        assert prog.view.image_widget.plotitem.vb.state['aspectLocked']

        prog.view.get_action('aspect_ratio').trigger()
        assert not prog.view.is_action_checked('aspect_ratio')
        assert not prog.view.image_widget.plotitem.vb.state['aspectLocked']
示例#19
0
    def test_histo_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        prog.view.get_action('histo').trigger()

        assert prog.view.is_action_checked('histo')
        assert prog.view.histogrammer.get_histogram('red').isVisible()
        assert prog.view.histogrammer.get_histogram('green').isVisible()
        assert not prog.view.histogrammer.get_histogram('blue').isVisible()
示例#20
0
    def test_change_isoline(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        ISOLEVEL = 0.1

        prog.view.get_action('isocurve').trigger()
        prog.view.isocurver._isoLine.setValue(ISOLEVEL)
        prog.view.isocurver._isoLine.sigDragged.emit(
            prog.view.isocurver._isoLine)
        QtWidgets.QApplication.processEvents()
        assert prog.view.isocurver._isocurve_item.level == ISOLEVEL
示例#21
0
    def test_show_data_uniform(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_blue])
        with qtbot.waitSignal(prog.data_to_export_signal,
                              timeout=1000) as blocker:
            prog.show_data(data)

        assert prog.view.is_action_checked('red')
        assert prog.view.is_action_checked('green')
        assert not prog.view.is_action_checked('blue')
        assert prog.isdata['red']
        assert prog.isdata['green']
        assert not prog.isdata['blue']
示例#22
0
    def test_remove_roi(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        index_roi, roi, roi_type = create_one_roi(prog,
                                                  qtbot,
                                                  roitype='RectROI')

        prog.view.roi_manager.remove_roi_programmatically(index_roi)
        QtWidgets.QApplication.processEvents()

        assert len(prog.view.lineout_plotter._roi_curves) == 0
示例#23
0
    def test_update_color_roi(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        index_roi, roi, roi_type = create_one_roi(prog,
                                                  qtbot,
                                                  roitype='RectROI')

        prog.view.roi_manager.settings.child('ROIs',
                                             ROIManager.roi_format(index_roi),
                                             'Color').setValue('b')
        roi = prog.view.roi_manager.get_roi_from_index(index_roi)
        QtWidgets.QApplication.processEvents()
        assert roi.pen == mkPen('b')
示例#24
0
    def test_FlipLR_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        with qtbot.waitSignal(prog._data_to_show_signal,
                              timeout=1000) as blocker:
            prog.view.get_action('flip_lr').trigger()
        for ind, data_to_show in enumerate(blocker.args[0]['data']):
            assert np.any(data_to_show == approx(np.fliplr(data['data'][ind])))

        with qtbot.waitSignal(prog._data_to_show_signal,
                              timeout=1000) as blocker:
            prog.view.get_action('flip_lr').trigger()
        for ind, data_to_show in enumerate(blocker.args[0]['data']):
            assert np.any(data_to_show == approx(data['data'][ind]))
示例#25
0
    def test_setpos_crosshair(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)
        QtWidgets.QApplication.processEvents()
        XCROSS = 24
        YCROSS = 75

        with qtbot.waitSignal(prog.view.get_crosshair_signal(),
                              timeout=1000) as blocker:
            prog.view.get_action('crosshair').trigger()

        with qtbot.waitSignal(prog.crosshair_dragged, timeout=1000) as blocker:
            prog.view.crosshair.set_crosshair_position(XCROSS, YCROSS)

        assert blocker.args[0] == approx(XCROSS)
        assert blocker.args[1] == approx(YCROSS)
示例#26
0
    def test_add_roi(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)

        index_roi, roi, roi_type = create_one_roi(prog,
                                                  qtbot,
                                                  roitype='RectROI')
        assert roi_type == 'RectROI'
        assert index_roi == 0
        assert len(prog.view.lineout_plotter.get_roi_curves_triplet()) == 1

        index_roi, roi, roi_type = create_one_roi(prog,
                                                  qtbot,
                                                  roitype='EllipseROI')
        assert roi_type == 'EllipseROI'
        assert index_roi == 1
        assert len(prog.view.lineout_plotter.get_roi_curves_triplet()) == 2
    def grab_data(self, Naverage=1, **kwargs):
        """

        """
        coeff = self.settings.child(('width_coeff')).value()
        fun_type = self.settings.child(('fun_type')).value()
        if 'positions' in kwargs:
            positions = kwargs['positions']

            if len(positions) == 2:
                if fun_type == 'Gaussians':
                    data = random_hypergaussians2D_signal(positions, coeff)
                elif fun_type == 'CNRS':
                    ind_x = max((0, int(min([positions[0], data_CNRS.shape[1]-1]))))
                    ind_y = max((0, int(min([positions[1], data_CNRS.shape[0] - 1]))))
                    ind_y = data_CNRS.shape[0] - 1 - ind_y
                    data = data_CNRS[ind_y, ind_x]
                else:
                    data = diverging2D_signal(positions, coeff)
            else:
                if fun_type == 'Gaussians':
                    data = random_hypergaussians1D(positions, coeff)[0]
                elif fun_type == 'CNRS':
                    data = data_CNRS[270, int(positions[0])]
                else:
                    data = diverging1D(positions[0], coeff)
        else:
            if fun_type == 'Gaussians':
                data = random_hypergaussians1D(np.roll(x_axis1D, -self.ind_data)[0], coeff)
            else:
                data = diverging1D(np.roll(x_axis1D, -self.ind_data)[0], coeff)

        data = np.array([data + self.settings['noise'] * np.random.rand()])

        self.data_grabed_signal.emit([utils.DataFromPlugins(name='MockAdaptive', data=[data],
                                                            dim='Data0D', )])
        self.ind_data += 1
示例#28
0
    def test_crosshair_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()
        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green])
        prog.show_data(data)
        assert not prog.view.is_action_visible('position')

        prog.view.get_action('crosshair').trigger()
        QtWidgets.QApplication.processEvents()

        assert prog.view.is_action_checked('crosshair')
        assert prog.view.is_action_visible('position')
        assert prog.view.crosshair.isVisible()
        for image_key in v2d.IMAGE_TYPES:
            for curve_key, curve in prog.view.lineout_plotter.get_crosshair_curves_triplet(
            )[image_key].items():
                assert curve.isVisible()
                assert curve == prog.view.lineout_plotter.get_crosshair_curve_triplet(
                    image_key)[curve_key]

        prog.view.get_action('crosshair').trigger()
        QtWidgets.QApplication.processEvents()

        prog.view.get_action('roi').trigger(
        )  # will keep lineout_widgets visible so we can check
        # if crosshair lineouts are still visible
        QtWidgets.QApplication.processEvents()

        assert not prog.view.is_action_checked('crosshair')
        assert not prog.view.is_action_visible('position')
        assert not prog.view.crosshair.isVisible()
        for image_key in v2d.IMAGE_TYPES:
            for curve in prog.view.lineout_plotter.get_crosshair_curves_triplet(
            )[image_key].values():
                assert not curve.isVisible()
示例#29
0
    def test_histo_autolevel_action(self, init_prog):
        prog, qtbot = init_prog
        data_red, data_green, data_blue, data_spread = init_data()

        data = utils.DataFromPlugins(distribution='uniform',
                                     data=[data_red, data_green, data_blue])
        prog.show_data(data)
        prog.view.get_action('histo').trigger()

        assert prog.view.histogrammer.get_histogram(
            'red').getLevels() == approx((0, 1.))
        assert prog.view.histogrammer.get_histogram(
            'green').getLevels() == approx((0, 1.))
        assert prog.view.histogrammer.get_histogram(
            'blue').getLevels() == approx((0, 1.))

        prog.view.get_action('autolevels').trigger()

        assert prog.view.histogrammer.get_histogram(
            'red').getLevels() == approx((0, 2.9392557954529277))
        assert prog.view.histogrammer.get_histogram(
            'green').getLevels() == approx((0., 24.0))
        assert prog.view.histogrammer.get_histogram('blue').getLevels() ==\
               approx((5.693320370703248e-09, 9.83017824174412))