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