Beispiel #1
0
 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))
Beispiel #2
0
 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()"
     ]))
Beispiel #3
0
 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()")
Beispiel #4
0
 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)
Beispiel #5
0
 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']))
Beispiel #6
0
 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()
Beispiel #7
0
 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()
Beispiel #9
0
    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()))
Beispiel #10
0
    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()
Beispiel #11
0
    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()")
Beispiel #12
0
 def onRemoveGaussian(self):
     chisurf.run(
         "for f in cs.current_fit:\n" \
         "   f.model.%s.pop()\n" \
         "   f.model.update()" % self.name
     )
Beispiel #13
0
 def onAddGaussian(self):
     chisurf.run(
         "for f in cs.current_fit:\n" \
         "   f.model.%s.append()\n" \
         "   f.model.update()" % self.name
     )
Beispiel #14
0
 def onRemoveLifetime(self):
     chisurf.run("chisurf.macros.tcspc.remove_lifetime('%s')" % self.name)
Beispiel #15
0
 def onAddLifetime(self):
     chisurf.run("chisurf.macros.tcspc.add_lifetime('%s')" % self.name)
Beispiel #16
0
 def onAbsoluteAmplitudes(self):
     chisurf.run("chisurf.macros.tcspc.absolute_amplitudes(%s)",
                 self.absolute_amplitude.isChecked())
Beispiel #17
0
 def onNormalizeAmplitudes(self):
     chisurf.run("chisurf.macros.tcspc.normalize_lifetime_amplitudes(%s)",
                 self.normalize_amplitude.isChecked())
Beispiel #18
0
 def onRunMacro(self):
     filename = chisurf.widgets.get_filename("Python macros",
                                             file_type="Python file (*.py)")
     chisurf.run("chisurf.console.run_macro(filename='%s')" % filename)
Beispiel #19
0
 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()]))
Beispiel #20
0
    def onAddFRETrate(self):
        t = """
for f in cs.current_fit:
    f.model.%s.append()
            """ % self.name
        chisurf.run(t)
Beispiel #21
0
 def onAddDataset(self):
     try:
         filename = self.current_setup.controller.filename
     except AttributeError:
         filename = None
     chisurf.run('chisurf.macros.add_dataset(filename="%s")' % filename)
Beispiel #22
0
    def onRemoveFRETrate(self):
        t = """
for f in cs.current_fit:
    f.model.%s.pop()
            """ % self.name
        chisurf.run(t)
Beispiel #23
0
 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))
Beispiel #24
0
 def pop(self):
     self._distances.pop().close()
     self._amplitudes.pop().close()
     self._gb.pop().close()
     chisurf.run("cs.current_fit.update()")
Beispiel #25
0
    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()
Beispiel #26
0
 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
Beispiel #27
0
 def onRemoveRotation(self):
     chisurf.run("\n".join([
         "for f in cs.current_fit:",
         "   f.model.anisotropy.remove_rotation()",
         "cs.current_fit.update()"
     ]))