def test_that_add_states_to_pmds(self):
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 0)
     states = {0: get_example_state(), 1: get_example_state()}
     pms = PropertyManagerService()
     pms.add_states_to_pmds(states)
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 2)
     self._remove_all_property_managers()
示例#2
0
 def test_that_add_states_to_pmds(self):
     self.assertEqual(len(PropertyManagerDataService.getObjectNames()), 0)
     states = {0: get_example_state(), 1: get_example_state()}
     pms = PropertyManagerService()
     pms.add_states_to_pmds(states)
     self.assertEqual(len(PropertyManagerDataService.getObjectNames()), 2)
     self._remove_all_property_managers()
 def test_that_does_not_delete_pms_which_are_not_sans(self):
     property_manager = self._get_property_manager()
     PropertyManagerDataService.addOrReplace("test", property_manager)
     pms = PropertyManagerService()
     pms.remove_sans_property_managers()
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 1)
     self._remove_all_property_managers()
示例#4
0
 def test_that_does_not_delete_pms_which_are_not_sans(self):
     property_manager = self._get_property_manager()
     PropertyManagerDataService.addOrReplace("test", property_manager)
     pms = PropertyManagerService()
     pms.remove_sans_property_managers()
     self.assertEqual(len(PropertyManagerDataService.getObjectNames()), 1)
     self._remove_all_property_managers()
    def remove_sans_property_managers(self):
        property_manager_names_to_delete = []
        for name in PropertyManagerDataService.getObjectNames():
            if name.startswith(self.sans_property_manager_prefix):
                property_manager_names_to_delete.append(name)

        for element in property_manager_names_to_delete:
            PropertyManagerDataService.remove(element)
示例#6
0
 def test_that_removes_sans_property_managers_from_pmds(self):
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 0)
     states = {0: get_example_state(), 1: get_example_state()}
     pms = PropertyManagerService()
     pms.add_states_to_pmds(states)
     pms.remove_sans_property_managers()
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 0)
     self._remove_all_property_managers()
示例#7
0
 def test_that_can_retrieve_states_from_pmds(self):
     self.assertEqual(len(PropertyManagerDataService.getObjectNames()), 0)
     states = {0: get_example_state(), 1: get_example_state()}
     pms = PropertyManagerService()
     pms.add_states_to_pmds(states)
     retrieved_states = pms.get_states_from_pmds()
     self.assertEqual(len(retrieved_states), 2)
     self.assertTrue(isinstance(retrieved_states[0], type(states[0])))
     self.assertEqual(len(PropertyManagerDataService.getObjectNames()), 2)
     self._remove_all_property_managers()
 def test_that_can_retrieve_states_from_pmds(self):
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 0)
     states = {0: get_example_state(), 1: get_example_state()}
     pms = PropertyManagerService()
     pms.add_states_to_pmds(states)
     retrieved_states = pms.get_states_from_pmds()
     self.assertTrue(len(retrieved_states) == 2)
     self.assertTrue(isinstance(retrieved_states[0], type(states[0])))
     self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 2)
     self._remove_all_property_managers()
    def get_states_from_pmds(self):
        # 1. Find all sans state names
        sans_property_managers = {}
        for name in PropertyManagerDataService.getObjectNames():
            if name.startswith(self.sans_property_manager_prefix):
                property_manager = PropertyManagerDataService.retrieve(name)
                index = self._get_index_from_name(name)
                sans_property_managers.update({index: property_manager})

        # 2. Convert property managers to states
        states_map = self._convert_property_manager_to_state(sans_property_managers)

        # 3. Create a sequence container
        return self._get_states_list(states_map)
示例#10
0
    def test_cache(self):
        fname = "PG3_46577.nxs.h5"
        props = PropertyManagerDataService.retrieve("props")

        cachedirs = [tempfile.gettempdir()] * 3
        abs_s, _ = absorptioncorrutils.calculate_absorption_correction(
            fname,
            "SampleOnly",
            props,
            "Si",
            1.165,
            element_size=2,
            cache_dirs=cachedirs,
        )
        self.assertIsNotNone(abs_s)

        abs_s, _ = absorptioncorrutils.calculate_absorption_correction(
            fname,
            "SampleOnly",
            props,
            "Si",
            1.165,
            element_size=2,
            cache_dirs=cachedirs,
        )
        self.assertIsNotNone(abs_s)
示例#11
0
 def _do_addOrReplace_test(self, name, value, value2):
     pmds = PropertyManagerDataService.Instance()
     pmds.add(name, value)
     pmds.addOrReplace(name, value2)
     pmgr = pmds[name]
     self.assertEqual(value2['key2'], pmgr['key2'].value)
     pmds.remove(name)
示例#12
0
 def test_that_it_adds_nothing_when_empty_list_is_passed_in(self):
     pms = PropertyManagerService()
     number_of_elements_on_pmds_after = len(
         PropertyManagerDataService.getObjectNames())
     pms.add_states_to_pmds({})
     self.assertEqual(number_of_elements_on_pmds_after, 0)
     self._remove_all_property_managers()
示例#13
0
    def __getCacheName(self, wkspname, additional_props=None):
        """additional_props: list. additional properties to be hashed
        """
        cachedir = self.getProperty('CacheDir').value
        if len(cachedir) <= 0:
            return None

        # fix up the workspace name
        prefix = wkspname.replace('__', '')

        propman_properties = [
            'bank', 'd_min', 'd_max', 'tof_min', 'tof_max', 'wavelength_min',
            'wavelength_max'
        ]
        alignandfocusargs = []

        # calculate general properties
        for name in PROPS_FOR_ALIGN + PROPS_IN_PD_CHARACTER:
            # skip these because this has been reworked to only worry about information in workspaces
            if name in (CAL_FILE, GROUP_FILE, CAL_WKSP, GRP_WKSP, MASK_WKSP):
                continue
            prop = self.getProperty(name)
            if name == 'PreserveEvents' or not prop.isDefault:
                value = prop.valueAsStr  # default representation for everything
                alignandfocusargs.append('%s=%s' % (name, value))

        # special calculations for workspaces
        if self.absorption:
            alignandfocusargs.append(
                uniqueDescription('AbsorptionWorkspace', self.absorption))
        if self.__calWksp:
            alignandfocusargs.append(
                uniqueDescription(CAL_WKSP, self.__calWksp))
        if self.__grpWksp:
            alignandfocusargs.append(
                uniqueDescription(GRP_WKSP, self.__grpWksp))
        if self.__mskWksp:
            alignandfocusargs.append(
                uniqueDescription(MASK_WKSP, self.__mskWksp))

        alignandfocusargs += additional_props or []
        reductionPropertiesName = self.getProperty(
            'ReductionProperties').valueAsStr
        if not PropertyManagerDataService.doesExist(reductionPropertiesName):
            reductionPropertiesName = ''  # do not specify non-existant manager

        return CreateCacheFilename(Prefix=prefix,
                                   PropertyManager=reductionPropertiesName,
                                   Properties=propman_properties,
                                   OtherProperties=alignandfocusargs,
                                   CacheDir=cachedir).OutputFilename
示例#14
0
    def test_correction_props(self):
        self.assertRaises(RuntimeError,
                          absorptioncorrutils.create_absorption_input, '',
                          None)

        props = PropertyManagerDataService.retrieve("props")

        # Sample only absorption correction
        abs_sample = absorptioncorrutils.calculate_absorption_correction(
            "PG3_46577.nxs.h5",
            "SampleOnly",
            props,
            "Si",
            1.165,
            element_size=2)
        self.assertIsNotNone(abs_sample[0])
        DeleteWorkspaces([abs_sample[0]])
    def __getCacheName(self, wkspname, additional_props=None):
        """additional_props: list. additional properties to be hashed
        """
        cachedir = self.getProperty('CacheDir').value
        if len(cachedir) <= 0:
            return None

        # fix up the workspace name
        prefix = wkspname.replace('__', '')

        propman_properties = ['bank', 'd_min', 'd_max', 'tof_min', 'tof_max', 'wavelength_min', 'wavelength_max']
        alignandfocusargs = []

        # calculate general properties
        for name in PROPS_FOR_ALIGN + PROPS_IN_PD_CHARACTER:
            # skip these because this has been reworked to only worry about information in workspaces
            if name in (CAL_FILE, GROUP_FILE, CAL_WKSP, GRP_WKSP, MASK_WKSP):
                continue
            prop = self.getProperty(name)
            if name == 'PreserveEvents' or not prop.isDefault:
                value = prop.valueAsStr  # default representation for everything
                alignandfocusargs.append('%s=%s' % (name, value))

        # special calculations for workspaces
        if self.absorption:
            alignandfocusargs.append(uniqueDescription('AbsorptionWorkspace', self.absorption))
        if self.__calWksp:
            alignandfocusargs.append(uniqueDescription(CAL_WKSP, self.__calWksp))
        if self.__grpWksp:
            alignandfocusargs.append(uniqueDescription(GRP_WKSP, self.__grpWksp))
        if self.__mskWksp:
            alignandfocusargs.append(uniqueDescription(MASK_WKSP, self.__mskWksp))

        alignandfocusargs += additional_props or []
        reductionPropertiesName = self.getProperty('ReductionProperties').valueAsStr
        if not PropertyManagerDataService.doesExist(reductionPropertiesName):
            reductionPropertiesName = ''  # do not specify non-existant manager

        return CreateCacheFilename(Prefix=prefix,
                                   PropertyManager=reductionPropertiesName,
                                   Properties=propman_properties,
                                   OtherProperties=alignandfocusargs,
                                   CacheDir=cachedir).OutputFilename
示例#16
0
    def test_that_populates_the_property_manager_data_service_when_processing_is_called(self):
        # Arrange
        self._clear_property_manager_data_service()
        batch_file_path, user_file_path, presenter, _ = self._get_files_and_mock_presenter(BATCH_FILE_TEST_CONTENT_2)

        # This is not the nicest of tests, but better to test this functionality than not
        presenter.on_user_file_load()
        presenter.on_batch_file_load()

        # Act
        presenter.on_processed_clicked()

        # Assert
        # We should have two states in the PropertyManagerDataService
        self.assertTrue(len(PropertyManagerDataService.getObjectNames()) == 2)

        # clean up
        self._remove_files(user_file_path=user_file_path, batch_file_path=batch_file_path)

        self._clear_property_manager_data_service()
    def test_that_populates_the_property_manager_data_service_when_processing_is_called(self):
        # Arrange
        self._clear_property_manager_data_service()
        batch_file_path, user_file_path, presenter, _ = self._get_files_and_mock_presenter(BATCH_FILE_TEST_CONTENT_2)

        # This is not the nicest of tests, but better to test this functionality than not
        presenter.on_user_file_load()
        presenter.on_batch_file_load()

        # Act
        presenter.on_processed_clicked()

        # Assert
        # We should have two states in the PropertyManagerDataService
        self.assertEqual(len(PropertyManagerDataService.getObjectNames()), 2)

        # clean up
        self._remove_files(user_file_path=user_file_path, batch_file_path=batch_file_path)

        self._clear_property_manager_data_service()
示例#18
0
    def test_correction_props(self):
        # must supply the filename
        self.assertRaises(ValueError,
                          absorptioncorrutils.create_absorption_input, '',
                          None)
        # must supply some way of determining wavelength range
        self.assertRaises(ValueError,
                          absorptioncorrutils.create_absorption_input,
                          'PG3_46577.nxs.h5', None)

        props = PropertyManagerDataService.retrieve("props")

        # Sample only absorption correction
        abs_sample = absorptioncorrutils.calculate_absorption_correction(
            "PG3_46577.nxs.h5",
            "SampleOnly",
            props,
            "Si",
            1.165,
            element_size=2)
        self.assertIsNotNone(abs_sample[0])
        DeleteWorkspaces([abs_sample[0]])
示例#19
0
 def _remove_all_property_managers():
     for element in PropertyManagerDataService.getObjectNames():
         PropertyManagerDataService.remove(element)
 def _add_property_managers_to_pmds(self, states):
     for index, state in states.items():
         name = self.sans_property_manager_prefix + str(index)
         PropertyManagerDataService.addOrReplace(name, state.property_manager)
示例#21
0
 def _do_add_test(self, name, value):
     pmds = PropertyManagerDataService.Instance()
     pmds.add(name, value)
     self.assertTrue(name in pmds)
     pmds.remove(name)
示例#22
0
 def tearDownClass(cls):
     mtd.clear()
     PropertyManagerDataService.remove('props')
示例#23
0
 def _clear_property_manager_data_service():
     for element in PropertyManagerDataService.getObjectNames():
         if PropertyManagerDataService.doesExist(element):
             PropertyManagerDataService.remove(element)
 def _remove_all_property_managers():
     for element in PropertyManagerDataService.getObjectNames():
         PropertyManagerDataService.remove(element)
 def test_that_it_adds_nothing_when_empty_list_is_passed_in(self):
     pms = PropertyManagerService()
     number_of_elements_on_pmds_after = len(PropertyManagerDataService.getObjectNames())
     pms.add_states_to_pmds({})
     self.assertTrue(number_of_elements_on_pmds_after == 0)
     self._remove_all_property_managers()
示例#26
0
 def _clear_property_manager_data_service():
     for element in PropertyManagerDataService.getObjectNames():
         if PropertyManagerDataService.doesExist(element):
             PropertyManagerDataService.remove(element)