Example #1
0
    def test_that_divide_uses_settings_from_workspace(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024, height=8.0,
                                                   width=8.0, thickness=1.0, shape=SampleShape.Disc)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_state = data_builder.build()

        scale_builder = get_scale_builder(data_state, file_information)
        scale_state = scale_builder.build()

        test_director = TestDirector()
        test_director.set_states(scale_state=scale_state, data_state=data_state)
        state = test_director.construct()

        divide_factory = DivideByVolumeFactory()
        divider = divide_factory.create_divide_by_volume(state)

        # Apply the settings from the SANS2D00022024 workspace
        width = 8.
        height = 8.
        thickness = 1.
        shape = 3

        workspace = ScaleHelperTest._get_workspace(width, height, thickness, shape)

        # Act
        output_workspace = divider.divide_by_volume(workspace, scale_state)

        # Assert
        expected_volume = thickness * math.pi * math.pow(width, 2) / 4.0
        expected_value = 0.3 / expected_volume
        data_y = output_workspace.dataY(0)
        self.assertEqual(data_y[0], expected_value)
Example #2
0
    def test_that_state_for_larmor_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LARMOR, run_number=2260)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LARMOR00002260")
        data_info = data_builder.build()

        # Act
        builder = get_move_builder(data_info)
        self.assertTrue(builder)
        value = 324.2
        builder.set_LAB_x_translation_correction(value)

        # Assert
        state = builder.build()
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.LAB)].x_translation_correction == value)
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.LAB)].detector_name == "DetectorBench")
        self.assertTrue(
            DetectorType.to_string(DetectorType.HAB) not in state.detectors)
        self.assertTrue(state.monitor_names[str(5)] == "monitor5")
        self.assertTrue(len(state.monitor_names) == 5)
Example #3
0
    def test_that_slice_event_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_scale_builder(data_info, file_information)
        self.assertTrue(builder)

        builder.set_scale(1.0)
        builder.set_shape(SampleShape.FLAT_PLATE)
        builder.set_thickness(3.6)
        builder.set_width(3.7)
        builder.set_height(5.8)

        # Assert
        state = builder.build()
        self.assertEqual(state.shape, SampleShape.FLAT_PLATE)
        self.assertEqual(state.scale, 1.0)
        self.assertEqual(state.thickness, 3.6)
        self.assertEqual(state.width, 3.7)
        self.assertEqual(state.height, 5.8)
Example #4
0
    def _get_sample_state(q_min=1., q_max=2., q_step=0.1, q_step_type=RangeStepType.LIN,
                          q_xy_max=None, q_xy_step=None, q_xy_step_type=None,
                          use_gravity=False, dim=ReductionDimensionality.ONE_DIM):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_state = data_builder.build()

        convert_to_q_builder = get_convert_to_q_builder(data_state)
        convert_to_q_builder.set_reduction_dimensionality(dim)
        convert_to_q_builder.set_use_gravity(use_gravity)
        convert_to_q_builder.set_radius_cutoff(0.002)
        convert_to_q_builder.set_wavelength_cutoff(2.)
        convert_to_q_builder.set_q_min(q_min)
        convert_to_q_builder.set_q_max(q_max)
        prefix = 1. if q_step_type is RangeStepType.LIN else -1.
        q_step *= prefix
        rebin_string = str(q_min) + "," + str(q_step) + "," + str(q_max)
        convert_to_q_builder.set_q_1d_rebin_string(rebin_string)
        if q_xy_max is not None:
            convert_to_q_builder.set_q_xy_max(q_xy_max)
        if q_xy_step is not None:
            convert_to_q_builder.set_q_xy_step(q_xy_step)
        if q_xy_step_type is not None:
            convert_to_q_builder.set_q_xy_step_type(q_xy_step_type)

        convert_to_q_state = convert_to_q_builder.build()

        test_director = TestDirector()
        test_director.set_states(convert_to_q_state=convert_to_q_state, data_state=data_state)

        return test_director.construct()
Example #5
0
    def test_that_state_for_sans2d_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.SANS2D, run_number=22048)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("SANS2D00022048")
        data_info = data_builder.build()

        # Act
        builder = get_move_builder(data_info)
        self.assertTrue(builder)
        value = 324.2
        builder.set_HAB_x_translation_correction(value)

        # Assert
        state = builder.build()
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.HAB)].x_translation_correction == value)
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.HAB)].detector_name_short == "front")
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.LAB)].detector_name == "rear-detector")
        self.assertTrue(state.monitor_names[str(4)] == "monitor4")
        self.assertTrue(len(state.monitor_names) == 4)
    def test_that_wavelength_and_pixel_adjustment_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_wavelength_and_pixel_adjustment_builder(data_info)
        self.assertTrue(builder)

        builder.set_HAB_pixel_adjustment_file("test")
        builder.set_HAB_wavelength_adjustment_file("test2")
        builder.set_wavelength_low([1.5])
        builder.set_wavelength_high([2.7])
        builder.set_wavelength_step(0.5)
        builder.set_wavelength_step_type(RangeStepType.LIN)

        state = builder.build()

        # Assert
        self.assertTrue(state.adjustment_files[
            DetectorType.HAB.value].pixel_adjustment_file == "test")
        self.assertTrue(state.adjustment_files[
            DetectorType.HAB.value].wavelength_adjustment_file == "test2")
        self.assertEqual(state.wavelength_low, [1.5])
        self.assertEqual(state.wavelength_high, [2.7])
        self.assertEqual(state.wavelength_step, 0.5)
        self.assertEqual(state.wavelength_step_type, RangeStepType.LIN)
Example #7
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(self):
        # Arrange
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information,
                                        user_file="USER_SANS2D_154E_2p4_4m_M3_Xpress_8mm_SampleChanger_FRONT.txt")
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state, file_information)
        user_file_path = create_user_file(sample_user_file)

        director.set_user_file(user_file_path)
        state = director.construct()

        # Assert
        self._assert_data(state)
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Example #8
0
    def test_that_state_for_loq_can_be_built(self):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_builder.set_sample_scatter_period(3)
        data_info = data_builder.build()

        # Act
        builder = get_move_builder(data_info)
        self.assertTrue(builder)
        value = 324.2
        builder.set_center_position(value)
        builder.set_HAB_x_translation_correction(value)
        builder.set_LAB_sample_centre_pos1(value)

        # Assert
        state = builder.build()
        self.assertEqual(state.center_position, value)
        self.assertEqual(
            state.detectors[DetectorType.HAB.value].x_translation_correction,
            value)
        self.assertEqual(
            state.detectors[DetectorType.LAB.value].sample_centre_pos1, value)
Example #9
0
    def test_that_reduction_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_save_builder(data_info)
        self.assertTrue(builder)

        user_specified_output_name = "test_file_name"
        zero_free_correction = True
        file_format = [SaveType.Nexus, SaveType.CanSAS]

        builder.set_user_specified_output_name(user_specified_output_name)
        builder.set_zero_free_correction(zero_free_correction)
        builder.set_file_format(file_format)
        state = builder.build()

        # Assert
        self.assertTrue(
            state.user_specified_output_name == user_specified_output_name)
        self.assertTrue(state.zero_free_correction == zero_free_correction)
        self.assertTrue(state.file_format == file_format)
Example #10
0
    def test_stat_can_be_created_from_valid_user_file_and_later_on_reset(self):
        # Arrange
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state, file_information)
        user_file_path = create_user_file(sample_user_file)
        director.set_user_file(user_file_path)

        # Set additional items
        director.set_mask_builder_radius_min(0.001298)
        director.set_mask_builder_radius_max(0.003298)
        director.set_scale_builder_width(1.)
        director.set_scale_builder_height(1.5)
        director.set_scale_builder_thickness(12.)
        director.set_scale_builder_shape(SampleShape.FlatPlate)

        # Act
        state = director.construct()

        # Assert
        self.assertEqual(state.mask.radius_min,  0.001298)
        self.assertEqual(state.mask.radius_max,  0.003298)
        self.assertEqual(state.scale.width,  1.)
        self.assertEqual(state.scale.height,  1.5)
        self.assertEqual(state.scale.thickness,  12.)
        self.assertEqual(state.scale.shape, SampleShape.FlatPlate)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Example #11
0
    def test_that_state_for_loq_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_builder.set_sample_scatter_period(3)
        data_info = data_builder.build()

        # Act
        builder = get_move_builder(data_info)
        self.assertTrue(builder)
        value = 324.2
        builder.set_center_position(value)
        builder.set_HAB_x_translation_correction(value)
        builder.set_LAB_sample_centre_pos1(value)

        # Assert
        state = builder.build()
        self.assertTrue(state.center_position == value)
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.HAB)].x_translation_correction == value)
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.HAB)].detector_name_short == "HAB")
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.LAB)].detector_name == "main-detector-bank")
        self.assertTrue(state.monitor_names[str(2)] == "monitor2")
        self.assertTrue(len(state.monitor_names) == 2)
        self.assertTrue(state.detectors[DetectorType.to_string(
            DetectorType.LAB)].sample_centre_pos1 == value)
Example #12
0
    def test_that_mask_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_builder.set_sample_scatter_period(3)
        data_info = data_builder.build()

        # Act
        builder = get_mask_builder(data_info)
        self.assertTrue(builder)

        start_time = [0.1, 1.3]
        end_time = [0.2, 1.6]
        builder.set_bin_mask_general_start(start_time)
        builder.set_bin_mask_general_stop(end_time)
        builder.set_LAB_single_vertical_strip_mask([1, 2, 3])

        # Assert
        state = builder.build()
        self.assertTrue(len(state.bin_mask_general_start) == 2)
        self.assertTrue(state.bin_mask_general_start[0] == start_time[0])
        self.assertTrue(state.bin_mask_general_start[1] == start_time[1])

        self.assertTrue(len(state.bin_mask_general_stop) == 2)
        self.assertTrue(state.bin_mask_general_stop[0] == end_time[0])
        self.assertTrue(state.bin_mask_general_stop[1] == end_time[1])

        strip_mask = state.detectors[DetectorType.to_string(
            DetectorType.LAB)].single_vertical_strip_mask
        self.assertTrue(len(strip_mask) == 3)
        self.assertTrue(strip_mask[2] == 3)
Example #13
0
    def test_that_divide_uses_settings_from_state_if_they_are_set(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_state = data_builder.build()

        scale_builder = get_scale_builder(data_state, file_information)
        width = 10.
        height = 5.
        thickness = 2.
        scale_builder.set_shape(SampleShape.DISC)
        scale_builder.set_thickness(thickness)
        scale_builder.set_width(width)
        scale_builder.set_height(height)
        scale_state = scale_builder.build()

        test_director = TestDirector()
        test_director.set_states(scale_state=scale_state,
                                 data_state=data_state)
        state = test_director.construct()

        workspace = self._get_workspace()

        output_workspace = _divide_by_sample_volume(workspace=workspace,
                                                    scale_info=state.scale)

        expected_volume = thickness * math.pi * math.pow(width, 2) / 4.0
        expected_value = 0.3 / expected_volume
        data_y = output_workspace.dataY(0)
        self.assertEqual(data_y[0], expected_value)
Example #14
0
    def test_that_correct_scale_strategy_is_selected_for_loq_2(self):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_state = data_builder.build()

        scale_builder = get_scale_builder(data_state, file_information)
        scale_builder.set_scale(2.4)
        scale_state = scale_builder.build()

        test_director = TestDirector()
        test_director.set_states(scale_state=scale_state,
                                 data_state=data_state)
        state_loq = test_director.construct()

        workspace = self._get_workspace()

        output_workspace = _multiply_by_abs_scale(
            instrument=SANSInstrument.LOQ,
            workspace=workspace,
            state_scale=state_loq.scale)

        # Assert
        expected_value = 0.3 * 2.4 / math.pi * 100.
        data_y = output_workspace.dataY(0)
        self.assertEqual(data_y[0], expected_value)
Example #15
0
    def test_that_slice_event_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_wavelength_builder(data_info)
        self.assertTrue(builder)

        builder.set_wavelength_low([10.0])
        builder.set_wavelength_high([20.0])
        builder.set_wavelength_step(3.0)
        builder.set_wavelength_step_type(RangeStepType.LIN)
        builder.set_rebin_type(RebinType.REBIN)

        # Assert
        state = builder.build()

        self.assertEqual(state.wavelength_low, [10.0])
        self.assertEqual(state.wavelength_high, [20.0])
        self.assertEqual(state.wavelength_step_type, RangeStepType.LIN)
        self.assertEqual(state.rebin_type, RebinType.REBIN)
Example #16
0
    def test_that_slice_event_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_slice_event_builder(data_info)
        self.assertTrue(builder)

        start_time = [0.1, 1.3]
        end_time = [0.2, 1.6]
        builder.set_start_time(start_time)
        builder.set_end_time(end_time)

        # Assert
        state = builder.build()
        self.assertEqual(len(state.start_time), 2)
        self.assertEqual(state.start_time[0], start_time[0])
        self.assertEqual(state.start_time[1], start_time[1])

        self.assertEqual(len(state.end_time), 2)
        self.assertEqual(state.end_time[0], end_time[0])
        self.assertEqual(state.end_time[1], end_time[1])
Example #17
0
    def test_that_reduction_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_convert_to_q_builder(data_info)
        self.assertTrue(builder)

        builder.set_q_min(12.0)
        builder.set_q_max(17.0)
        builder.set_q_1d_rebin_string("12.0,-1.2,17.0")
        builder.set_reduction_dimensionality(ReductionDimensionality.ONE_DIM)

        state = builder.build()

        # Assert
        self.assertEqual(state.q_min, 12.0)
        self.assertEqual(state.q_max, 17.0)
        self.assertEqual(state.q_1d_rebin_string, "12.0,-1.2,17.0")
        self.assertEqual(state.reduction_dimensionality,
                         ReductionDimensionality.ONE_DIM)
Example #18
0
    def test_that_reduction_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_adjustment_builder(data_info)
        self.assertTrue(builder)

        builder.set_calculate_transmission(MockStateCalculateTransmission())
        builder.set_normalize_to_monitor(MockStateNormalizeToMonitor())
        builder.set_wavelength_and_pixel_adjustment(MockStateWavelengthAndPixelAdjustment())
        builder.set_wide_angle_correction(False)
        state = builder.build()

        # # Assert
        self.assertTrue(not state.wide_angle_correction)
        try:
            state.validate()
            is_valid = True
        except ValueError:
            is_valid = False
        self.assertTrue(is_valid)
Example #19
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(self):
        # Arrange
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        user_file_path = create_user_file(sample_user_file)

        parser = UserFileReaderAdapter(user_file_name=user_file_path, data_info=data_state)
        state = parser.get_all_states()

        # Assert
        self._assert_data(state)
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Example #20
0
 def _get_mock_data_info():
     # TODO I really really dislike having to do this in a test, but
     # TODO de-coupling StateData is required to avoid it
     file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
     data_builder = get_data_builder(SANSFacility.ISIS, file_information)
     data_builder.set_sample_scatter("SANS2D00022024")
     data_builder.set_sample_scatter_period(3)
     return data_builder.build()
    def test_that_correct_values_are_set_for_LOQ(self):
        file_information = SANSFileInformationMock(
            run_number=74044, instrument=SANSInstrument.LOQ)

        self.beam_centre_model.reset_to_defaults_for_instrument(
            file_information)

        self.assertEqual(self.beam_centre_model.r_max, 200)
    def test_that_correct_values_are_set_for_LARMOR(self):
        file_information = SANSFileInformationMock(
            run_number=2260, instrument=SANSInstrument.LARMOR)

        self.beam_centre_model.reset_to_defaults_for_instrument(
            file_information)

        self.assertEqual(self.beam_centre_model.scale_1, 1.0)
Example #23
0
    def test_that_correct_values_are_set_for_LARMOR(self):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(run_number=2260, instrument=SANSInstrument.LARMOR)

        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LARMOR00002260")
        data_state = data_builder.build()

        self.beam_centre_model.reset_to_defaults_for_instrument(data_state)

        self.assertEqual(self.beam_centre_model.scale_1, 1.0)
Example #24
0
def get_example_state():
    ws_name_sample = "SANS2D00022024"
    file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
    data_builder = get_data_builder(SANSFacility.ISIS, file_information)
    data_builder.set_sample_scatter(ws_name_sample)
    data = data_builder.build()

    # Get the sample state
    test_director = TestDirector()
    test_director.set_states(data_state=data)
    return test_director.construct()
Example #25
0
    def test_that_correct_values_are_set_for_LOQ(self):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(run_number=74044, instrument=SANSInstrument.LOQ)

        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_state = data_builder.build()

        self.beam_centre_model.reset_to_defaults_for_instrument(data_state)

        self.assertEqual(self.beam_centre_model.r_max, 200)
Example #26
0
    def create_state(self, row, file_lookup=True, instrument=SANSInstrument.SANS2D,
                     user_file=""):
        # 1. Get the data settings, such as sample_scatter, etc... and create the data state.
        table_index_model = self._table_model.get_table_entry(row)
        if file_lookup:
            file_information = table_index_model.file_information
        else:
            file_information = SANSFileInformationMock(instrument=instrument, facility=self._facility)

        data_builder = get_data_builder(self._facility, file_information, user_file)

        self._set_data_entry(data_builder.set_sample_scatter, table_index_model.sample_scatter)
        self._set_data_period_entry(data_builder.set_sample_scatter_period, table_index_model.sample_scatter_period)
        self._set_data_entry(data_builder.set_sample_transmission, table_index_model.sample_transmission)
        self._set_data_period_entry(data_builder.set_sample_transmission_period, table_index_model.sample_transmission_period)  # noqa
        self._set_data_entry(data_builder.set_sample_direct, table_index_model.sample_direct)
        self._set_data_period_entry(data_builder.set_sample_direct_period, table_index_model.sample_direct_period)
        self._set_data_entry(data_builder.set_can_scatter, table_index_model.can_scatter)
        self._set_data_period_entry(data_builder.set_can_scatter_period, table_index_model.can_scatter_period)
        self._set_data_entry(data_builder.set_can_transmission, table_index_model.can_transmission)
        self._set_data_period_entry(data_builder.set_can_transmission_period, table_index_model.can_transmission_period)
        self._set_data_entry(data_builder.set_can_direct, table_index_model.can_direct)
        self._set_data_period_entry(data_builder.set_can_direct_period, table_index_model.can_direct_period)

        data = data_builder.build()

        # 2. Add elements from the options column
        state_gui_model = copy.deepcopy(self._state_gui_model)
        options_column_model = table_index_model.options_column_model
        self._apply_column_options_to_state(options_column_model, state_gui_model)

        # 3. Add other columns
        output_name = table_index_model.output_name
        if output_name:
            state_gui_model.output_name = output_name

        if table_index_model.sample_thickness:
            state_gui_model.sample_thickness = float(table_index_model.sample_thickness)
        if table_index_model.sample_height:
            state_gui_model.sample_height = float(table_index_model.sample_height)
        if table_index_model.sample_width:
            state_gui_model.sample_width = float(table_index_model.sample_width)
        if table_index_model.sample_shape:
            state_gui_model.sample_shape = table_index_model.sample_shape

        # 4. Create the rest of the state based on the builder.
        user_file_state_director = StateDirectorISIS(data, file_information)
        settings = copy.deepcopy(state_gui_model.settings)
        user_file_state_director.add_state_settings(settings)

        return user_file_state_director.construct()
Example #27
0
    def test_that_reduction_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_normalize_to_monitor_builder(data_info)
        self.assertTrue(builder)

        builder.set_prompt_peak_correction_min(12.0)
        builder.set_prompt_peak_correction_max(17.0)
        builder.set_rebin_type(RebinType.Rebin)
        builder.set_wavelength_low([1.5])
        builder.set_wavelength_high([2.7])
        builder.set_wavelength_step(0.5)
        builder.set_wavelength_step_type(RangeStepType.Lin)
        builder.set_incident_monitor(1)
        builder.set_background_TOF_general_start(1.4)
        builder.set_background_TOF_general_stop(34.4)
        builder.set_background_TOF_monitor_start({"1": 123, "2": 123})
        builder.set_background_TOF_monitor_stop({"1": 234, "2": 2323})

        state = builder.build()

        # Assert
        self.assertTrue(state.prompt_peak_correction_min == 12.0)
        self.assertTrue(state.prompt_peak_correction_max == 17.0)
        self.assertTrue(state.rebin_type is RebinType.Rebin)
        self.assertTrue(state.wavelength_low == [1.5])
        self.assertTrue(state.wavelength_high == [2.7])
        self.assertTrue(state.wavelength_step == 0.5)
        self.assertTrue(state.wavelength_step_type is RangeStepType.Lin)
        self.assertTrue(state.background_TOF_general_start == 1.4)
        self.assertTrue(state.background_TOF_general_stop == 34.4)
        self.assertTrue(
            len(
                set(state.background_TOF_monitor_start.items()) & set({
                    "1": 123,
                    "2": 123
                }.items())) == 2)
        self.assertTrue(
            len(
                set(state.background_TOF_monitor_stop.items()) & set({
                    "1": 234,
                    "2": 2323
                }.items())) == 2)
        self.assertTrue(state.incident_monitor == 1)
Example #28
0
    def test_that_reduction_state_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.LOQ, run_number=74044)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()

        # Act
        builder = get_normalize_to_monitor_builder(data_info)
        self.assertTrue(builder)

        builder.set_prompt_peak_correction_min(12.0)
        builder.set_prompt_peak_correction_max(17.0)
        builder.set_rebin_type(RebinType.REBIN)
        builder.state.wavelength_interval.wavelength_full_range = (1.5, 2.7)
        builder.state.wavelength_interval.wavelength_step = 0.5
        builder.set_wavelength_step_type(RangeStepType.LIN)
        builder.set_incident_monitor(1)
        builder.set_background_TOF_general_start(1.4)
        builder.set_background_TOF_general_stop(34.4)
        builder.set_background_TOF_monitor_start({"1": 123, "2": 123})
        builder.set_background_TOF_monitor_stop({"1": 234, "2": 2323})

        state = builder.build()

        # Assert
        self.assertEqual(state.prompt_peak_correction_min, 12.0)
        self.assertEqual(state.prompt_peak_correction_max, 17.0)
        self.assertEqual(state.rebin_type, RebinType.REBIN)
        self.assertEqual(state.wavelength_interval.wavelength_full_range,
                         (1.5, 2.7))
        self.assertEqual(state.wavelength_interval.wavelength_step, 0.5)
        self.assertEqual(state.wavelength_step_type, RangeStepType.LIN)
        self.assertEqual(state.background_TOF_general_start, 1.4)
        self.assertEqual(state.background_TOF_general_stop, 34.4)
        self.assertEqual(
            len(
                set(state.background_TOF_monitor_start.items()) & set({
                    "1": 123,
                    "2": 123
                }.items())), 2)
        self.assertEqual(
            len(
                set(state.background_TOF_monitor_stop.items()) & set({
                    "1": 234,
                    "2": 2323
                }.items())), 2)
        self.assertEqual(state.incident_monitor, 1)
    def get_state_obj(monitor_4_dist, monitor_5_dist):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(instrument=SANSInstrument.ZOOM, run_number=6113)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("ZOOM00006113")
        data_builder.set_sample_scatter_period(3)
        data_info = data_builder.build()

        state = AllStates()
        state.move = get_move_builder(data_info).build()
        state.instrument_info = StateInstrumentInfo.build_from_data_info(data_info)
        state.move.monitor_4_offset = monitor_4_dist
        state.move.monitor_5_offset = monitor_5_dist
        return state
Example #30
0
    def get_state_move_obj(monitor_4_dist):
        facility = SANSFacility.ISIS
        file_information = SANSFileInformationMock(
            instrument=SANSInstrument.SANS2D, run_number=22048)
        data_builder = get_data_builder(facility, file_information)
        data_builder.set_sample_scatter("SANS2D22048")
        data_builder.set_sample_scatter_period(3)
        data_info = data_builder.build()

        state_builder = get_move_builder(data_info)

        state = state_builder.build()
        state.monitor_4_offset = monitor_4_dist
        return state