From af10766408c9860d0c9025684d8d728835e82f63 Mon Sep 17 00:00:00 2001 From: leloup314 Date: Mon, 23 Apr 2018 23:37:58 +0200 Subject: [PATCH 1/7] ENH: clearer error message, correct way of accessing nodes names --- testbeam_analysis/gui/tab_widgets/files_tab.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/testbeam_analysis/gui/tab_widgets/files_tab.py b/testbeam_analysis/gui/tab_widgets/files_tab.py index f824a82a..fa2c4996 100644 --- a/testbeam_analysis/gui/tab_widgets/files_tab.py +++ b/testbeam_analysis/gui/tab_widgets/files_tab.py @@ -385,12 +385,11 @@ def check_data(self): else: missing.append(req) if len(missing) != 0: - self.incompatible_data[i] = 'Data does not contain field(s):\n' + ', '.join(missing) + self.incompatible_data[i] = 'Data does not contain required field(s):\n' + ', '.join(missing) if f.root.Hits.shape[0] == 0: self.incompatible_data[i] = 'Hit data is empty!' - except tb.exceptions.NoSuchNodeError: - self.incompatible_data[i] = 'No Hits node! Found nodes:\n' + ', '.join([node.name for node in f.root]) + self.incompatible_data[i] = 'No node named Hits! Found nodes:\n' + ', '.join([node._v_name for node in f.root]) font = QtGui.QFont() font.setBold(True) From b3d907b3c87d2572f676f4cc73ffebb9d9ecf1ac Mon Sep 17 00:00:00 2001 From: leloup314 Date: Sun, 29 Apr 2018 19:17:42 +0200 Subject: [PATCH 2/7] ENH: enable loading setup from file in SetupTab #117 --- .../gui/tab_widgets/setup_tab.py | 119 ++++++++++++++++-- 1 file changed, 107 insertions(+), 12 deletions(-) diff --git a/testbeam_analysis/gui/tab_widgets/setup_tab.py b/testbeam_analysis/gui/tab_widgets/setup_tab.py index ea0ec01b..b8a97600 100644 --- a/testbeam_analysis/gui/tab_widgets/setup_tab.py +++ b/testbeam_analysis/gui/tab_widgets/setup_tab.py @@ -105,11 +105,27 @@ def _setup(self): btn_scatter.clicked.connect(x) self.tabs.setCornerWidget(btn_scatter) + # Buttons # Proceed button self.btn_ok = QtWidgets.QPushButton('Ok') self.btn_ok.clicked.connect(lambda: self._handle_input()) self.btn_ok.setDisabled(True) - layout_right.addWidget(self.btn_ok) + # Safe button + self.btn_save = QtWidgets.QPushButton('Save setup') + self.btn_save.setDisabled(True) + self.btn_save.clicked.connect(lambda: self._handle_input(save=True)) + # Load button + self.btn_load = QtWidgets.QPushButton('Load setup') + self.btn_load.clicked.connect(lambda: self.load_setup()) + + # Button layout + layout_buttons = QtWidgets.QHBoxLayout() + layout_buttons.addWidget(self.btn_load) + layout_buttons.addWidget(self.btn_save) + layout_buttons.addWidget(self.btn_ok) + + # Add to right layout + layout_right.addLayout(layout_buttons) right_widget = QtWidgets.QWidget() right_widget.setLayout(layout_right) @@ -486,13 +502,14 @@ def _remove_dut(self, index): # Check input after removal to enable proceed button self._check_input() - def _handle_input(self, custom=None): + def _handle_input(self, custom=None, save=False): """ Method to read input parameters of each dut from the UI. If custom is not None, only the specific dut properties of the custom dut type "custom" are read. The dut type "custom" is added to self._dut_types and permanently saved to the dut_types file. :param custom: str; name of new custom dut type + :param save: bool; whether to save the setup; if False, proceed analysis. If True, only save setup without proceeding """ # Read input parameters and make list of of each parameter for all duts, then save to output data @@ -576,9 +593,35 @@ def _handle_input(self, custom=None): if self.scatter_data['sct_names']: self.data['scatter_planes'] = self.scatter_data - self.isFinished = True - self.analysisFinished.emit('Setup', self.tab_list) - self.set_read_only() + # Ok button clicked; continue analysis + if not save: + self.isFinished = True + self.analysisFinished.emit('Setup', self.tab_list) + self.set_read_only() + + # Saving setup to file + else: + + # Make dialog to safe setup + caption = 'Save setup' + setup_path = QtWidgets.QFileDialog.getSaveFileName(parent=self, + caption=caption, + directory='.', + filter='*.yaml')[0] + # User selected a file to safe setup in + if setup_path: + + # Add .yaml if it wasn't written in the name; due to static method can't set default suffix + if 'yaml' not in setup_path.split('.'): + setup_path += '.yaml' + + # Safe session in yaml-file + with open(setup_path, 'w') as f_write: + yaml.safe_dump(self.data, f_write, default_flow_style=False) + + d, f = os.path.split(setup_path) + msg = 'Successfully saved current setup to %s in %s' % (f, d) + self._emit_message(msg) # Read only dut properties of custom dut type or remove/overwrite predefined type else: @@ -819,9 +862,10 @@ def _check_input(self, skip_props=None): else: self._handle_widgets[dut]['button_h'].setDisabled(True) - # Set the status of the proceed button + # Set the status of the proceed and save button if skip_props is None: self.btn_ok.setDisabled(broken) + self.btn_save.setDisabled(broken) def set_read_only(self, read_only=True): """ @@ -851,29 +895,80 @@ def set_read_only(self, read_only=True): self.tabs.cornerWidget().setDisabled(read_only) self.btn_ok.setDisabled(read_only) + self.btn_load.setDisabled(read_only) - def load_setup(self, setup): + def load_setup(self, setup=None): """ Loads data from a saved setup into the SetubTab + + :param setup: dict or None; If None, setup will be loaded from file by user """ + # Whether to init the tabs for each DUT (loading session) or just fill in info (loading setup only) + init_flag = True if setup else False + + # User loads setup from SetupTab + if setup is None: + + caption = 'Load setup' + setup_path = QtWidgets.QFileDialog.getOpenFileName(parent=self, + caption=caption, + directory='.', + filter='*.yaml')[0] + # User selected a file to safe setup in + if setup_path: + + # Safe session in yaml-file + with open(setup_path, 'r') as f_read: + setup = yaml.safe_load(f_read) + + d, f = os.path.split(setup_path) + msg = 'Successfully loaded setup from %s in %s' % (f, d) + self._emit_message(msg) + + # Loading file was canceled + else: + return + + # Empty setup + if not setup: + d, f = os.path.split(setup_path) + msg = 'Loaded setup %s from %s is empty. Aborted.' % (f, d) + self._emit_message(msg) + return + # Required keys in setup reqs = ('dut_names', 'rotations', 'pixel_size', 'n_pixels') - # Return if one key is missing + # Check requirements + missing_keys = [] for req in reqs: if req not in setup: + missing_keys.append(req) + + # If keys are missing, abort + if missing_keys: + msg = 'Setup missing %s. Aborted.' % ', '.join(missing_keys) + self._emit_message(msg) + return + + # Init tabs for DUTs and fill with saved setup + if init_flag: + self.input_data(setup) + # Check if number of DUTs in setup matches number of tabs + else: + if len(self.tw.keys()) != len(setup['dut_names']): + msg = 'Number of DUTs in setup (%i) does not match number of DUTs in session (%i). Aborted.'\ + % (len(setup['dut_names']), len(self.tw.keys())) + self._emit_message(msg) return # Init some variables - sct_setup = setup['scatter_planes'] + sct_setup = None if 'scatter_planes' not in setup else setup['scatter_planes'] rotations = ['rot_alpha', 'rot_beta', 'rot_gamma'] pixel_size = ['pitch_col', 'pitch_row'] n_pixels = ['n_cols', 'n_rows'] - # Init tabs for DUTs and fill with saved setup - self.input_data(setup) - for i, key in enumerate(setup['dut_names']): for prop in self._dut_props: if prop in rotations: From 08c1b769f16f92f7e8913aab62f35ae46fe3faf0 Mon Sep 17 00:00:00 2001 From: leloup314 Date: Sun, 29 Apr 2018 21:20:59 +0200 Subject: [PATCH 3/7] ENH: use exclude_dut_hit=True as default, make this option selectable by user #112 --- testbeam_analysis/gui/tab_widgets/analysis_tabs.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/testbeam_analysis/gui/tab_widgets/analysis_tabs.py b/testbeam_analysis/gui/tab_widgets/analysis_tabs.py index 51ca2eee..37b60bcd 100644 --- a/testbeam_analysis/gui/tab_widgets/analysis_tabs.py +++ b/testbeam_analysis/gui/tab_widgets/analysis_tabs.py @@ -566,6 +566,11 @@ def __init__(self, parent, setup, options, name, tab_list): func=fit_tracks, optional=True) + self.add_option(option='exclude_dut_hit', + func=fit_tracks, + default_value=True, + fixed=False) + # Connect options widgets depending on each other self.option_widgets['fit_duts'].selectionChanged.connect(lambda sel: self.option_widgets[ @@ -580,8 +585,6 @@ def __init__(self, parent, setup, options, name, tab_list): # Set and fix options self.add_option(option='force_prealignment', func=fit_tracks, default_value=options['skip_alignment'], fixed=True) - self.add_option(option='exclude_dut_hit', func=fit_tracks, - default_value=False, fixed=True) self.add_option(option='use_correlated', func=fit_tracks, default_value=False, fixed=True) self.add_option(option='min_track_distance', func=fit_tracks, From 948b6bab1eb7bef467b31f6019daa7976061b46c Mon Sep 17 00:00:00 2001 From: leloup314 Date: Mon, 30 Apr 2018 16:40:04 +0200 Subject: [PATCH 4/7] ENH: upon exceptions the user can decide whether to reset tab or restore previous configuration #111 --- .../gui/gui_widgets/sub_windows.py | 16 +++-- testbeam_analysis/gui/main.py | 63 ++++++++++++++++++- 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/testbeam_analysis/gui/gui_widgets/sub_windows.py b/testbeam_analysis/gui/gui_widgets/sub_windows.py index 160cb519..4cf9a32a 100644 --- a/testbeam_analysis/gui/gui_widgets/sub_windows.py +++ b/testbeam_analysis/gui/gui_widgets/sub_windows.py @@ -178,6 +178,7 @@ def _update_settings(self): class ExceptionWindow(QtWidgets.QMainWindow): + resetTab = QtCore.pyqtSignal() exceptionRead = QtCore.pyqtSignal() def __init__(self, exception, trace_back, tab=None, cause=None, parent=None): @@ -194,7 +195,8 @@ def __init__(self, exception, trace_back, tab=None, cause=None, parent=None): # Make main message and label msg = "The following exception occurred during %s: %s.\n" \ - "Try changing the input parameters. %s tab will be reset!" % (cause, self.exc_type, tab) + "Try changing the input parameters. To reset %s tab press 'Reset tab'," \ + " to keep the current selection press 'Ok' !" % (cause, self.exc_type, tab) self.label = QtWidgets.QLabel(msg) self.label.setWordWrap(True) @@ -248,16 +250,22 @@ def _init_UI(self): btn_safe.setToolTip('Safe traceback to file') btn_safe.clicked.connect(self.safe_traceback) + # Reset button + btn_reset = QtWidgets.QPushButton('Reset tab') + btn_reset.setToolTip('Reset current analysis tab') + btn_reset.clicked.connect(self.resetTab.emit) + btn_reset.clicked.connect(self.close) + # Ok button btn_ok = QtWidgets.QPushButton('Ok') - btn_ok.setToolTip('Reset current tab') + btn_ok.setToolTip('Restore current analysis tab (No reset).') btn_ok.clicked.connect(self.close) # Add buttons to layout layout_buttons.addWidget(self.btn_switch) - layout_buttons.addStretch(1) layout_buttons.addWidget(btn_safe) - layout_buttons.addSpacing(h_space) + layout_buttons.addStretch(1) + layout_buttons.addWidget(btn_reset) layout_buttons.addWidget(btn_ok) # Dock in which text browser is placed diff --git a/testbeam_analysis/gui/main.py b/testbeam_analysis/gui/main.py index 60a6bd2f..a9120eba 100644 --- a/testbeam_analysis/gui/main.py +++ b/testbeam_analysis/gui/main.py @@ -3,6 +3,7 @@ import platform import yaml import os +import time from collections import OrderedDict, defaultdict from email import message_from_string @@ -460,6 +461,27 @@ def update_tabs(self, data=None, tabs=None, skip=None, exception=False, force=Fa except (AttributeError, RuntimeError): pass + # Close analysis thread on exception + if exception: + + # If ParallelAnalysisWidget, several exceptions (for each sub tab) will be raised but only one thread to quit + try: + self.tw[tab].analysis_thread.finished.disconnect() # Disconnect from analysisFinished signal + self.tw[tab].analysis_thread.finished.connect(self.tw[tab].analysis_thread.deleteLater) # Delete + self.tw[tab].analysis_thread.quit() # Quit thread + + time_steps = 0 + while self.tw[tab].analysis_thread.isRunning() and time_steps < 1000: # Wait max. 1 second + time.sleep(0.001) + time_steps += 1 + if time_steps >= 1000: + logging.warning("Analysis thread of %s was not closed properly!" % tab) + else: + logging.info("Analysis thread of %s closed within %.3f seconds." % (tab, time_steps * 0.001)) + + except (RuntimeError, TypeError): # Disconnecting failed for some reason + pass + # Replace tabs in self.tw with updated tabs self.tw[tab] = tmp_tw[tab] @@ -1124,14 +1146,53 @@ def handle_exceptions(self, exception, trace_back, tab, cause): else: + def restore_tab(tab): + """Restores tab to its initial config which caused the exception""" + + # Get config + if tab in self.tab_order[2:4]: + sub_calls = {} + for dut in self.tw[tab].tw.keys(): + sub_calls[dut] = self.tw[tab].tw[dut].calls + config = sub_calls + else: + config = self.tw[tab].calls + + # Ubdate tab + self.update_tabs(tabs=tab, exception=True) + + # Restore states of Parallel/AnalysisWidget + if tab in self.tab_order[2:4]: # ParallelAnalysisWidget + for dut in config.keys(): + for func in config[dut].keys(): + for opt in config[dut][func].keys(): + try: + self.tw[tab].tw[dut].option_widgets[opt].load_value(config[dut][func][opt]) + # Set argument to be able to load, continue and safe a session without losing info + self.tw[tab].tw[dut]._set_argument(func, opt,config[dut][func][opt]) + except KeyError: # Fixed option has no option widget; KeyError + pass + else: # AnalysisWidget + for func in config.keys(): + for opt in config[func].keys(): + try: + self.tw[tab].option_widgets[opt].load_value(config[func][opt]) + # Set argument to be able to load, continue and safe a session without losing info + self.tw[tab]._set_argument(func, opt, config[func][opt]) + except KeyError: # Fixed option has no option widget; KeyError + pass + # Set index to tab where exception occurred self.tabs.setCurrentIndex(self.tab_order.index(tab)) # Make instance of exception window self.exception_window = ExceptionWindow(exception=exception, trace_back=trace_back, tab=tab, cause=cause, parent=self) + # Make connections + self.exception_window.resetTab.connect(lambda: self.update_tabs(tabs=tab, exception=True)) + self.exception_window.exceptionRead.connect(lambda: restore_tab(tab=tab)) + # Show window self.exception_window.show() - self.exception_window.exceptionRead.connect(lambda: self.update_tabs(tabs=tab, exception=True)) # Remove progressbar of consecutive analysis if there is one try: From da277bde25d1164c3835b7eeda041675f9b08e09 Mon Sep 17 00:00:00 2001 From: leloup314 Date: Tue, 1 May 2018 22:31:55 +0200 Subject: [PATCH 5/7] ENH: add OptionMultiRangeBox widget to enter ranges #118 --- .../gui/gui_widgets/analysis_widgets.py | 12 +- .../gui/gui_widgets/option_widgets.py | 231 ++++++++++++++++++ .../gui/tab_widgets/analysis_tabs.py | 10 + 3 files changed, 250 insertions(+), 3 deletions(-) diff --git a/testbeam_analysis/gui/gui_widgets/analysis_widgets.py b/testbeam_analysis/gui/gui_widgets/analysis_widgets.py index 41538d20..6f7bbc11 100644 --- a/testbeam_analysis/gui/gui_widgets/analysis_widgets.py +++ b/testbeam_analysis/gui/gui_widgets/analysis_widgets.py @@ -335,9 +335,15 @@ def _select_widget(self, dtype, name, default_value, optional, tooltip, func): if ('scalar' in dtype and ('tuple' in dtype or 'iterable' in dtype) or 'int' in dtype and ('tuple' in dtype or 'iterable' in dtype) or ('iterable' in dtype and 'iterable of iterable' not in dtype and 'duts' not in name)) and 'quality' not in name: - widget = option_widgets.OptionMultiSlider(name=name, labels=self.setup['dut_names'], - default_value=default_value, optional=optional, - dtype=dtype, tooltip=tooltip, parent=self) + if 'range' not in name: + widget = option_widgets.OptionMultiSlider(name=name, labels=self.setup['dut_names'], + default_value=default_value, optional=optional, + dtype=dtype, tooltip=tooltip, parent=self) + else: + widget = option_widgets.OptionMultiRangeBox(name=name, labels=self.setup['dut_names'], + default_value=default_value, optional=optional, + dtype=dtype, tooltip=tooltip, parent=self) + elif ('iterable of iterable' in dtype or 'iterable' in dtype) and ('duts' in name or 'quality' in name): # Init labels diff --git a/testbeam_analysis/gui/gui_widgets/option_widgets.py b/testbeam_analysis/gui/gui_widgets/option_widgets.py index d5bde9ea..9097b116 100644 --- a/testbeam_analysis/gui/gui_widgets/option_widgets.py +++ b/testbeam_analysis/gui/gui_widgets/option_widgets.py @@ -260,6 +260,237 @@ def _emit_value(self): self.valueChanged.emit(self.rb_t.isChecked()) +class OptionRangeBox(QtWidgets.QWidget): + """ + Option range boxes for floats and ints. Shows the value + """ + + valueChanged = QtCore.pyqtSignal(list) # Either int or float + + def __init__(self, name, default_value, optional, tooltip, dtype, parent=None): + super(OptionRangeBox, self).__init__(parent) + + # Store dtype + self._dtype = dtype + self.default_value = default_value + self.update_tooltip(default_value) + + # Slider with textbox to the right + layout_2 = QtWidgets.QHBoxLayout() + label_min = QtWidgets.QLabel('min.') + self.min_box = QtWidgets.QSpinBox() if 'float' not in self._dtype else QtWidgets.QDoubleSpinBox() + label_max = QtWidgets.QLabel('max.') + self.max_box = QtWidgets.QSpinBox() if 'float' not in self._dtype else QtWidgets.QDoubleSpinBox() + self.min_box.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + self.max_box.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + layout_min = QtWidgets.QHBoxLayout() + layout_min.setAlignment(QtCore.Qt.AlignCenter) + layout_max = QtWidgets.QHBoxLayout() + layout_max.setAlignment(QtCore.Qt.AlignCenter) + layout_min.addWidget(label_min) + layout_min.addWidget(self.min_box) + layout_min.addStretch() + layout_max.addWidget(label_max) + layout_max.addWidget(self.max_box) + layout_max.addStretch() + layout_2.addLayout(layout_min) + layout_2.addLayout(layout_max) + + # Option name with spinboxes below + layout = QtWidgets.QVBoxLayout(self) + text = QtWidgets.QLabel(name) + if tooltip: + text.setToolTip(tooltip) + if optional: + layout_1 = QtWidgets.QHBoxLayout() + layout_1.addWidget(text) + layout_1.addStretch(0) + check_box = QtWidgets.QCheckBox() + layout_1.addWidget(check_box) + layout.addLayout(layout_1) + check_box.stateChanged.connect(lambda v: self._set_readonly(v == 0)) + self._set_readonly() + else: + layout.addWidget(text) + layout.addLayout(layout_2) + + if default_value is not None: + self.min_box.setMinimum(0) + self.min_box.setMaximum(default_value[-1] - 1) + self.min_box.setValue(0) + self.max_box.setMinimum(self.min_box.minimum() + 1) + self.max_box.setMaximum(default_value[-1]) + self.max_box.setValue(default_value[-1]) + + self.min_box.valueChanged.connect(lambda _: self._emit_value()) + self.max_box.valueChanged.connect(lambda v: self.min_box.setMaximum(v - 1)) + self.max_box.valueChanged.connect(lambda _: self._emit_value()) + + def update_tooltip(self, val): + self.setToolTip('Current value: {}, (default value: {})'.format(val, self.default_value)) + + def load_value(self, value): + + if value is not None: # value can be None + self.min_box.setValue(value[0]) + self.max_box.setValue(value[-1]) + self.update_tooltip(value) + + def _set_readonly(self, value=True): + + palette = QtGui.QPalette() + if value: + palette.setColor(QtGui.QPalette.Base, QtCore.Qt.gray) + palette.setColor(QtGui.QPalette.Text, QtCore.Qt.darkGray) + else: + palette.setColor(QtGui.QPalette.Base, QtCore.Qt.white) + palette.setColor(QtGui.QPalette.Text, QtCore.Qt.black) + + self.min_box.setReadOnly(value) + self.max_box.setReadOnly(value) + self.min_box.setPalette(palette) + self.max_box.setPalette(palette) + self._emit_value() + + def _emit_value(self): + if self.min_box.isReadOnly() and self.max_box.isReadOnly(): + value = [None] #if self.default_value is None else self.default_value + self.update_tooltip(value) + self.valueChanged.emit(value) + else: + # Separate options that need int dtypes e.g. range(int) from floats + value = [self.min_box.value(), self.max_box.value()] + self.update_tooltip(value) + self.valueChanged.emit(value) + + +class OptionMultiRangeBox(QtWidgets.QWidget): + """ + Option range boxes for floats and ints for several ranges. + """ + + valueChanged = QtCore.pyqtSignal(list) + + def __init__(self, name, labels, default_value, optional, tooltip, dtype, parent=None): + super(OptionMultiRangeBox, self).__init__(parent) + + # Store dtype + self._dtype = dtype + self.default_value = default_value + self.labels = labels + self.update_tooltip(default_value) + + # Check default value + if default_value is None: # None is only supported for all values + default_value = 1 + if not isinstance(default_value, collections.Iterable): + default_value = [[0, default_value]] * len(labels) + if len(labels) != len(default_value): + raise ValueError('Number of default values does not match number of parameters') + + # Option name with range boxes + layout = QtWidgets.QVBoxLayout(self) + text = QtWidgets.QLabel(name) + if tooltip: + text.setToolTip(tooltip) + if optional: # Values can be unset + layout_1 = QtWidgets.QHBoxLayout() + layout_1.addWidget(text) + layout_1.addStretch(0) + check_box = QtWidgets.QCheckBox() + layout_1.addWidget(check_box) + layout.addLayout(layout_1) + else: + layout.addWidget(text) + + # Dict for range boxes + self.range_boxes = {} + + for i, label in enumerate(labels): # Create one range box per label + # Two boxes for min/max plus label on the left + layout_2 = QtWidgets.QHBoxLayout() + layout_2.addWidget(QtWidgets.QLabel(' ' + label)) + layout_2.addStretch() + label_min = QtWidgets.QLabel('min.') + min_box = QtWidgets.QSpinBox() if 'float' not in self._dtype else QtWidgets.QDoubleSpinBox() + label_max = QtWidgets.QLabel('max.') + max_box = QtWidgets.QSpinBox() if 'float' not in self._dtype else QtWidgets.QDoubleSpinBox() + min_box.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + max_box.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + layout_min = QtWidgets.QHBoxLayout() + layout_min.setAlignment(QtCore.Qt.AlignCenter) + layout_max = QtWidgets.QHBoxLayout() + layout_max.setAlignment(QtCore.Qt.AlignCenter) + layout_min.addWidget(label_min) + layout_min.addWidget(min_box) + layout_min.addStretch() + layout_max.addWidget(label_max) + layout_max.addWidget(max_box) + layout_max.addStretch() + layout_2.addLayout(layout_min) + layout_2.addLayout(layout_max) + + if default_value[i] is not None: + min_box.setMinimum(0) + min_box.setMaximum(default_value[i][-1] - 1) + min_box.setValue(0) + max_box.setMinimum(min_box.minimum() + 1) + max_box.setMaximum(default_value[i][-1]) + max_box.setValue(default_value[i][-1]) + + min_box.valueChanged.connect(lambda _: self._emit_value()) + max_box.valueChanged.connect(lambda v, mb=min_box: mb.setMaximum(v - 1)) + max_box.valueChanged.connect(lambda _: self._emit_value()) + + self.range_boxes[label] = [min_box, max_box] + + layout.addLayout(layout_2) + + if optional: + check_box.stateChanged.connect(lambda v: self._set_readonly(v == 0)) + self._set_readonly() + + def update_tooltip(self, val): + self.setToolTip('Current value: {}, (default value: {})'.format(val, self.default_value)) + + def load_value(self, value): + + if value is not None and isinstance(value, collections.Iterable): + for i, label in enumerate(self.labels): + min_box, max_box = self.range_boxes[label] + min_box.setValue(value[i][0]) + max_box.setValue(value[i][-1]) + + self.update_tooltip(value) + + def _set_readonly(self, value=True): + + palette = QtGui.QPalette() + if value: + palette.setColor(QtGui.QPalette.Base, QtCore.Qt.gray) + palette.setColor(QtGui.QPalette.Text, QtCore.Qt.darkGray) + else: + palette.setColor(QtGui.QPalette.Base, QtCore.Qt.white) + palette.setColor(QtGui.QPalette.Text, QtCore.Qt.black) + + for key in self.range_boxes.keys(): + min_box, max_box = self.range_boxes[key] + min_box.setReadOnly(value) + max_box.setReadOnly(value) + min_box.setPalette(palette) + max_box.setPalette(palette) + + self._emit_value() + + def _emit_value(self): + if not any([self.range_boxes[key][0].isReadOnly() for key in self.range_boxes.keys()]): + values = [[self.range_boxes[key][0].value(), self.range_boxes[key][-1].value()] for key in self.labels] + else: + values = [None] # if self.default_value is None else self.default_value + self.update_tooltip(values) + self.valueChanged.emit(values) + + class OptionMultiSlider(QtWidgets.QWidget): """ Option sliders for several ints or floats. Shows the value as text and can increase range diff --git a/testbeam_analysis/gui/tab_widgets/analysis_tabs.py b/testbeam_analysis/gui/tab_widgets/analysis_tabs.py index 37b60bcd..d21b625c 100644 --- a/testbeam_analysis/gui/tab_widgets/analysis_tabs.py +++ b/testbeam_analysis/gui/tab_widgets/analysis_tabs.py @@ -746,6 +746,16 @@ def __init__(self, parent, setup, options, name, tab_list): func=calculate_efficiency, optional=True) + self.add_option(option='col_range', + default_value=[[0, setup['n_pixels'][i][0]] for i in range(setup['n_duts'])], + func=calculate_efficiency, + optional=True) + + self.add_option(option='row_range', + default_value=[[0, setup['n_pixels'][i][1]] for i in range(setup['n_duts'])], + func=calculate_efficiency, + optional=True) + self.add_option(option='gui', default_value=True, func=calculate_efficiency, From 7814571d4c510002c4b3a7c621f4f517c3b62935 Mon Sep 17 00:00:00 2001 From: leloup314 Date: Wed, 2 May 2018 12:25:17 +0200 Subject: [PATCH 6/7] ENH: add to docs --- docs/GUI.rst | 31 ++++++++++++++++++++++--------- docs/_static/gui/exception_1.png | Bin 0 -> 713596 bytes docs/_static/gui/exception_2.png | Bin 0 -> 713596 bytes docs/_static/gui/setup.png | Bin 4117971 -> 4117971 bytes 4 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 docs/_static/gui/exception_1.png create mode 100644 docs/_static/gui/exception_2.png diff --git a/docs/GUI.rst b/docs/GUI.rst index 4f518134..059776ef 100644 --- a/docs/GUI.rst +++ b/docs/GUI.rst @@ -44,7 +44,7 @@ in the *tesbeam analysis* folder, the GUI can be opened from the shell via File selection ************** -The file selection tab provides a table in order to display and handle the input files of all *devices under test* (:DUT:). +The file selection tab provides a table in order to display and handle the input files of all *devices under test* (*DUT*). The input files can be selected via a button click or *dragged & dropped* onto the table area on the left-hand side of the file selection tab. After file selection, the path to each input file, the DUT name for subsequent analysis as well as the file status (each input file is checked for required information) are displayed in the table. The table entries can be moved or deleted by usinf the buttons in the *Navigation* column. @@ -68,12 +68,13 @@ Example of the file selection for FE-I4 telescope data, consisting of 4 FE-I4 pi Setup ***** -The setup tab provides a plotting area on the left-hand side of the tab in order to plot the schematic test setup as well as a tab to input setup information for each DUT on the right-hand side. +The setup tab provides a plotting area on the left-hand side of the tab in order to plot the schematic test beam setup as well as a tab to input setup information for each DUT on the right-hand side. The telescope setup is plotted from the top- (upper) and side-view (lower) with rotations shown multiplied by a factor of 10 and correct relative distances in between DUTs. Information for each DUT can be input manually or selected from a list with predefined DUT-types. This list can be extended by the current, complete information via entering a *new* name into the respective field and pressing the respective button. DUT-types can be overwritten or removed from the list by typing `name` or `:name` respectively, into the respective field and pressing -the button. Dead material (*scatter planes*) in the setup can be added by clicking the button in the upper-right corner. +the button. Dead material (*scatter planes*) in the setup can be added by clicking the button in the upper-right corner. To proceed the analyis (e.g. press the 'Ok' button), all required information regarding the setup of each DUT must be filled in. +A complete setup can be saved from and loaded into the setup tab by using the respective buttons on the bottom right-hand side. An example of the setup tab is shown below. .. image:: _static/gui/setup.png @@ -89,14 +90,11 @@ The plotting area contains the result plots of the analysis step. Result plots c The option input area contains three different types of options: -- :needed: - Options that must be set. The default value of the option is pre-set. +- :needed: Options that must be set. The default value of the option is pre-set. -- :optional: - Options that can be set but are not required. The default value is `None`. To effectively set the option, the corresponding `check box` has to be checked. +- :optional: Options that can be set but are not required. The default value is `None`. To effectively set the option, the corresponding `check box` has to be checked. -- :fixed: - Options that must not be changed. They are displayed as text at the bottom of the option area. +- :fixed: Options that must not be changed. They are displayed as text at the bottom of the option area. All options are documented and their widgets created via `introspection `_ of the corresponding function. The documentation is shown as a *tooltip* when hovering over the respective option name. Furthermore, the current value of the option is shown as a *tooltip* @@ -133,6 +131,21 @@ Re-running a tab requires to reset all subsequent analysis tabs. A complete, con Logging console on Noisy Pixel tab +Exception handling +****************** + +Exceptions which are thrown by an analysis or plotting function are handled via a separate window. The window shows the type of exceptions and allows the user to switch between the exception message +and the full traceback which also can be saved. Upon an analysis exception, the user may decide whether to reset the current tabs input to default or keep the input configuration in order to only change a single/few +input options by clicking the respective buttons. An example of the exception window can be seen below. + +.. image: _static/gui/exception_1.png + :width: 45% + +.. image: _static/gui/exception_2.png + :width: 45% + +Exception window with error message (left) and full traceback (right). + Saving/Loading sessions *********************** diff --git a/docs/_static/gui/exception_1.png b/docs/_static/gui/exception_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3df3c454a27a0210be7bb0e5d36b83c584f346 GIT binary patch literal 713596 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

Q2!V#-d`6fQ0F$dy1 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 literal 0 HcmV?d00001 diff --git a/docs/_static/gui/exception_2.png b/docs/_static/gui/exception_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6c6bed578dcf2ad0375ab44a16cba1aec1a88d GIT binary patch literal 713596 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঍LKr>aJ)`e~? z>%Hd0rQ^$d3l5Cw4%>p@|GIeKik@O=UqE|UWnWYAZljm&K9O+g*y=&_%TxU)+$<2* z)RIS2{(0-Q{?4awum2rfdSDz}@#@lwTN+NY<3C-g@3)*vhaXQWl6M{Xq1}HW)l*VfwNN|?*J33$@iyhnIu_4fDP=ttK%l#wwSyxK7RLDgZqp7_22cCYm59U z0ouIck3VRgC#~Lp=IVumQQd0~kMdvms+{W)=!czuebU5RCS$iAJ+!!U?xFF4|IF(@ z?!NiBE&m>j^3FaoDI_Khc9$TJ$Vy#Q^DlcN4yi<*eEBW))-s#>QNjN_;l1XnLn~eh zWXteK%i>ELpB3@l%*wv8E{WwlEx&8;b{7V%*#s<3Po!`~Lf*mYWu0PJ?IRr)3-tXa$H!K<+RroP`;|>kYW^m ztB@z2UHovoDMhFM^#ZV6@p`%i-C+$^V@N(b|B4q~z3Uw=uNpD|PwRM?uQG>~eGXu= zJrD4)*+ut)4Gjj~g^~gz(Ly?`!$c0eBI0 zI7c!8f|->c7TGWyc>acEasNvn4>O>-?D@v?HMEOsi?Y+2PmpuKQj@mJU5&=Ir4Ik| z((`}Cc;JekVlf%=H%cCjG}h_HJMY|zM>H9mRKibRcq>qw&Z~Hm5=6BUts$J!r{hi4 zY!@f*uLDk_eYgcD^=!I~ z9)UA@F=Q?+WVfh|rc1zoVR)Kg#B7U8`O`LBSK^!*~N zaOv@Hi}=sb6w^VS`Qv^>EjJx9)oh3tKlXv7<*AJ?O)UgZdzERY9+&9$8sVtQk4+)y zbO|=9d7tnD>Lfw^oR9o|4y+INpIz|mSM1Ot$$RbwFA+!x8>+(Bz*n*e5Iy3P} z5#3{KTRIkVEL=54G!_7><}}Jzv+U)??~3%tD8_*vn*73W>Mp@1?3B}KT(5#LkHws* zlmm}gtw(YDt(EEV$u&knJz>`XlZIQsQ!tB}A!|eW42YycvYV*oX-`VsIDXEyv-dyd z)$pHVMKX)8l8pxj!XZ0K`aQzTc?Q*SLMl>DE*R9oR$pC}N}8(P$=Y^w46i1FYJ#j4T#kzU z#8ADThj%A~)5a-$vf)ax#n>=&&_N~8o!n^I$0Mh$JAUhJW|goL2TS>XOk^CuNrbxkpRUFM}tQ-Hj#L`-iY_C?BbUUjCsY-yn%>4UX zBmLT#Y15P`6pBG$Vop)==TcaIyt?Z!d)}por5d)?plG%qWWz%eVU>;BsAEf0Aga3D z1yIdbhIer^(o_S|RV*T&7vwz>RtJ)9XLtCTAu^oQu_atad!1Ur#S!%UX1jC#TX!=D z=v(tGZrcZC-&q|X7jP-)uK@*p@5M)7ill~JxB}#-LA=D^!qI=B2Lz3Qa91PNaLN|$ z-ah=r%hiyK5SGX+|5jF$6W>*b3@=op;H2W}g2Fm)a6Aobe_lPEr$1EW6%-avr76Kh zVgXPY!>(m>Fzl+ll3KiqsfyrT6<)JS;@aza71+gC+07BB`jWK8xO>AxN;zk zE7NwgQ->8MtF@Z-wzT4B1tg~A-Tv1&w{R<|v212}dKt4MX^1gZkWagFd`=BNA6zU3 z=u?4FHW6xxApo7Rl|1o+WO7#UWNnxrhQZ(|+GK1^K|wWWDk{GoyHjO7%9$HA3Gth; z%7)4UPY{%igd1{1!@H#&4j+O3k<7$tblrD;!vK6@bV#RGx*C?glMW_V$Zy67D#k*k zpbZ??79{`kc;LHpJ!b5Qzy0Xhi)U9Bw<0q|c;JeiVo`%c)E$Zb!=AA~?)u+@wUM`k#D**~dQTN4dEmq9DwIC{Btl3Om4 zKjq65s4TLAr|Q#$0Yd~;BV`O!yOF8{2K2Q91Lob*9K7n-wTDk%ynOg?Z*822PjN(s z@R|g~TG49~16`CX=-QUIaH-~N-r9`Wa_VN%vllP#?rE#S5}}&QVzfiD>e5P39!}Hi zA79eT4Hthht3DryNn`Yy20e;`M-GUBzQm{K)SUhvmReeNz2}|H5Ijclv&&6`e2EDP zM^^+M5ZuWGdzxznPc@*D^adQfxI~P!f~OiP7NE||zVj~#wd;Y@?c>>kBWu!>SlMai zOpGS)eHE)by|fmutS55UQNV0SW2$-RsnZcA!mAa7C8(MJ3|bktpR-%=eoiP4PtjK< z&^zwDy4wwYNQVyM$T|jMZ_mJ8fQo?{J3&@vSz0-VqECfRQeDvL+LBbL_sP4B)|RH0 zvWUhE5*AaPe&%wq$!z}fF~o1?eESYO!B5F7&j1@zjjliik(D|eUWb`m%7@*nyS(J^4c#&0RS-OaZV1rFG1hydgzx-Llc;F(X%3tLaz1VTDrrrL% zQGq=EOj&tZjm*xFgp7Jn%8AB7)9jbdS)Y^~uzvoxa|11d8fsY)=juE)M5_rA2_pAOtt+MI&)vRXxaDpLW;oeEIR zC9`n1nb`_!g{8Nh8A$88^~8IJw4<3igC;w|SCJeFx>$j-)95LDPZJaN|GXjScQm^b zNc#R=G)tb`s?fKw6Fj+;~nf5z*Jy#?ku<_RxtOV8 zC7RFLlp%T(0uR!9UESzK5BEIhzbfXGzKy+^tK!_-5DX=WK&K(0eCV`DLDlJ}L0A`W zN6n9mhri-2g8-kh=I50&xx#KL#VEj*m~r~bPuLULw+{o{v#bTDM8a`uOPTOZMatn4 z2^2CDOVV-ZF>cAcR`{%kIpDbzO90OhB8Bi2sY*W?4@Z>NW?nt?1;@1o$^Wu>;Iiy$ zz&;MEs)|ieWq`+i?gF6K_w$6$8S*98M=OG!|7Z~p7(edOfsayMu zShT`jx#)F@V4O|7XuO)4$Dmo!f!bB6FA8g=>ZGKzk^CtTEFn|&8Dkf}-t#1%S5r8} zul6UEFxva*5Rs|`JNm&or?3G`8HMK;yE?!5KVO2vNCFr9B3|CxF` z&v?WbE6K^Q`4sdBGtPHFL6=>&cp9loOm-%8uZRbJUk?nU>@a_I?{nb+J*wwU>g%G1 zEB=}K>gM&dkiD_K8t^!vh^FGJoWd9TK2kcZgF@}|{`MNog72T7Cf=@?erR*6@29Vnn9hOU z1BeSFnvdBOwm%@$clfO7gFH+~<=Nlf-b;MvzWzX%k!TyH>bzi9yYv4H8l<~wimz_L z-R*N?@*Ni~^Mrb&b%Le|ME36BvDBsEZSe1oE|~vLW6-4leFF36?W37m0|ebvoL1+h zp?bax`%hMi9_mQ=bb4iU9tV%X%J4T?r=t#Q%dSHSx}9_>$|iQ&k`9+hVBbo9+#mLdbmA23Q?7^HfZ{1&%mzE7P^$ucW0uLYK*74FhpB7=8t0oM_qOb z^mny3RI5(Cy76qD`T$>DQq?z!I!V-UH6^aN5_9JEP+L{9x~-$R-1_WTEL$dcbdnST zoiQ+?_jv5k1xu#&&?~sTb>@+hHmm+|fI1}dtAvqmmu^}Mk1anQ853q*{e1tF@pmh6 zGOD4dI~8BAC&^qOm{>2Z$QC2Unr@u&80)fqs3|s$m|}n(~t|FDSl5AsQfpr zj2e4+xM(aueQj&f5JjrvIym@E7)>J<_$Csk1Er|SxU?eF+geMRNK(@=ckVuN*@-kb zf=Vbs##-U+0R{%a+^{>|Q7BT3rruq+2a2VlgQzdQxT>@>^ZUAh?`ViB;B&Ou$5Sf! zafVR*8qMwKPdMDE=$@Yj&ErfqFW?G_A@rfsIwtVK5IOAfk8$&Z+MB6Ui4?k?m202K zb(gbis#7;QX|~?{rADBsNCX*oUv2K)En~Ym=&FM9HI40kLgpO=uRg#bafdJqleUfa zvC^O@ks0P4hi|x>539vtSAIS`-rJN$BGHUJ!Zs%y_Y@0Jq_vB=wLh|xIfG25oBK>S z_^}+=$I3eCt!+7-7c~j%R{1qrS;bG+2DdR#Rl;FO z+=x!@>5yd$Pkq_`hmO@`UYO%&qfRD*ukgA=?zytfg>EqHF*o9^ey5mMki>6g>X8ZF zrfNj+F{5Lz*@rLBv7y^6cn{SrE6ExH6D&1~{3IEWAm^`u$Oe#?yphFvB8&n&pRa)6UI zg-BI5^9u)OsyWSW1snv+;RW0J+~$V+B4{NVqR20-3Vd@%rF$Lu zA-GIAm8m->^zpDYR0rQfD(kfJ9lPUk5%*pqa;3{oBXv&`x9I3cyY_{PO*P>;q5R( zhO20hyV!BTM$2-zK&`)O1$=uEZlq$fklQXc*0SGSCmXB(ACVt~f3%}%^@P9cX`IgJ zB_`W{$PL(U98RonUr{u@O1s!^nW8&>>pH<`5t#!RA;|`ll(ev>e({qbz>}f-+DLBs+L+O z8)sFE$;~eR{QC8$JL{Idrw_R91AiveDD}`wtRe2J>&Dd(nP{Gt>;W7e|K-e*eakZP zE0r{?JqK>Ny1bu`==+tHto&c9TkVgdLpsg;NOcTe6FW@o9qC_c@E>nh*{d1dy)RW7 z`b>#k-VXj~^pCgd4>SNpH~)br4ORJX*uG1A4jh6BmqBT@_;J!4EBJ*yyc_-h z?H;I2+ve#4row>~8BA}ZB_kF9%jlAroY0Z>+jT`1XbKM?W1P|6SX1~ImGL)tK*f2> z-8Ue&HdFm%Qha~vGoN6HYCFY-C3aVoRJ%Bb~4Rjou z?XU9ymaJ=P@z+`PHycEt8JVLUt-tvU*J)d$K5&NU5DeR>WMl#Y&_SBkTc=`@2}BvH zqU)0BTGnna!7`lk zcZa9rH%9byw>8vIApvHHO{efR*F{k_a#aztNN%d%bwEh4 z0UC$_H-48!ij*sbXjUW>ng;d2Z}dQ;8Zd?RZfaVu65YI&jS;nZlvmhF83~)(a2Z9^ zf0yFaUqxkCeciiwdlJrl#Il_S_C$vmyxu;tOUSXG{7Ed>c~{2t7`->mdD`A{38yxP z8$4bY(rq^QTniFkQ}8xh&3(wMwR;ZkUq87+<@x!6-J(SB8*)|nW9k4#VP>yfTbtS^@Wu4nv#)Rpee${3o*zVjY}f`;^S{9!lv z`2N%do1Ks+&u_vyK-gJeDB=x1{uDy2A|iGx-b}Ng+b_Kzzqp^1t}0c-s{20|vubOzE-&iqq^C-u zoBPg+&lEx(HzOl$^r9=XGTI^^G;>>#p8?mwK1SkbbH+fbZfaDPzccs6)rxU zSet!iNk1@`1sHa958ZVA`Y`Z;Igj9sWCgD#cf0&xUxc?AgQ{lGHgwzTGFI8^JrUmK z>Qoh-HX&PH^7^-2d*#8C*@Es{v#FJT|QN>;y{4=5rSh&1wB& z#)uQ}kP(7Oa%sKNc@$!(N@Qc@T^{Q<=_D&)&8bUqE4t^d8n*Sb*z}t65WA3^+8@V8 zE=X=WYtONLGaNr`9UioJO5ps@ZnJkE-8!?sbQ;9cd-(ZgFZW%gag&f4n-oYFa{t_%XSq zNF1n<2j-PX2R0Fq*U+hqSe+ZN?aup@q^&M02p&)f(JWbbRq}>DgVwyVox1;G{N6~z zD`O`D=&48|L@UZ)&L445ih%yrJmW!OF*e!!6V`OEuy~s5v@5y7N#(%whF`X{ z=HWWEvg?|9lp!)@q0q;m4)d05FYJ zcc102@?p!VbTClM%D%oXiRCiAH_U>Tl+u`OieYa7eTJwmK-ku0wX7o9#SfSCn|fb& z{NeST8T`t{F1))ac-mFXQQOYlypwo*WkAKgA%V-mO&k_L&<{G0c<)Z)xtKX!iuZ^3 zFM8Af_=bEAFITk}6U)6Em6(lkXip5~6Gp|1@(dazbieCUu-F=Lm z*!&KNRw!EvnB`=h_F5!Wn-Oi*c}}M2w%5Y($isE8k^v?_E@N6mRdf~gz@OlOdIWUv zsKWLdfTYM@lxP;JgjeuZkxQON<9ALhzN=UB(_U z_A)4IF(*n%jX`ARXF}3(YOSXRYkKcF^d)jWC4S>8r4Gk@;f7m=u!ipvvq1;C zV;(&DJ-~(wYcGdcqvR;yfg@caLRHW;)B`Qw1NCUp@Kil2wkofZ_m&7Uja8K++^UN+ zT(>Xk!B7C05aoau$ZhYsVlku~0=p!bYti0&nvgB^tb#EByiin0cKtc4cN( z6&84!YYf$9>`23yeY;-w)8GD4x$8Pl{sVX;OH?pBqSeweYSNF6?lI@7)3RGJA)@nI zROdd-W~p~`q{Gh{BwcS)>ax!-3u^fdn20Qro|n1uvXl?SwU~M~U?M{5T9t>q=H(OK z_Ay8vXb3o(OVKXpQnY!en^RMmQz`mVtS;3RIF1BQRvM{a3_rX3m}cZ~230teiW$lbHrRo%sD1lIgHX)`dr>&fc7+9yrZ~CUSEXE#}v( z*T-sB-jx}C<1T7UI(=%Iqq3NqN@~_LOx~mC1^ggIOl3x5YB_;!OM?)g9F}N@n^W@k z#Jf_GuCw~DoY_eZ@><%9NFLykg0;x}X1V&i0`-oh=j)=De>?6opPbDuc(U)ENHC$a z1`XJQ1W!g5r$}u@mVh2bJX-*NBcQHy;~MfKDxxVd`F&TJMA%(V$E zh@4@P6s?ymc8}wUs2@X>mj|O{IB-dyP}KGsf)Z9%&^A9u1O5;I z&TSCyw9H7G0)F5C0>~^%%_W6?o#^ucHYfsI4d?b2pD$VbBH)#B@@J`>JtM$5cax^!f zb8_EZKfLR7miffPU9`AQR!waY-#FRGYw*Rji19od8$heUN;e0p`a^hKW9s=BTdZrZQe*Q@S#K6uTZyRK{*z&<%OpnKn`XDO5RjWi{b zwMdAUYQ23*G9P#LLF`C+(uQ&U{CW?a6n*%eY6pKf7(=c&X~Q|7&jA*;u-~C%H0(gM z)q}-DdiI-of*G(r;m|-m;d2FE%X_r7GSzC-NGpomVt5BwWvL%izSjyR*O9*N!-`s6 zop~#{gjtbta8k%X!7^g`2VP&DWHs&Lh1Ef{2kXZ44;VCMZ;I{My@?0=a^HVZO!{_E zO+LGQ@sv@crYt|6Vi3Cd>YcTo{H|uxTg0`QY(3-9H0AR%2KWaryrCYp`|4&v1d60j za>Ao3+Dw_=T=Z_S(G3O$|@c zY}(q2V|3nlKOx#PCvNW0UVZ~c{j)i-$f}16qpnK=tM0XFMX+Z4#2%h*?tcHgfrnZo zoq}%vpL@Wqlg$n|7N7;W;;&<{u(D70bcnn63vxZA3iz8ZE!|s-vp0D>L4``S@thjC(krqkRpLTQ4x3MA57Ga@Qr1{6We(g#QVL|2~U= z*Q-)@tvE?`b+gfLse)0$BhXzTSSR7h0EmgfQCxK+#3O+k&Ycw)`#gL8I# z{8?B-*0cACh&{B(i~h&AUznnvNYUAY~Sw3dq0Ha5uA3vTc7(OrTEj1{e2dJ zGk_x~WnEhnx#nAL8J2G5+9&$L+Ofhh`9JLxq57g8_`M!z{vkw8?u9P)1OF?Lv|H6R z_Vt|>F|H%28M=*n0QCUs0n`J(#RDyE2obB^H-3u;(LzxVpdM%< z54__Xo7e(l0h-7zm15aZW{J z3a$ON%T-OyZErgKZ7p9Ir{H=&U5eTG=ZFEsVtkT@s!@>GiGh_^h$dr@OKxak{Cr^I z;ay z<7{V7-<|Lye4L3eq>oehbj!mMy}=Q-@bs?IN;Ksjl5yDj)qQjX2H~h?=D#oot>Vpw zMK7$E#@I@JuEff{G`iD}b7cR?OJdp^;tSF~JiVE4>T1@6ZdwA}n$m7m7U}^EmeFCs z2vVn+$LHLMsNg$2uapPiDRbt4(nN+1zZbH;8LC zvE6hfzh`CTTwigqzr?0od&y@i$+YM;>VbNBpn2|HTwZRw-IunH@d1Ql zn)C8c6-AG>O%8Oo)~8d*s=D^wC&#`Ma5%(<5Nk6NmJDpl$i711@i~73;x^ksLXKSC`+jQs`(MO zDAd=<1PrQC)y>)uUVbfGh-((Qvh=?Jx(tt#S@49cwduQE7{ZZ2#gq|>3#u!K1f-pVNSuLP4}3s$F*fh zeN@0I&nRUo(QN5(OU~5-M-}x9C zZS=C;ClW3lTRn(=d8+?}n+0%FArQ&@aePSVhGggIF&A$no{d==;(#luhT1G<)~Vqg zhi=ViJ8jRogk#a&OZScNopM`@h|3d#*YTa`O!&P2YzDtIW9L8I`lP~maF{vw$*{KI zO`bu(%#DZ6UpcpXdb=N+1_y3U6*PPTMG#l&Qij8-EGZIMipzvp8F9C8J4q!;lV-nc zzx?v6l;;O~YB5u{2l!1tN9eaY?$XH(LsYNL?d8AbJ@54v&`JV3j44Yw_@de<$R3^> z7)NWjbkF8cV<1^c%hQQo@nYue?TH`qYNT5JYUF~NiXqJRBu=x#Bp2M<9XI)$Y(Usb zi#w7|>pa1UhG`HXS@IMi5SS&B){(O2>z;^M;>bh)C4WeqZ^NxM5@)Rr*NLA{iB2+7 z-l~*seL9VaEoeVu&zVanw$JUOo%IdEF>uPBE$-4|`gv@RMF-Ab_;=&fPULS{(gD8` zW`a#=O(g0Mr~KuzZho_`sSI3o?9%yNVf)tpdJ|Kh9f&6b}oU@`8dp4mXZW0w8lE!uH*q^GKV9Ay)AtbX2574 zmnj4S^Rkw|nqp4X8zg`a1ITe-9fn72My-@+4lC=lue!3s>J&gG=5ScqXMEMEt(J0u zw^E5~zaMbb^bmNN9A`r@ z?sXN3pyYNK1bx`x&M*slm@iH)|HJ(eH>0hQ79NKukoE0bbRWC+%-aHSNf-rHl@DQg zVL+St7_eK#fE6B*tvG413*BPq{apE2$dNh^$%3C}+prD%?nsjqzM1357CXVtzTVH2 zYCq*cp16M8w8+-FM*iYHCQ}HeuV&P>GOgjpWVG|3sgzqyBRbgzl_?q7#YhYMc=s}< z*p9!OBd&rZDfjDv_H4TQ^4Eou5b-ZoFIDbZD*6xa+mViXjE1YluFV1ZH%ncaRwJK) z{)FkpT|p4VLon)Ev)G<-q5-aW79K+a>Iqbt8)wC7xPr$zmVwP>oIVTkUhJC|*xbQH zmrkYV7`EI0Iq%!^EX7+N9g|M>xPRx2UAX7`!;d*qyTa0Mm#+O}v>e|?>`@v=&~F)H zFHAm_rs5$5!LZ$=W;!V`$3KDVKYqsTZO=+lSZM??L(hs z{d$;Dkt;>b!sytI{pZS!vhCdFvbB&Eupm&WHUr!xH&7+%S03lETa9iiUUCG_Y%s#h zfb-(~7x6uqoZDgGfGjsLSIDqaV+}(x@?Cc;<-@%bI~I@eb0~hWcXlri&oD4MAs&V` z6jVh%gv)vjLBG|+W~9XME8mfJElxRf_=|4mac)c`M#ViOm*p$kE58qFjWM;1J9?YS zzs!_tHI3+G8&p9~th9xnPCVt9^%$+>X@~RvPy)|>WRO#Z-!3UjBHw>F9}d1QwGHko zwKvkS>Cwd?@6qj_rN8CHoj@@$*5PHn1+L)W1_@LlftoYuAnF+ENFP}8f1DcHb;8q@ zGgicGaW`jE_$k|Z4!ox9@|I)~bnJM>+~s@b^jeiIWV!f^T@fDE(-QF~T>A5@x3P@p z79qEk(mES?GN$+OM;40?hz$-3A258Rc7lCTks@GWX!3hig-R9qM`u3TZ$6xEsC`>QJ z(bN|=JU}^h{B++XzvAI@I#O3tC!wpjo9{sB4GqyehoT`jNWHd*aFD!@4GSR>; zW=!OHpK=q)2Vu4mNH5o*@@3<&(t`Jw1$YMVl&+9QQ2aByl&Io_LOkU|6_UvHA3^bt zUnK>vXS*`zN)rqDT)YkFZhQgKK`QOVoe1obK;Kk)a4jtd?mz;SAfPxnDv?FGlax)W z!kp(j@05B(?FkDME&j(T;HXg=TE<>8qP%7Z3ctL#a(L~Ouwernn%x>iHK&qId&it# zBIo6TNVQNlV*uh2^i91EL`iG`T1;w1>wW0Z`$5jzU-BH6_Cj6{AzSgMBgfNBM%~*u z$ql`-<$bv?P_4*RI;h4OhW%WOW`y|qt$=iB8riQhPLfcW5F*u#iYrLtNbg2*JWgtX zkYYxaHl<8#F#A$WDZtluiS$LhBu^E;c$)jbDJ}~Ke0!Ez+MBJpAQf3C1y#t0FhRe? z#1`ZM5tq{YwmxwDo4)UudZ^o;g7>@QvYi%3tr{gVD=j7z^HesCLd)QU+yY5NEDy}` zQe(yxc?*(5EJ`gCq`8e`BFmQz97U^dUn0$tCVZQm587VdCP&9ePn-W0Ibk4o0(5;X z0^(OxqBmrCh|5(WiA)esZ)`1^+oHI`-DFqk#B1x>=nyk8y|^pXOYx9jm|23Sh`p05 zo`lDcKxGNYUnEyHmx`tXHx9)D5<^#V=fO!jcvtEWT4iPgszsB)Ny|cQgmeCW*0-VYGLmw|>Ye-Z-n|TQ3t@R+mY2EwG3C=qkA4Ro zR$3rfGe-L9UC(kQ3Q1ff!!fA7R&wN__fp#)@d=DxDwP&~KDwprd}h6ch`n&po{TN~morYwpslZ`iTrz( zva;m%7>yRp^f)uSe}9wJlf6u`Zts{And!c0S!((w!K=hfI&51;++*1=7CQrX=P`ypO8F$z+7_ai4|*#VXhVJUWLbi8h}iLG_I zFP{94YcN#$r*oQJP(!WI)!VMOS>(w~i(e7EF+)gHb*V*j9Nv-Mebut#tygt3%DA`=Bm=OsUukJHLYtBP~w1?do|gTg(jf$1R#1;Kty5dUo@%$@I;`tW5(q zPT1(VymPO-urZw-w6l{RUjMhnlFhzG7`;?MX4Qv8(;k~AZ}FVmvERoz!JZEEl8m&Z z2Ui{$E#5!J8Pkh9uISbDhAm<&<33#TRI*|MW|YYnzmc56Y-;FVnW`%XL;pqsHD;E` zYJN!8DzPZ};Q017Ol|NFFZXV<4#dxKW;-uPC_=1LWXuwal6Q{p-pa*7kE*3bGp^?~ zdgr4YiHTzI=L;)`w0AP3X_J}8c8$6WUv?}NO|RO*CFf3%841s987*(R$jiFDs&@k; ziZ=L*SnHvi<4(0>vpZbPLh>k1T3V0gFyocT_=}(SeESd&bGo*UoL+`*gn$JQJwCPyDx5U!ZsiL2(`83JQ;4uYP3D26phWx zytSfN10$*y)zH;%_QAL*4q~%J^4Cx~DcK zVwT8qT`5abxz#`xJ}>Luw$M&4 zMl>xgs)1v>;PuZ?`%Cq`RIw33<|_M-ke~Z(?^ORLmTVm@s-A^Q>)zAC?`Me$<>x%u zJfyifgG|+T>^Lss)O07d#D*6Er7f|yMXM$Am3x1%g+cqnvg2RoEZl_zFbH6qCDy#( zmA~;S;E$>kH+6gK<~#jwKMQkF{h0BOk`@Z{*Ao!t+zN6JD&GC?3159x_tAenfLg2I zK-%bu5?g>;6QU{$#`eJiJ6Bb*{v-0zvI<)1T^O_esp4ytKSDYvL|r4m{~o{eHgniA zPpHZ2TGQ7+eW3!Y0mwC61VPVp)6OaNzve3b<*tV1fW<)q$p8I*75XiTp5dzadKSWg z1b&}D?HF|YzT7YeECO1_ev_tRMS$lZff^!!XSk1;?p{NM!D8wf0eA;i*IFFb7ZQL3 zAc4Px090UqNkhVFKmt`sz$Pkw=U-(DP?d0CUVkKkaw{{z&oe#-G?zt*qBRT3DpT-m zoGrz;$CWIFe_@uz0DE$7Rpic8;DGaJkhzwEM`VJ2=i9jz$fN3_0{0XU!SDsa$H93KFQR1j_wB4EV{I z)STM)=z)*(R=UcVZF7=#$9-qF+uKadKW?iSEYZk!^~T}Wk|ld_cx_|X+W6OGQQ{h( zu1h|;h0NR>R*zNu?ft9!@$rWfriM6D%Y98y#b{u5kN_kA3DhkDLh^* zOt@e{yGd=CUr+9nc~F-BI{flaec)RX@e{(!xU^=JZxcIXCYizlOB&8Sk*aE`KCl># zgRc9!4-$iKVb-Pgx-w4!x!

8PX28dnSYB8NA0wz2cN(i6dnfyBV*h+Ou8dobCeq z-h#vf)BM~`fm>Q#>lXc&$ES;>P~q6NY+YUDp26dMDiG3bz=FCm=kQuY>0wFQ>4m+T zfmIH4nC6WF<{V2d5<*dK-?%BmX8<;S_LI+)Dpa0I~eve<&11!TpVcU7lJeywT zoIb`2Ab)%_y_emt=!pE`*X%}?p^Zv)EqxoLmE}rwq59+fAh=H#}(=d46hfn^nsN zTabNYO8Xuwp4*JvdLk}%(*VkuiCu=qrk5!bK}mkDoEPLWAH>Qob`?T+>Bok48Wo+@ zVd25^rz6JNK3&zP)13Qx(wBD%j&1YqbvM$n8T&#-6)5Ju)}&7{Q&${)l*Un75gzzb zoZK;J^V|AUBF~7i9_%^le1;?*_v_)|3zC}7++PB8HM zIJnKgO>dn-w;sQ6a?j!*hujay8u6Mo6_P0UcE)h-4cst?`3~9svFY3c=T2 zb8r67b6pK+^_NSWC6}gb_h8`FEjB0-3I0L?b&&w}dWjXe8v~OytKmd1y&vayCvm`| zx!jlAZ)6+$k8u?_$^g$3Gw*I2+qJQ+5es-krkDp_`I(dSAzyM6qM&+I9SX9Z9#0{- zOz@Q`Dm>F|NMp+P_&2%Y$1Nn&o{<;J93tO{+vRI0akHZAZdWb@@k9Gf+jU$=u)Zw1 z>Dcw@Z^eBZ`$=-~tKj68+4@X+LGq49s$Ra~X|CgrzW(&`V$8akK`mLSXV;GOY%=8V zH{?kmCpq?`z&^y^LcAosmRZ+OM?%`!*Eym}Xq$EIZY{EjAu@p*3Yvw#uZ74&g~WDs zr1LUUkvlw%?uE+;>evnGZ$OO z`g}T}#G-d^8?j-OmU*`jdsV$mZRzj?BmfB@1QhRRG*Mx?P4F=|5f_oj+3omz+pQea z{!&L7rKu5t0rP(OEm(cn)5U~EE_pr2Z{!zc*UT72@DTToc?kopsL~fpI3cf8%N_Mv zj3mVCm^W+ZsoJ1J+1;*O2;wnUsAFwFmgY@j*wP6lnK|HzBn`=1)_*dFl+sgL`fff$ z!Dl*n*Ah3Sb+5e(*C+MZSiksJ9+wE5Elb%F>DEjwepY%BABX6Ag0>#;X)E42f##d{MkM5WG%Nn!w#QtTwLXX+6||0|CTWONHK__AQW3Yaz|p!8#}GwC z93TtG=4@?AI?1mzd3krVOgfGUG>?pa`n?F}u4BN`;{Ql3kUG`n7o_ELi8ND6g)Z|k zy$LG{reiZ8$YR5uh=knLKej*Rxo+rUf;4UQH;Swv*v*H=R6$rKh@csrOl;Yr!DRtP zTB5cEjZpOcdyxRgkkes^V`LmBB^TT{D=gus&`E(q=t7?K#c4UJg5}E_4|*c*b4D?^ z%@*|te(_ImaRcwcGnf%MM z3;fXfm~j)rZ~hcN#EiLZ0O#l0?gj!3ufZBO_Z zbN-9Cw!HMqd)^7G0^HaYB4080!epENgDrEeY`=MN>r-C+ao(sx!~JdpRjg5dzxjR# z9Y$KBzDF+`{+mr_zm!>jqFsh;*0rNy-n~sXBz;2Ckw|n~JtF5ry4bQ5SM=$8Vuj2I zv7CETECcIle?9Z?m$(NBvY#JIl|0y%NC1B!0Z2e2fePP};cztP&_I*OElY2b9TyC> zlm6jZ+oV%x!-a=e92pxq)T!iI)Z}ruiwLSNph?CZ2Rlq(K5NIVgJT=w5|4+Cy(L}Z zL!%R5K|%7>Q?c)*|8mBW*p0h*mG6xL@I$+#%bwuSo>PC#3A8JI8ogk}M~hKc{7u1i zv8sE=y!(O9onQC5_e%M_7%&iN=ail|NP|Rb)_}cyo2T3+rV>Kh_Uy~3A-G2jciOxJUD&o<2-4O!i=*WoP#na zKYbeJEFE3avv3CzfCOX+RLCq*Y!y@ZYL){TM{yNd3rbC81o0c^8G=*C$_nZsR301|)%Ab~%L0Ce5_C$$EY z1rmS+AOU#-*V@lIDr*ZMe-<8&fYDWwUfCL}`NB|P34gyetRR>j=CnQiq1a3E< z*B06W)DUb~%pXkvDziVjd7yBR03-kjKmzIrKn13b3=D?^AOT1K68NJDKn30jR+K=;oEC&*R1Rw!Oph^iq1y-dvVP=p3BmfCO0yRYdDzKU&4akU)(Q=)E{Ltm0a1`VzYd&=#P^8VMEz2|xmn03@K9K*g1r<~(5xNB|Om z1Rw!OpxOyQ1y=2dVF8c;BmfCO0@XnPDzNIH3iE^nAOT1K5~y|pP=QrDVpsqq015mR z1R9;YoDXdQ{@A93%IuGA8Ymbf00}?>kN_3|sKBu3z;loQBmfCO0)H$4sKEZ%rh$S% z0+0YC0103bfC>zY4m<}5Kmw2eB=E-)fC}u7Z5k-p-$dZYDc4@m7T|AcQCOEhjQ|N- zpi6P*up_{;kN_kA2|xmnK&=qKXJ@3>O2M#DNB|Om1Rw!O;CBeX$BDl~52l3#AOT1K z5~wu-P=VDNdRQkihQ{fC}t)=+#Wx(X2Mf&=#O(Si@2v0Z8CKN&qUe|7gQO zu^|CS01~L{1fT+|>pcM09}<8BAc6lV0SzYgA3lD}&*xK+O|?gAo!C^*St*dcX*eCp2l=yyiP-ZI$@!$s-(2Xs@Kh>JAEZ z1Zt~AV7ZWh0s%M}>kfevSEwT-wg8%^rp}8mhhaTa%+Jej+|)ye6V{zi<7OUtd3g#W z2prZO6zT{lGl3zHK&=pfgAo#tc080LL~uZCNKmNs1*Wm zFhT;-j)$edKqORu)hQi@m!eVFsWT|l5>NmF4jnxe0yW(lusldW4FNb9ApxXoV7&uF&ZCrowg;d5N5NK9vX-{&N5{D9ogA4s zqL|hD&HZ(K=eq6JGq{p+d0+o&WoXs^LH_TT3+k(OlN49kQiO#c&ny|#!P!iY#xO9m zZ{*o`^7^Y~wWw^iRs4z)i-1}*@B}1KvjoZpV{yVlH->0ZB2#GkR_>k0Y{}Sd&{kp# za3@nbQB>^^?EIFRQ;Y&&^N!i}S&|&QJ0*(3negrH6Xz$Z-HwNB^ zNneQpX>deCpXF;qtjLm{i`O=;N0G*mgjVk_H{<5cb+J9W4fix4q9qAQEL&$MQwqLX z1wlX{2r9Ypf5naV8gf?0XZ*tO7UsmPPf5>iUOajE`3VY>^cSXYCx6Gr}ERfd_Lto5*1e_7}3!0;B7xN zakWZPR$@5?m5IjBxV9!P+i}t315@p_Md88Y=Lt#$gfhG`(cvy60103bkPb$4$ZHw3 z?Bd&+2@?2sZIsuvW6a)*--cC(1{04~Y3b@jM5R)9QXDRgBi+%EK>oBw8RVmv^GKL` ze{RT@1k361*TR}J(T8>2`}Fr)=HTo9X5Bpywr>G8{h zS~;4q=uEb$lSlU%7k-Kp@$=stnAy|A7R({WcC81ky!;(JGz9ZZhsI-{<)$BLXGjK< zkFi(Wud;CoO3S(JThH%KPR?CFGYW{H*E}M%RPE3P@exHJR3L~|3!9nWYwc~hXlk2A|}WuOx@B9w%9Y5KV-jg77R zHa^c2P2N>04w9ET0;2GWC@>^1K}mjYPT7{5UjmvCM{6`QYJ%zG1)y7DMgSWq{H(_UN?5=4|KJOmsGd3;*)uc#=DNI;3>8kylQ_tSNI6jVk ze%7GPZ;RxRtK%gXslo>&{T6Pl!k2UAMO;n%g)o!bc$}1vgr*^3+Yg>T8NH%6>(b1? z$v3h9Ba&&?VRl9LcRrPBu>7RROIap8huG*~1C-0ZVh8F7z;H<54oVbJamRUkPMp|1y;1V!LETrpDLEMUy`za)}hR18y-gt0_kzM_N{C( zn)g@{{ju8|M=gXNj@fek%E1kE!7XdM3ELK)Y`JX7{fWoC^-N4yB!U*x#LCJ_^qd)V zMkGg6RNj}93yx*DE_twXj172H=iROe{auS0Vf$0Pz@s}f8olBA&Eq`vf#x;{UEV9g z=VbiXY0h@y$9kw_YQAJqsEL9R%<@_gJp5%1!)+3qt4tHF%Ec{8fXJ>>&K~m(EY}24YHaa*gfYO(g(oEq_ z`3Sf?@)#zu1t?z%7^{{ElnqSLl`OBQfWyHHioZWOFnddydHsV9-(39W?vo5{(e1K=(2k8m_TFnlD>0yv`#`n?t`$^4_PDQj;!*a zgW>1Zt`Q}ne+0&^=PfEle~Cxyk|(+UYJ7XxHAmP@LoUyn_= z`}tcjUq}|65frB$n&>d1(fpMw5Q=v!0zuB{+}iYyvtOvf&u6 z0~%6(TuR6V$_b%Iwdp6lCLkHM?P6S<5dQ^zh=!s;B1tzS1U=w4Z5tjnE3D2!<*)f z^sz5~w157-X-LI{ior#g5uAa5mp)dLAFEf$nrzDdu!yQT(k$wEYt+Bl462n>IlGaNZ=14AlJFU(9gWm&EDA1*wnIN_l5tnpLJxV zCmS8(CFxgg{G>MzZKWq3@_1d3A-2MgXFnGRwT(L1;$APDxO89Kqm-PoIiN80+M1BC2#BRYR(Cl&xBEa`ec~Q~u|%E`Hx|M~YmHRVS`=s5%0oa1D23puMDu71_a) z&6>1s=Z@Z1m1Qh$R*HSkzENFUrj0 z5@}X+X>kOa6@$djPA}q#@WBZSUWfPTHaB9y)zEW2^naZh)pOc&kI7-X*3~yaM+2~i;hKk zNn}vl7NT^LXuthSb?rOeX=zCMi_DS$;>+FlN}Gglo!bpOfdyLur+_OER}pA1qfR57 z=gg0Il-XQ&&&^zm5q&JRfiM~YR#rr{1S*>$Oa}>6F#(yuhz?>cUAN{fTQYFCR&ARb zd}}#8V&C zjV}$+1!*WY1OE9Z#7gER1D-^;1b-gNmQFdUhlzAz5%1(+3~h9lQj;&6}s$|?eycvPRw$8 zw{BE;60nm1G3j=F>S?7!AN?RYl%^%>H3_ihCtv)oXXohTDE-)5vq)$h91i?H@Y;89 z7lIrXemHjV2gTLLTnE&Ls6)i@@_Fd>kVF_z8#E@(Ho%UM`cJ&%Z-?CP*P=fNEq&{Q z)&LQZO_BtOj|RwwNPN{Nj=rcHm}_S6nP0F<4s2 z#SQpy-X6K1$wwp=MJ5`1j&R{U55IaR;#QvJz@9*Vfm50QN(-vs4i*7<9`Fbfs5JsI zy;>xLc(4$Rx-OeikNardo_B>poVH1q_WF5G?-ZFh$V@Vh_7+s+36c1NrZzbo_VmEGG)V8jOlXs}re0;ROA5a|4Vr&&}NO7Ie!`Zk#)nTy|wbVm0X0 z!IoN*ynFQO1p8^%#yYbpHoIq@>$q;r4xhN`E;*{gzQmd@zuQ1UD~ zEIi$2Ty#ss0!T}@v6c3^t1)Np^mU@^=sCGsB6~`owpq z)-HWY^N${Ag}xJ$bafCB*%dVfnog|BkOot;$wgBchc&4;_-C38&eyx6$Yw=lEMOJ$ zdD^Ot~9hH6p1AR!>7s0vHSl)HH#zv4LLlAz#Rb zilJpSD6I3=fd^OI9lzgOuilKszURmF?NKs)bhkz(_`LMgSGRAb_1zNQf%G7FXt<59 zpNEr`p787a=*Ul$#!F1W)iSl!;yE7P^8*HCOb_l{Pmh=V?c=i>cZ$aES<`^VaByW5 zT-$a08om*mOm}c~WXjK`+J-HS_`4zxT{dcKq(il=XNxhk5sC36+>a$8a|)*g*p)on zzhv_l>v4P08BbIf^@9;ftp4n8vtBrAT#`>A8`=(|!snd#UKzT*>&5A=6l%lSr%o9xSsuA^_zv*g z*{X4u5I=BXBgC`XuDBd)zie$x*vR$SLb{PH6>w{XIpowMsI!K1}6PY?n-jvDIP`WDx2F;)V3b}&qdu0%XVy^7L{J4 zt!Hl6s6(HTCdl6{ zwKA0>H^HyCZjC0;j=hLQ|8-xE6jc<3Kp@1&$9a2oQpm6NP$&pe?T6|JRC~d&07#&G z1mIwV1f)Gh!yOp%kPf{|ktV2-9rW4+=y;^`8r?7|TT3WvwECbh3<5PR3M>y2P(uI? zMo2)^H8d%(YP(TY(=$cENU6x4sbB}6*TaXLr28O=b%xe)%aZzA|FBDH}2C1 zWUq#G2u5+>6vkOZ*1uw_3w8V}8mdlL0uDw=3Jd~udd`HE z|C0#7!3YVU{Sixn>FVkNlMXx{UmJ!UwJ=(MK?A5MsI_w0bp!kU%8~Km}Gwa4=cz68I4C(hP^QW^3{hP`gsX z(jfszpr!~wWmZ$9VL6ZhBmfCO0#!-?DzGZW2{VHPAOT1K5~wKxP=VDHX;=;<00}?> tkU*6ZfC{Wial*_X0Z0H6fCOraz?=Wk9EJrV+U)uveww$z1Aoe*n!^u{0@0AgL_RMM8ChnN~)@UB8JaYRaGu!h|SX1!$!j25UtwV)Uc|mN~fztI-RZxr)2W14{w`t zk3o}G@XMAa$GJ}5s3sfL%%=>k`Wo$wY%~;JFhUJ-rtbjAEfIb0VyRUpAvAi$%z9AP zT13kjGm?B$BxXp*P(%c*i?Ethtr-TTe5f>T4RTrJDrRG0Il)uwMamc zHlpP)dnpL39|#=C#_ec@73#Ecza_NmDxrma@vU~EeK_iiNQ|Xf$eNtKj%LbH(!BHg z0Zcud{0jBasQvNe9ArY+Y-GvcgROm7QvVIwX32=jy;3w$fUYd6T8Y#8@%!MdcX*vO zY8Jmv6*+2B#l(SO#SCu1WBoMhW@Imq4Hh$|yqA`-g_8J?k1YEXv#+Ol?}g`BmJ zqKahqY``uS(NQ%&R)_Us7za|XF58nq@3TJ^k-2W{HT^Ay+d6oX2iuG(Cucp_wLGRA z!@u2yx{5-sZhAd7OUe}D<4ssQtbEBvk)jYbj)9V{p==^Dkcb!@*M#jv6ph%{yxQmP zOd)|L`x*2^=->eJ(1vUeXIC?%eKWSV6`D7yjWurSChJ9nz1g7%J#s&~0V)l{sqw5a zc^AhfFiZDtF~MhJ*?4ljKl@oC806%Au!l9)n6vKqV3ms#K_l4FW~N>1lwMz#5MlYs zz`)TUqD9j#WQv-7%HRRh*ao=64Axhpwjm#?I@d0)9t^^tWMr@hfoA4&3lL6PUuJt*NlP16de`E}zGUAqSn`4`)T%o& z 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 PC{K90`njxgN@xNAG6|K% delta 30890 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 A`v3p{ From 421cbc0618518379514a490e24bec97efe061f1c Mon Sep 17 00:00:00 2001 From: leloup314 Date: Wed, 2 May 2018 18:58:35 +0200 Subject: [PATCH 7/7] ENH: add to unit tests --- testbeam_analysis/testing/test_gui.py | 44 ++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/testbeam_analysis/testing/test_gui.py b/testbeam_analysis/testing/test_gui.py index 51e7b67e..a1908261 100644 --- a/testbeam_analysis/testing/test_gui.py +++ b/testbeam_analysis/testing/test_gui.py @@ -11,7 +11,7 @@ from testbeam_analysis.gui.tab_widgets.setup_tab import SetupTab from testbeam_analysis.gui.tab_widgets import analysis_tabs from testbeam_analysis.gui.gui_widgets.analysis_widgets import AnalysisWidget, ParallelAnalysisWidget -from testbeam_analysis.gui.gui_widgets.option_widgets import OptionSlider, OptionText, OptionBool +from testbeam_analysis.gui.gui_widgets.option_widgets import * from testbeam_analysis.gui.gui_widgets.sub_windows import IPrealignmentWindow, ExceptionWindow, SettingsWindow @@ -130,6 +130,9 @@ def test_setup_tab(self): self.assertListEqual(sorted(properties.values()), sorted([str(r) for r in self.dut_types['FE-I4'].values()])) + # Load test setup again + self.setup_tab.load_setup(setup=self.test_setup) + # Add scatter plane and check if tab is created self.setup_tab._add_dut('Scatter_plane', scatter_plane=True) dut_names = self.test_setup['dut_names'][:] @@ -141,9 +144,18 @@ def test_analysis_widget(self): """Test analysis widget""" # Make arbitrary function - def some_func(a=1, b='String', c=3.14159265, d=True): + def some_func(a=1, b='String', c=3.14159265, d=True, col_range=None, some_iterable=None): + ''' Some docstring of some func + + Parameters + ---------- + col_range : iterable + Iterable of ranges. + some_iterable : iterable + Its an iterable + ''' if d: - return b*(a * int(c)) + return b*(a * int(c)), col_range, some_iterable # Test default settings self.assertEqual(self.analysis_widget.isFinished, False) @@ -152,18 +164,40 @@ def some_func(a=1, b='String', c=3.14159265, d=True): # Add function and check self.analysis_widget.add_function(some_func) - self.assertListEqual(list(self.analysis_widget.calls.values()), [{'a': 1, 'b': 'String', 'c': 3.14159265, 'd': True}]) + # Add option and check + self.analysis_widget.add_option(option='col_range', func=some_func, + default_value=[[0, 80]] * self.test_setup['n_duts'], + optional=False) + + self.assertListEqual(list(self.analysis_widget.calls.values()), [{'a': 1, 'b': 'String', 'c': 3.14159265, 'd': True, + 'col_range':[[0, 80]] * self.test_setup['n_duts'], + 'some_iterable': None}]) # Change existing option and check self.analysis_widget.add_option(option='a', func=some_func, default_value=2) - self.assertListEqual(list(self.analysis_widget.calls.values()), [{'a': 2, 'b': 'String', 'c': 3.14159265, 'd': True}]) + # Check + self.assertListEqual(list(self.analysis_widget.calls.values()), [{'a': 2, 'b': 'String', 'c': 3.14159265, 'd': True, + 'col_range': [[0, 80]] * self.test_setup['n_duts'], + 'some_iterable': None}]) + + # Load some values in OptionMultiRangeBox + self.analysis_widget.option_widgets['col_range'].load_value([[0, 10]] * self.test_setup['n_duts']) + + # Get these values again + values = [[self.analysis_widget.option_widgets['col_range'].range_boxes[key][0].value(), + self.analysis_widget.option_widgets['col_range'].range_boxes[key][-1].value()] for key in self.test_setup['dut_names']] + + # Check values again + self.assertListEqual(values, [[0, 10]] * self.test_setup['n_duts']) # Check for if correct widgets were created self.assertEqual(isinstance(self.analysis_widget.option_widgets['a'], OptionSlider), True) self.assertEqual(isinstance(self.analysis_widget.option_widgets['b'], OptionText), True) self.assertEqual(isinstance(self.analysis_widget.option_widgets['c'], OptionSlider), True) self.assertEqual(isinstance(self.analysis_widget.option_widgets['d'], OptionBool), True) + self.assertEqual(isinstance(self.analysis_widget.option_widgets['col_range'], OptionMultiRangeBox), True) + self.assertEqual(isinstance(self.analysis_widget.option_widgets['some_iterable'], OptionMultiSlider), True) if __name__ == '__main__':