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
Exemple #7
0
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