def _get_detector_ids_for_transmission_calculation(self, transmission_workspace, calculate_transmission_state): """ Get the detector ids which participate in the transmission calculation. This can come either from a ROI/MASK/RADIUS selection or from a transmission monitor, not both. :param transmission_workspace: the transmission workspace. :param calculate_transmission_state: a SANSStateCalculateTransmission object. :return: a list of detector ids for ROI and a detector id for the transmission monitor, either can be None """ # Get the potential ROI detector ids transmission_radius = calculate_transmission_state.transmission_radius_on_detector transmission_roi = calculate_transmission_state.transmission_roi_files transmission_mask = calculate_transmission_state.transmission_mask_files detector_ids_roi = get_region_of_interest(transmission_workspace, transmission_radius, transmission_roi, transmission_mask) # Get the potential transmission monitor detector id transmission_monitor_spectrum_number = calculate_transmission_state.transmission_monitor detector_id_transmission_monitor = None if transmission_monitor_spectrum_number is not None: detector_id_transmission_monitor = get_detector_id_for_spectrum_number(transmission_workspace, transmission_monitor_spectrum_number) # Get the default transmission monitor detector id. This is our fallback if nothing else was specified. default_transmission_monitor = calculate_transmission_state.default_transmission_monitor detector_id_default_transmission_monitor = get_detector_id_for_spectrum_number(transmission_workspace, default_transmission_monitor) return detector_ids_roi, detector_id_transmission_monitor, detector_id_default_transmission_monitor
def test_that_returns_empty_list_if_nothing_is_specified(self): # Act detector_ids = get_region_of_interest( self.region_of_interest_workspace) # Assert expected_detector_ids = [] self._assert_collection_elements_are_equal(detector_ids, expected_detector_ids)
def test_that_gets_region_of_interest_for_roi_file(self): # Act detector_ids = get_region_of_interest( self.region_of_interest_workspace, roi_files=[self.roi_file_path]) # Assert expected_detector_ids = [6990, 6991, 6992, 6993, 6994, 6995, 6996] self._assert_collection_elements_are_equal(detector_ids, expected_detector_ids)
def test_that_gets_region_of_interest_for_radius_only_gets_correct_ids(self): # Act detector_ids = get_region_of_interest(self.region_of_interest_workspace, radius=0.01) # Assert # The one centimeter radius should capture [7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130] expected_ids = [7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130] self._assert_collection_elements_are_equal(detector_ids, expected_ids)
def test_that_gets_region_of_interest_for_roi_mask_and_radius(self): # Act detector_ids = get_region_of_interest(self.region_of_interest_workspace, roi_files=[self.roi_file_path], mask_files=[self.mask_file_path], radius=0.01) # Assert # From Radius: [7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130] # From Roi File: [6990, 6991, 6992, 6993, 6994, 6995, 6996] # Mask file removes: [6991] expected_detector_ids = [6990, 6992, 6993, 6994, 6995, 6996, 7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130] self._assert_collection_elements_are_equal(detector_ids, expected_detector_ids)
def test_that_gets_region_of_interest_for_radius_only_gets_correct_ids( self): # Act detector_ids = get_region_of_interest( self.region_of_interest_workspace, radius=0.01) # Assert # The one centimeter radius should capture [7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130] expected_ids = [ 7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130 ] self._assert_collection_elements_are_equal(detector_ids, expected_ids)
def test_that_gets_region_of_interest_for_roi_mask_and_radius(self): # Act detector_ids = get_region_of_interest( self.region_of_interest_workspace, roi_files=[self.roi_file_path], mask_files=[self.mask_file_path], radius=0.01) # Assert # From Radius: [7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130] # From Roi File: [6990, 6991, 6992, 6993, 6994, 6995, 6996] # Mask file removes: [6991] expected_detector_ids = [ 6990, 6992, 6993, 6994, 6995, 6996, 7872, 7873, 7874, 8000, 8001, 8002, 8003, 8128, 8129, 8130 ] self._assert_collection_elements_are_equal(detector_ids, expected_detector_ids)
def test_that_returns_empty_list_if_nothing_is_specified(self): # Act detector_ids = get_region_of_interest(self.region_of_interest_workspace) # Assert expected_detector_ids = [] self._assert_collection_elements_are_equal(detector_ids, expected_detector_ids)
def test_that_gets_region_of_interest_for_roi_file(self): # Act detector_ids = get_region_of_interest(self.region_of_interest_workspace, roi_files=[self.roi_file_path]) # Assert expected_detector_ids = [6990, 6991, 6992, 6993, 6994, 6995, 6996] self._assert_collection_elements_are_equal(detector_ids, expected_detector_ids)