示例#1
0
    def test_that_state_for_loq_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        data_builder = get_data_builder(facility)
        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)
示例#2
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)
示例#3
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)
示例#4
0
    def _get_simple_state(sample_scatter,
                          lab_x_translation_correction=None,
                          lab_z_translation_correction=None):
        # Set the data
        file_information_factory = SANSFileInformationFactory()
        file_information = file_information_factory.create_sans_file_information(
            sample_scatter)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter(sample_scatter)
        data_info = data_builder.build()

        # Set the move parameters
        builder = get_move_builder(data_info)
        if lab_x_translation_correction is not None:
            builder.set_LAB_x_translation_correction(
                lab_x_translation_correction)
        if lab_z_translation_correction is not None:
            builder.set_LAB_z_translation_correction(
                lab_z_translation_correction)
        move_info = builder.build()

        # Get the sample state
        test_director = TestDirector()
        test_director.set_states(data_state=data_info, move_state=move_info)
        return test_director.construct()
示例#5
0
    def test_that_state_for_loq_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        data_builder = get_data_builder(facility)
        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)
示例#6
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.assertEqual(state.center_position, value)
        self.assertEqual(
            state.detectors[DetectorType.to_string(
                DetectorType.HAB)].x_translation_correction, value)
        self.assertEqual(
            state.detectors[DetectorType.to_string(
                DetectorType.HAB)].detector_name_short, "HAB")
        self.assertEqual(
            state.detectors[DetectorType.to_string(
                DetectorType.LAB)].detector_name, "main-detector-bank")
        self.assertEqual(state.monitor_names[str(2)], "monitor2")
        self.assertEqual(len(state.monitor_names), 2)
        self.assertEqual(
            state.detectors[DetectorType.to_string(
                DetectorType.LAB)].sample_centre_pos1, value)
示例#7
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
示例#8
0
    def get_state_move_obj(monitor_4_dist, monitor_5_dist):
        # Arrange
        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()

        # Act
        state_builder = get_move_builder(data_info)

        # Assert
        state = state_builder.build()
        state.monitor_4_offset = monitor_4_dist
        state.monitor_5_offset = monitor_5_dist
        return state
示例#9
0
    def _get_simple_state(sample_scatter, lab_x_translation_correction=None, lab_z_translation_correction=None):
        # Set the data
        data_builder = get_data_builder(SANSFacility.ISIS)
        data_builder.set_sample_scatter(sample_scatter)
        data_info = data_builder.build()

        # Set the move parameters
        builder = get_move_builder(data_info)
        if lab_x_translation_correction is not None:
            builder.set_LAB_x_translation_correction(lab_x_translation_correction)
        if lab_z_translation_correction is not None:
            builder.set_LAB_z_translation_correction(lab_z_translation_correction)
        move_info = builder.build()

        # Get the sample state
        test_director = TestDirector()
        test_director.set_states(data_state=data_info, move_state=move_info)
        return test_director.construct()
示例#10
0
    def test_that_beam_stop_masking_is_applied_for_LOQ(self):
        # Arrange
        file_information_factory = SANSFileInformationFactory()
        file_information = file_information_factory.create_sans_file_information(
            "LOQ74044")
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()
        mask_builder = get_mask_builder(data_info)

        beam_stop_arm_width = .01
        beam_stop_arm_angle = 180.0
        beam_stop_arm_pos1 = 0.0
        beam_stop_arm_pos2 = 0.0

        # Expected_spectra, again the tubes are shifted and that will produce the slightly strange masking
        expected_spectra = []
        expected_spectra.extend((7811 + x for x in range(0, 63)))
        expected_spectra.extend((7939 + x for x in range(0, 63)))

        mask_builder.set_beam_stop_arm_width(beam_stop_arm_width)
        mask_builder.set_beam_stop_arm_angle(beam_stop_arm_angle)
        mask_builder.set_beam_stop_arm_pos1(beam_stop_arm_pos1)
        mask_builder.set_beam_stop_arm_pos2(beam_stop_arm_pos2)

        mask_info = mask_builder.build()

        move_builder = get_move_builder(data_info)
        move_builder.set_center_position(0.)
        move_info = move_builder.build()

        test_director = TestDirector()
        test_director.set_states(data_state=data_info,
                                 mask_state=mask_info,
                                 move_state=move_info)
        state = test_director.construct()

        workspace = self._load_workspace(state)

        # Act
        workspace = self._run_mask(state, workspace, "LAB")

        # Assert
        self._do_assert(workspace, expected_spectra)
示例#11
0
    def test_that_state_for_larmor_can_be_built(self):
        # Arrange
        facility = SANSFacility.ISIS
        data_builder = get_data_builder(facility)
        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_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 == "DetectorBench")
        self.assertTrue(state.monitor_names[str(5)] == "monitor5")
        self.assertTrue(len(state.monitor_names) == 10)
    def test_that_beam_stop_masking_is_applied_for_LOQ(self):
        # Arrange
        file_information_factory = SANSFileInformationFactory()
        file_information = file_information_factory.create_sans_file_information("LOQ74044")
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter("LOQ74044")
        data_info = data_builder.build()
        mask_builder = get_mask_builder(data_info)

        beam_stop_arm_width = .01
        beam_stop_arm_angle = 180.0
        beam_stop_arm_pos1 = 0.0
        beam_stop_arm_pos2 = 0.0

        # Expected_spectra, again the tubes are shifted and that will produce the slightly strange masking
        expected_spectra = []
        expected_spectra.extend((7811 + x for x in range(0, 63)))
        expected_spectra.extend((7939 + x for x in range(0, 63)))

        mask_builder.set_beam_stop_arm_width(beam_stop_arm_width)
        mask_builder.set_beam_stop_arm_angle(beam_stop_arm_angle)
        mask_builder.set_beam_stop_arm_pos1(beam_stop_arm_pos1)
        mask_builder.set_beam_stop_arm_pos2(beam_stop_arm_pos2)

        mask_info = mask_builder.build()

        move_builder = get_move_builder(data_info)
        move_builder.set_center_position(0.)
        move_info = move_builder.build()

        test_director = TestDirector()
        test_director.set_states(data_state=data_info, mask_state=mask_info, move_state=move_info)
        state = test_director.construct()

        workspace = self._load_workspace(state)

        # Act
        workspace = self._run_mask(state, workspace, "LAB")

        # Assert
        self._do_assert(workspace, expected_spectra)
示例#13
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)
示例#14
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)
示例#15
0
    def construct(self):
        facility = SANSFacility.ISIS

        # Build the SANSStateData
        if self.data_state is None:
            data_builder = get_data_builder(facility)
            data_builder.set_sample_scatter("SANS2D00022024")
            data_builder.set_can_scatter("SANS2D00022024")
            self.data_state = data_builder.build()

        # Build the SANSStateMove
        if self.move_state is None:
            move_builder = get_move_builder(self.data_state)
            if hasattr(move_builder, "set_HAB_x_translation_correction"):
                move_builder.set_HAB_x_translation_correction(21.2)
            move_builder.set_LAB_x_translation_correction(12.1)
            self.move_state = move_builder.build()

        # Build the SANSStateReduction
        if self.reduction_state is None:
            reduction_builder = get_reduction_mode_builder(self.data_state)
            reduction_builder.set_reduction_mode(ISISReductionMode.Merged)
            reduction_builder.set_reduction_dimensionality(ReductionDimensionality.OneDim)
            reduction_builder.set_merge_fit_mode(FitModeForMerge.Both)
            reduction_builder.set_merge_shift(324.2)
            reduction_builder.set_merge_scale(3420.98)
            self.reduction_state = reduction_builder.build()

        # Build the SANSStateSliceEvent
        if self.slice_state is None:
            slice_builder = get_slice_event_builder(self.data_state)
            slice_builder.set_start_time([0.1, 1.3])
            slice_builder.set_end_time([0.2, 1.6])
            self.slice_state = slice_builder.build()

        # Build the SANSStateMask
        if self.mask_state is None:
            mask_builder = get_mask_builder(self.data_state)
            mask_builder.set_radius_min(10.0)
            mask_builder.set_radius_max(20.0)
            self.mask_state = mask_builder.build()

        # Build the SANSStateWavelength
        if self.wavelength_state is None:
            wavelength_builder = get_wavelength_builder(self.data_state)
            wavelength_builder.set_wavelength_low(1.0)
            wavelength_builder.set_wavelength_high(10.0)
            wavelength_builder.set_wavelength_step(2.0)
            wavelength_builder.set_wavelength_step_type(RangeStepType.Lin)
            wavelength_builder.set_rebin_type(RebinType.Rebin)
            self.wavelength_state = wavelength_builder.build()

        # Build the SANSStateSave
        if self.save_state is None:
            save_builder = get_save_builder(self.data_state)
            save_builder.set_user_specified_output_name("test_file_name")
            save_builder.set_file_format([SaveType.Nexus])
            self.save_state = save_builder.build()

        # Build the SANSStateScale
        if self.scale_state is None:
            scale_builder = get_scale_builder(self.data_state)
            scale_builder.set_shape(SampleShape.Cuboid)
            scale_builder.set_width(1.0)
            scale_builder.set_height(2.0)
            scale_builder.set_thickness(3.0)
            scale_builder.set_scale(4.0)
            self.scale_state = scale_builder.build()

        # Build the SANSAdjustmentState
        if self.adjustment_state is None:
            # NormalizeToMonitor
            normalize_to_monitor_builder = get_normalize_to_monitor_builder(self.data_state)
            normalize_to_monitor_builder.set_wavelength_low(1.0)
            normalize_to_monitor_builder.set_wavelength_high(10.0)
            normalize_to_monitor_builder.set_wavelength_step(2.0)
            normalize_to_monitor_builder.set_wavelength_step_type(RangeStepType.Lin)
            normalize_to_monitor_builder.set_rebin_type(RebinType.Rebin)
            normalize_to_monitor_builder.set_background_TOF_general_start(1000.)
            normalize_to_monitor_builder.set_background_TOF_general_stop(2000.)
            normalize_to_monitor_builder.set_incident_monitor(1)
            normalize_to_monitor = normalize_to_monitor_builder.build()

            # CalculateTransmission
            calculate_transmission_builder = get_calculate_transmission_builder(self.data_state)
            calculate_transmission_builder.set_transmission_monitor(3)
            calculate_transmission_builder.set_incident_monitor(2)
            calculate_transmission_builder.set_wavelength_low(1.0)
            calculate_transmission_builder.set_wavelength_high(10.0)
            calculate_transmission_builder.set_wavelength_step(2.0)
            calculate_transmission_builder.set_wavelength_step_type(RangeStepType.Lin)
            calculate_transmission_builder.set_rebin_type(RebinType.Rebin)
            calculate_transmission_builder.set_background_TOF_general_start(1000.)
            calculate_transmission_builder.set_background_TOF_general_stop(2000.)

            calculate_transmission_builder.set_Sample_fit_type(FitType.Linear)
            calculate_transmission_builder.set_Sample_polynomial_order(0)
            calculate_transmission_builder.set_Sample_wavelength_low(1.0)
            calculate_transmission_builder.set_Sample_wavelength_high(10.0)
            calculate_transmission_builder.set_Can_fit_type(FitType.Polynomial)
            calculate_transmission_builder.set_Can_polynomial_order(3)
            calculate_transmission_builder.set_Can_wavelength_low(10.0)
            calculate_transmission_builder.set_Can_wavelength_high(20.0)
            calculate_transmission = calculate_transmission_builder.build()

            # Wavelength and pixel adjustment
            wavelength_and_pixel_builder = get_wavelength_and_pixel_adjustment_builder(self.data_state)
            wavelength_and_pixel_builder.set_wavelength_low(1.0)
            wavelength_and_pixel_builder.set_wavelength_high(10.0)
            wavelength_and_pixel_builder.set_wavelength_step(2.0)
            wavelength_and_pixel_builder.set_wavelength_step_type(RangeStepType.Lin)
            wavelength_and_pixel = wavelength_and_pixel_builder.build()

            # Adjustment
            adjustment_builder = get_adjustment_builder(self.data_state)
            adjustment_builder.set_normalize_to_monitor(normalize_to_monitor)
            adjustment_builder.set_calculate_transmission(calculate_transmission)
            adjustment_builder.set_wavelength_and_pixel_adjustment(wavelength_and_pixel)
            self.adjustment_state = adjustment_builder.build()

        # SANSStateConvertToQ
        if self.convert_to_q_state is None:
            convert_to_q_builder = get_convert_to_q_builder(self.data_state)
            convert_to_q_builder.set_reduction_dimensionality(ReductionDimensionality.OneDim)
            convert_to_q_builder.set_use_gravity(False)
            convert_to_q_builder.set_radius_cutoff(0.002)
            convert_to_q_builder.set_wavelength_cutoff(12.)
            convert_to_q_builder.set_q_min(0.1)
            convert_to_q_builder.set_q_max(0.8)
            convert_to_q_builder.set_q_1d_rebin_string("0.1,0.01,0.8")
            convert_to_q_builder.set_use_q_resolution(False)
            self.convert_to_q_state = convert_to_q_builder.build()

        # Set the sub states on the SANSState
        state_builder = get_state_builder(self.data_state)
        state_builder.set_data(self.data_state)
        state_builder.set_move(self.move_state)
        state_builder.set_reduction(self.reduction_state)
        state_builder.set_slice(self.slice_state)
        state_builder.set_mask(self.mask_state)
        state_builder.set_wavelength(self.wavelength_state)
        state_builder.set_save(self.save_state)
        state_builder.set_scale(self.scale_state)
        state_builder.set_adjustment(self.adjustment_state)
        state_builder.set_convert_to_q(self.convert_to_q_state)
        return state_builder.build()