예제 #1
0
    def test_that_can_set_and_reset_merged_settings(self):
        state_gui_model = StateGuiModel({DetectorId.shift_fit: [det_fit_range(start=1., stop=2., use_fit=True)],
                                         DetectorId.rescale_fit: [det_fit_range(start=1.4, stop=7., use_fit=False)],
                                         DetectorId.rescale: [12.],
                                         DetectorId.shift: [234.]})
        self.assertTrue(state_gui_model.merge_scale == 12.)
        self.assertTrue(state_gui_model.merge_shift == 234.)
        self.assertFalse(state_gui_model.merge_scale_fit)
        self.assertTrue(state_gui_model.merge_shift_fit)
        self.assertTrue(state_gui_model.merge_q_range_start == 1.)
        self.assertTrue(state_gui_model.merge_q_range_stop == 7.)

        state_gui_model.merge_scale = 12.3
        state_gui_model.merge_shift = 3.
        state_gui_model.merge_scale_fit = True
        state_gui_model.merge_shift_fit = False
        state_gui_model.merge_q_range_start = 2.
        state_gui_model.merge_q_range_stop = 8.

        self.assertTrue(state_gui_model.merge_scale == 12.3)
        self.assertTrue(state_gui_model.merge_shift == 3.)
        self.assertTrue(state_gui_model.merge_scale_fit)
        self.assertFalse(state_gui_model.merge_shift_fit)
        self.assertTrue(state_gui_model.merge_q_range_start == 2.)
        self.assertTrue(state_gui_model.merge_q_range_stop == 8.)
예제 #2
0
    def test_that_can_set_and_reset_merged_settings(self):
        state_gui_model = StateGuiModel({
            DetectorId.shift_fit:
            [det_fit_range(start=1., stop=2., use_fit=True)],
            DetectorId.rescale_fit:
            [det_fit_range(start=1.4, stop=7., use_fit=False)],
            DetectorId.rescale: [12.],
            DetectorId.shift: [234.]
        })
        self.assertTrue(state_gui_model.merge_scale == 12.)
        self.assertTrue(state_gui_model.merge_shift == 234.)
        self.assertFalse(state_gui_model.merge_scale_fit)
        self.assertTrue(state_gui_model.merge_shift_fit)
        self.assertTrue(state_gui_model.merge_q_range_start == 1.)
        self.assertTrue(state_gui_model.merge_q_range_stop == 7.)

        state_gui_model.merge_scale = 12.3
        state_gui_model.merge_shift = 3.
        state_gui_model.merge_scale_fit = True
        state_gui_model.merge_shift_fit = False
        state_gui_model.merge_q_range_start = 2.
        state_gui_model.merge_q_range_stop = 8.

        self.assertTrue(state_gui_model.merge_scale == 12.3)
        self.assertTrue(state_gui_model.merge_shift == 3.)
        self.assertTrue(state_gui_model.merge_scale_fit)
        self.assertFalse(state_gui_model.merge_shift_fit)
        self.assertTrue(state_gui_model.merge_q_range_start == 2.)
        self.assertTrue(state_gui_model.merge_q_range_stop == 8.)
예제 #3
0
    def _update_merged_fit(self,
                           element_id,
                           use_fit=None,
                           use_q_range=None,
                           q_start=None,
                           q_stop=None):
        # If the setting is not in there, then add, else all is good
        if element_id in self._user_file_items:
            settings = self._user_file_items[element_id]
        else:
            settings = [det_fit_range(start=None, stop=None, use_fit=False)]

        new_settings = []
        for setting in settings:
            new_use_fit = use_fit if use_fit is not None else setting.use_fit
            new_q_start = q_start if q_start is not None else setting.start
            new_q_stop = q_stop if q_stop is not None else setting.stop

            # If we don't want to use a custom q range, then we need to set the start and stop values to None
            if use_q_range is not None and use_q_range is False:
                new_q_start = None
                new_q_stop = None

            new_settings.append(
                det_fit_range(start=new_q_start,
                              stop=new_q_stop,
                              use_fit=new_use_fit))
        self._user_file_items.update({element_id: new_settings})
예제 #4
0
    def _process_front_detector_rescale(self, command):
        scale = command.values[0]
        shift = command.values[1]
        fit_scale = command.values[2]
        fit_shift = command.values[3]
        q_min = command.values[4]
        q_max = command.values[5]

        # Set the scale and the shift
        new_state_entries = {
            DetectorId.RESCALE: scale,
            DetectorId.SHIFT: shift
        }

        # Set the fit for the scale
        new_state_entries.update({
            DetectorId.RESCALE_FIT:
            det_fit_range(start=q_min, stop=q_max, use_fit=fit_scale)
        })

        # Set the fit for shift
        new_state_entries.update({
            DetectorId.SHIFT_FIT:
            det_fit_range(start=q_min, stop=q_max, use_fit=fit_shift)
        })

        self.add_to_processed_state_settings(new_state_entries)
예제 #5
0
    def test_that_can_set_and_reset_merged_settings(self):
        state_gui_model = StateGuiModel({
            DetectorId.SHIFT_FIT:
            [det_fit_range(start=1., stop=2., use_fit=True)],
            DetectorId.RESCALE_FIT:
            [det_fit_range(start=1.4, stop=7., use_fit=False)],
            DetectorId.RESCALE: [12.],
            DetectorId.SHIFT: [234.]
        })
        self.assertEqual(state_gui_model.merge_scale, 12.)
        self.assertEqual(state_gui_model.merge_shift, 234.)
        self.assertFalse(state_gui_model.merge_scale_fit)
        self.assertTrue(state_gui_model.merge_shift_fit)
        self.assertEqual(state_gui_model.merge_q_range_start, 1.)
        self.assertEqual(state_gui_model.merge_q_range_stop, 7.)

        state_gui_model.merge_scale = 12.3
        state_gui_model.merge_shift = 3.
        state_gui_model.merge_scale_fit = True
        state_gui_model.merge_shift_fit = False
        state_gui_model.merge_q_range_start = 2.
        state_gui_model.merge_q_range_stop = 8.

        self.assertEqual(state_gui_model.merge_scale, 12.3)
        self.assertEqual(state_gui_model.merge_shift, 3.)
        self.assertTrue(state_gui_model.merge_scale_fit)
        self.assertFalse(state_gui_model.merge_shift_fit)
        self.assertEqual(state_gui_model.merge_q_range_start, 2.)
        self.assertEqual(state_gui_model.merge_q_range_stop, 8.)
예제 #6
0
 def test_that_merge_range_set_correctly(self):
     state_gui_model = StateGuiModel({
         DetectorId.merge_range:
         [det_fit_range(use_fit=True, start=0.13, stop=0.15)]
     })
     self.assertEqual(state_gui_model.merge_min, 0.13)
     self.assertEqual(state_gui_model.merge_max, 0.15)
     self.assertTrue(state_gui_model.merge_mask)
    def _process_front_detector_rescale(self, command):
        scale = command.values[0]
        shift = command.values[1]
        fit_scale = command.values[2]
        fit_shift = command.values[3]
        q_min = command.values[4]
        q_max = command.values[5]

        # Set the scale and the shift
        new_state_entries = {DetectorId.rescale: scale, DetectorId.shift: shift}

        # Set the fit for the scale
        new_state_entries.update({DetectorId.rescale_fit: det_fit_range(start=q_min, stop=q_max, use_fit=fit_scale)})

        # Set the fit for shift
        new_state_entries.update({DetectorId.shift_fit: det_fit_range(start=q_min, stop=q_max, use_fit=fit_shift)})

        self.add_to_processed_state_settings(new_state_entries)
예제 #8
0
    def _update_merged_fit(self, element_id, use_fit=None, use_q_range=None, q_start=None, q_stop=None):
        # If the setting is not in there, then add, else all is good
        if element_id in self._user_file_items:
            settings = self._user_file_items[element_id]
        else:
            settings = [det_fit_range(start=None, stop=None, use_fit=False)]

        new_settings = []
        for setting in settings:
            new_use_fit = use_fit if use_fit is not None else setting.use_fit
            new_q_start = q_start if q_start is not None else setting.start
            new_q_stop = q_stop if q_stop is not None else setting.stop

            # If we don't want to use a custom q range, then we need to set the start and stop values to None
            if use_q_range is not None and use_q_range is False:
                new_q_start = None
                new_q_stop = None

            new_settings.append(det_fit_range(start=new_q_start, stop=new_q_stop, use_fit=new_use_fit))
        self._user_file_items.update({element_id: new_settings})
예제 #9
0
 def test_that_merge_range_set_correctly(self):
     state_gui_model = StateGuiModel({DetectorId.merge_range: [det_fit_range(use_fit=True, start=0.13, stop=0.15)]})
     self.assertEqual(state_gui_model.merge_min, 0.13)
     self.assertEqual(state_gui_model.merge_max, 0.15)
     self.assertTrue(state_gui_model.merge_mask)