def fit(self): """ Fit a model to the data The fitting happens on a dedicated thread, to keep the UI responsive """ xlim = self.grip.range fitter = self.fitter def on_success(result): fit_result, _, _, _ = result self._report_fit(fitter.summarize(*result)) self.main.profile.plot_fit(fitter, fit_result) def on_fail(exc_info): exc = '\n'.join(traceback.format_exception(*exc_info)) self._report_fit("Error during fitting:\n%s" % exc) def on_done(): self.ui.fit_button.setText("Fit") self.ui.fit_button.setEnabled(True) self.canvas.draw() self.ui.fit_button.setText("Running...") self.ui.fit_button.setEnabled(False) w = Worker(self.main.profile.fit, fitter, xlim=xlim) w.result.connect(on_success) w.error.connect(on_fail) w.finished.connect(on_done) self._fit_worker = w # hold onto a reference w.start()
def _on_fit(self): """ Fit a model to the data The fitting happens on a dedicated thread, to keep the UI responsive """ if self.rng_mode.state.x_min is None or self.rng_mode.state.x_max is None: return x_range = self.rng_mode.state.x_range fitter = self.fit_function() def on_success(result): fit_results, x, y = result report = "" normalize = {} for layer_artist in fit_results: report += ("<b><font color='{0}'>{1}</font>" "</b>".format(color2hex(layer_artist.state.color), layer_artist.layer.label)) report += "<pre>" + fitter.summarize(fit_results[layer_artist], x, y) + "</pre>" if self.viewer.state.normalize: normalize[ layer_artist] = layer_artist.state.normalize_values self._report_fit(report) self._plot_fit(fitter, fit_results, x, y, normalize) def on_fail(exc_info): exc = '\n'.join(traceback.format_exception(*exc_info)) self._report_fit("Error during fitting:\n%s" % exc) def on_done(): self.ui.button_fit.setText("Fit") self.ui.button_fit.setEnabled(True) self.canvas.draw() self.ui.button_fit.setText("Running...") self.ui.button_fit.setEnabled(False) w = Worker(self._fit, fitter, xlim=x_range) w.result.connect(on_success) w.error.connect(on_fail) w.finished.connect(on_done) self._fit_worker = w # hold onto a reference w.start()
def _on_fit(self): """ Fit a model to the data The fitting happens on a dedicated thread, to keep the UI responsive """ if self.rng_mode.state.x_min is None or self.rng_mode.state.x_max is None: return x_range = self.rng_mode.state.x_range fitter = self.fit_function() def on_success(result): fit_results, x, y = result report = "" normalize = {} for layer_artist in fit_results: report += ("<b><font color='{0}'>{1}</font>" "</b>".format(color2hex(layer_artist.state.color), layer_artist.layer.label)) report += "<pre>" + fitter.summarize(fit_results[layer_artist], x, y) + "</pre>" if self.viewer.state.normalize: normalize[layer_artist] = layer_artist.state.normalize_values self._report_fit(report) self._plot_fit(fitter, fit_results, x, y, normalize) def on_fail(exc_info): exc = '\n'.join(traceback.format_exception(*exc_info)) self._report_fit("Error during fitting:\n%s" % exc) def on_done(): self.ui.button_fit.setText("Fit") self.ui.button_fit.setEnabled(True) self.canvas.draw() self.ui.button_fit.setText("Running...") self.ui.button_fit.setEnabled(False) w = Worker(self._fit, fitter, xlim=x_range) w.result.connect(on_success) w.error.connect(on_fail) w.finished.connect(on_done) self._fit_worker = w # hold onto a reference w.start()