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)
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_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)
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()
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)
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)
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
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
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()
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)
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)
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)
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 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()