def handle_load_grouping_from_file(self): # Only XML format file_filter = file_utils.filter_for_extensions(["xml"]) filename = self._view.show_file_browser_and_return_selection( file_filter, [""]) if filename == '': return groups, pairs, description, default = xml_utils.load_grouping_from_XML( filename) self._model.clear() for group in groups: try: self._model.add_group(group) except ValueError as error: self._view.display_warning_box(str(error)) for pair in pairs: if pair.forward_group in self._model.group_names and pair.backward_group in self._model.group_names: self._model.add_pair(pair) self.grouping_table_widget.update_view_from_model() self.pairing_table_widget.update_view_from_model() self.update_description_text(description) self._model._context.group_pair_context.selected = default self.groupingNotifier.notify_subscribers() self.handle_update_all_clicked()
def test_load_grouping_copes_with_no_default_name_specified(self): directory = ConfigService['instrumentDefinition.directory'] filename = os.path.join(directory, 'Grouping', 'VISION_Grouping.xml') groups, pairs, description, default = load_grouping_from_XML(filename) self.assertEquals(description, filename) self.assertEquals(default, '')
def test_load_grouping_from_XML_correctly_retrieves_default_name(self): directory = ConfigService['instrumentDefinition.directory'] filename = os.path.join(directory, 'Grouping', 'EMU_Detector_Grouping_LF_96.xml') groups, pairs, description, default = load_grouping_from_XML(filename) self.assertEquals(description, 'emu longitudinal (96 detectors)') self.assertEquals(default, 'long')
def test_that_save_and_load_grouping_xml_correctly_stores_and_reads_period_data(self, mock_file_parse): groups = [MuonGroup('fwd', [1,2,3], [1,3]), MuonGroup('bwd', [4,5,6], [2,4])] pairs = [MuonPair('long', 'fwd', 'bwd')] xml_tree = save_grouping_to_XML(groups, pairs, 'filename.xml', save=False, description='Bespoke grouping') mock_file_parse.return_value = xml_tree loaded_groups, loaded_pairs, loaded_description, loaded_default = load_grouping_from_XML('filename.xml') self.assertEqual(loaded_groups[0].periods, groups[0].periods) self.assertEqual(loaded_groups[1].periods, groups[1].periods)
def handle_load_grouping_from_file(self): # Only XML format file_filter = file_utils.filter_for_extensions(["xml"]) filename = self._view.show_file_browser_and_return_selection( file_filter, [""]) if filename == '': return groups, pairs, diffs, description, default = xml_utils.load_grouping_from_XML( filename) self._model.clear() for group in groups: try: self._model.add_group(group) except ValueError as error: self._view.display_warning_box(str(error)) for pair in pairs: try: if pair.forward_group in self._model.group_names and pair.backward_group in self._model.group_names: self._model.add_pair(pair) except ValueError as error: self._view.display_warning_box(str(error)) for diff in diffs: try: if diff.positive in self._model.group_names and diff.negative in self._model.group_names: self._model.add_diff(diff) elif diff.positive in self._model.pair_names and diff.negative in self._model.pair_names: self._model.add_diff(diff) except ValueError as error: self._view.display_warning_box(str(error)) # Sets the default from file if it exists, if not selected groups/pairs are set on the logic # Select all pairs if there are any pairs otherwise select all groups. if default: if default in self._model.group_names: self._model.add_group_to_analysis(default) elif default in self._model.pair_names: self._model.add_pair_to_analysis(default) self.grouping_table_widget.update_view_from_model() self.pairing_table_widget.update_view_from_model() self.diff_table.update_view_from_model() self.update_description_text(description) self._model._context.group_pair_context.selected = default self.plot_default_groups_or_pairs() self.groupingNotifier.notify_subscribers() self.handle_update_all_clicked()
def get_default_grouping(workspace, instrument, main_field_direction): parameter_name = "Default grouping file" if instrument == "MUSR" or instrument == 'CHRONUS': parameter_name += " - " + main_field_direction try: if isinstance(workspace, WorkspaceGroup): grouping_file = workspace[0].getInstrument().getStringParameter(parameter_name)[0] else: grouping_file = workspace.getInstrument().getStringParameter(parameter_name)[0] except IndexError: return [], [] instrument_directory = ConfigServiceImpl.Instance().getInstrumentDirectory() filename = instrument_directory + grouping_file new_groups, new_pairs, description = xml_utils.load_grouping_from_XML(filename) return new_groups, new_pairs
def get_default_grouping(workspace, instrument, main_field_direction): parameter_name = "Default grouping file" if instrument == "MUSR": parameter_name += " - " + main_field_direction try: if isinstance(workspace, WorkspaceGroup): grouping_file = workspace[0].getInstrument().getStringParameter( parameter_name)[0] else: grouping_file = workspace.getInstrument().getStringParameter( parameter_name)[0] except IndexError: return [], [] instrument_directory = ConfigServiceImpl.Instance().getInstrumentDirectory( ) filename = instrument_directory + grouping_file new_groups, new_pairs, description = xml_utils.load_grouping_from_XML( filename) return new_groups, new_pairs
def get_default_grouping(workspace, instrument, main_field_direction): parameter_name = "Default grouping file" if instrument == "MUSR" or instrument == 'CHRONUS': parameter_name += " - " + main_field_direction if instrument != "PSI": try: if isinstance(workspace, WorkspaceGroup): grouping_file = workspace[0].getInstrument().getStringParameter(parameter_name)[0] else: grouping_file = workspace.getInstrument().getStringParameter(parameter_name)[0] except IndexError: return [], [], '' else: return get_grouping_psi(workspace) instrument_directory = ConfigServiceImpl.Instance().getInstrumentDirectory() filename = os.path.join(instrument_directory, grouping_file) new_groups, new_pairs, description, default = xml_utils.load_grouping_from_XML(filename) return new_groups, new_pairs, default