def onLoadFitResults(self, **kwargs): filename = chisurf.widgets.get_filename( file_type="*.json", description="Load results into fit-models", **kwargs) chisurf.run("chisurf.macros.load_fit_result(%s, %s)" % (self.fit_idx, filename))
def onConvolutionModeChanged(self): chisurf.run("\n".join([ "for f in cs.current_fit:\n" " f.model.convolve.reading_routine = '%s'\n" % self.gui_mode, "cs.current_fit.model.convolve.do_convolution = %s" % self.groupBox.isChecked(), "cs.current_fit.update()" ]))
def linkcall(): for key in self.parameter_dict: v = target.parameters_all_dict[key].value chisurf.run( "cs.current_fit.model.parameters_all_dict['%s'].value = %s" % (key, v)) chisurf.run("cs.current_fit.update()")
def onSaveFits( self, event: QtCore.QEvent = None, ): path = chisurf.widgets.get_directory() chisurf.working_path = path chisurf.run('chisurf.macros.save_fits(target_path="%s")' % path)
def init_console(self): self.verticalLayout_4.addWidget(chisurf.console) chisurf.console.pushVariables({'cs': self}) chisurf.console.pushVariables({'chisurf': chisurf}) chisurf.console.pushVariables({'np': np}) chisurf.console.pushVariables({'os': os}) chisurf.console.pushVariables({'QtCore': QtCore}) chisurf.console.pushVariables({'QtGui': QtGui}) chisurf.run = chisurf.console.execute chisurf.run(str(chisurf.settings.gui['console']['init']))
def onSetupChanged(self): chisurf.widgets.hide_items_in_layout(self.layout_experiment_reader) chisurf.run("cs.current_setup = '%s'" % self.current_setup_name) try: self.layout_experiment_reader.addWidget(self.current_setup) self.current_setup.show() except TypeError: self.layout_experiment_reader.addWidget( self.current_setup.controller) self.current_setup.controller.show()
def onExperimentChanged(self): experiment_name = self.comboBox_experimentSelect.currentText() chisurf.run("cs.current_experiment = '%s'" % experiment_name) # Add setups for selected experiment self.comboBox_setupSelect.blockSignals(True) self.comboBox_setupSelect.clear() self.comboBox_setupSelect.addItems( self.current_experiment.reader_names) self.comboBox_setupSelect.blockSignals(False) self.onSetupChanged()
def scan_parameter(self) -> None: p_min = float(self.doubleSpinBox.value()) p_max = float(self.doubleSpinBox_2.value()) _, name = self.selected_parameter v = self.model.parameter_dict[name].value v_min = (1. - p_min) * v v_max = (1. + p_max) * v n_steps = int(self.spinBox.value()) chisurf.run( "cs.current_fit.model.parameters_all_dict['%s'].scan(cs.current_fit, scan_range=(%s, %s), n_steps=%s)" % (self.parameter.name, v_min, v_max, n_steps)) self.parent.update_all()
def __init__(self, fit: chisurf.fitting.fit.Fit = None, hide_corrections: bool = False, threshold=0.9, reverse=False, enabled=False, **kwargs): """ :param fit: :param hide_corrections: :param kwargs: """ self.groupBox.setChecked(False) self.comboBox.addItems(chisurf.math.signal.window_function_types) if hide_corrections: self.hide() chisurf.fitting.widgets.make_fitting_parameter_widget( self._dead_time, layout=self.horizontalLayout_2, label_text='t<sub>dead</sub>[ns]') chisurf.fitting.widgets.make_fitting_parameter_widget( self._window_length, layout=self.horizontalLayout_2, label_text='t<sub>dead</sub>[ns]') self.lin_select = ExperimentalDataSelector( parent=None, change_event=self.onChangeLin, fit=fit, setup=chisurf.experiments.tcspc.tcspc.TCSPCReader) self.actionSelect_lintable.triggered.connect(self.lin_select.show) self.checkBox_3.toggled.connect(lambda: chisurf.run( "cs.current_fit.model.corrections.correct_pile_up = %s\n" % self. checkBox_3.isChecked())) self.checkBox_2.toggled.connect( lambda: chisurf.run("cs.current_fit.model.corrections.reverse = %s" % self.checkBox_2.isChecked())) self.checkBox.toggled.connect(lambda: chisurf.run( "cs.current_fit.model.corrections.correct_dnl = %s" % self.checkBox .isChecked())) self.comboBox.currentIndexChanged.connect(lambda: chisurf.run( "cs.current_fit.model.corrections.window_function = '%s'" % self. comboBox.currentText()))
def subWindowActivated(self): sub_window = self.mdiarea.currentSubWindow() if sub_window is not None: for f in chisurf.fits: if f == sub_window.fit: if self.current_fit is not chisurf.fits[self.fit_idx]: chisurf.run("cs.current_fit = chisurf.fits[%s]" % self.fit_idx) break self.current_fit_widget = sub_window.fit_widget window_title = chisurf.__name__ + "(" + chisurf.__version__ + "): " + self.current_fit.name self.setWindowTitle(window_title) chisurf.widgets.hide_items_in_layout(self.modelLayout) chisurf.widgets.hide_items_in_layout(self.plotOptionsLayout) self.current_fit.model.update() self.current_fit.model.show() self.current_fit_widget.show() sub_window.current_plt_ctrl.show()
def append(self, x=None, distance=None, update=True): x = 1.0 if x is None else x m = 50.0 if distance is None else distance gb = QtWidgets.QGroupBox() n_rates = len(self) gb.setTitle('G%i' % (n_rates + 1)) layout = QtWidgets.QVBoxLayout() pm = FittingParameter(name='R(%s,%i)' % (self.short, n_rates + 1), value=m, model=self.model, decimals=1, bounds_on=False, lb=chisurf.settings.fret['rda_min'], ub=chisurf.settings.fret['rda_max'], text='R', update_function=self.update) px = FittingParameter(name='x(%s,%i)' % (self.short, n_rates + 1), value=x, model=self.model, decimals=3, bounds_on=False, text='x', update_function=self.update) m = chisurf.fitting.widgets.make_fitting_parameter_widget( pm, layout=layout) x = chisurf.fitting.widgets.make_fitting_parameter_widget( px, layout=layout) gb.setLayout(layout) row = n_rates / 2 col = n_rates % 2 self.grid_layout.addWidget(gb, row, col) self._gb.append(gb) self._distances.append(m) self._amplitudes.append(x) chisurf.run("cs.current_fit.update()")
def onRemoveGaussian(self): chisurf.run( "for f in cs.current_fit:\n" \ " f.model.%s.pop()\n" \ " f.model.update()" % self.name )
def onAddGaussian(self): chisurf.run( "for f in cs.current_fit:\n" \ " f.model.%s.append()\n" \ " f.model.update()" % self.name )
def onRemoveLifetime(self): chisurf.run("chisurf.macros.tcspc.remove_lifetime('%s')" % self.name)
def onAddLifetime(self): chisurf.run("chisurf.macros.tcspc.add_lifetime('%s')" % self.name)
def onAbsoluteAmplitudes(self): chisurf.run("chisurf.macros.tcspc.absolute_amplitudes(%s)", self.absolute_amplitude.isChecked())
def onNormalizeAmplitudes(self): chisurf.run("chisurf.macros.tcspc.normalize_lifetime_amplitudes(%s)", self.normalize_amplitude.isChecked())
def onRunMacro(self): filename = chisurf.widgets.get_filename("Python macros", file_type="Python file (*.py)") chisurf.run("chisurf.console.run_macro(filename='%s')" % filename)
def onAddFit(self): chisurf.run( "chisurf.macros.add_fit(model_name='%s', dataset_indices=%s)" % (self.current_model_name, [r.row() for r in self.dataset_selector.selectedIndexes()]))
def onAddFRETrate(self): t = """ for f in cs.current_fit: f.model.%s.append() """ % self.name chisurf.run(t)
def onAddDataset(self): try: filename = self.current_setup.controller.filename except AttributeError: filename = None chisurf.run('chisurf.macros.add_dataset(filename="%s")' % filename)
def onRemoveFRETrate(self): t = """ for f in cs.current_fit: f.model.%s.pop() """ % self.name chisurf.run(t)
def onChangeLin(self): idx = self.lin_select.selected_curve_index lin_name = self.lin_select.curve_name chisurf.run("chisurf.macros.tcspc.set_linearization(%s, '%s')" % (idx, lin_name))
def pop(self): self._distances.pop().close() self._amplitudes.pop().close() self._gb.pop().close() chisurf.run("cs.current_fit.update()")
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setTitle("Rotational-times") self.lh = QtWidgets.QVBoxLayout() self.lh.setContentsMargins(0, 0, 0, 0) self.lh.setSpacing(0) self.setLayout(self.lh) self.rot_vis = False self._rho_widgets = list() self._b_widgets = list() self.radioButtonVM = QtWidgets.QRadioButton("VM") self.radioButtonVM.setToolTip( "Excitation: Vertical\nDetection: Magic-Angle") self.radioButtonVM.setChecked(True) self.radioButtonVM.clicked.connect(lambda: chisurf.run( "cs.current_fit.model.anisotropy.polarization_type = 'vm'")) self.radioButtonVM.clicked.connect(self.hide_roation_parameters) self.radioButtonVV = QtWidgets.QRadioButton("VV") self.radioButtonVV.setToolTip( "Excitation: Vertical\nDetection: Vertical") self.radioButtonVV.clicked.connect(lambda: chisurf.run( "cs.current_fit.model.anisotropy.polarization_type = 'vv'")) self.radioButtonVH = QtWidgets.QRadioButton("VH") self.radioButtonVH.setToolTip( "Excitation: Vertical\nDetection: Horizontal") self.radioButtonVH.clicked.connect(lambda: chisurf.run( "cs.current_fit.model.anisotropy.polarization_type = 'vh'")) layout = QtWidgets.QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) add_rho = QtWidgets.QPushButton() add_rho.setText("add") layout.addWidget(add_rho) add_rho.clicked.connect(self.onAddRotation) remove_rho = QtWidgets.QPushButton() remove_rho.setText("del") layout.addWidget(remove_rho) remove_rho.clicked.connect(self.onRemoveRotation) spacerItem = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) layout.addItem(spacerItem) layout.addWidget(self.radioButtonVM) layout.addWidget(self.radioButtonVV) layout.addWidget(self.radioButtonVH) self.lh.addLayout(layout) self.gb = QtWidgets.QGroupBox() self.lh.addWidget(self.gb) self.lh = QtWidgets.QVBoxLayout() self.lh.setContentsMargins(0, 0, 0, 0) self.lh.setSpacing(0) self.gb.setLayout(self.lh) layout = QtWidgets.QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) chisurf.fitting.widgets.make_fitting_parameter_widget(self._r0, label_text='r0', layout=layout) chisurf.fitting.widgets.make_fitting_parameter_widget(self._g, label_text='g', layout=layout) self.lh.addLayout(layout) layout = QtWidgets.QHBoxLayout() chisurf.fitting.widgets.make_fitting_parameter_widget(self._l1, label_text='l1', layout=layout, decimals=4) chisurf.fitting.widgets.make_fitting_parameter_widget(self._l2, label_text='l2', layout=layout, decimals=4) self.lh.addLayout(layout) self.lh.addLayout(layout) self.add_rotation() self.hide_roation_parameters()
def change_irf(self): idx = self.irf_select.selected_curve_index name = self.irf_select.curve_name chisurf.run("chisurf.macros.tcspc.change_irf(%s, '%s')" % (idx, name)) self.fwhm = self._irf.fwhm
def onRemoveRotation(self): chisurf.run("\n".join([ "for f in cs.current_fit:", " f.model.anisotropy.remove_rotation()", "cs.current_fit.update()" ]))