add logging to fit exception to retain more info and find problem with #56; all references to current graph are either None or id, should close #57
This commit is contained in:
		| @@ -64,9 +64,6 @@ class Ui_BaseWindow(object): | ||||
|         icon5 = QtGui.QIcon() | ||||
|         icon5.addPixmap(QtGui.QPixmap(":/eval_t1_dock"), QtGui.QIcon.Normal, QtGui.QIcon.Off) | ||||
|         self.tabWidget.addTab(self.t1tauwidget, icon5, "") | ||||
|         self.drawingswidget = DrawingsWidget() | ||||
|         self.drawingswidget.setObjectName("drawingswidget") | ||||
|         self.tabWidget.addTab(self.drawingswidget, "") | ||||
|         self.integralwidget = IntegralWidget() | ||||
|         self.integralwidget.setObjectName("integralwidget") | ||||
|         self.tabWidget.addTab(self.integralwidget, "") | ||||
| @@ -356,8 +353,6 @@ class Ui_BaseWindow(object): | ||||
|         self.actionUpdate.setObjectName("actionUpdate") | ||||
|         self.actionMine = QtWidgets.QAction(BaseWindow) | ||||
|         self.actionMine.setObjectName("actionMine") | ||||
|         self.action_draw_object = QtWidgets.QAction(BaseWindow) | ||||
|         self.action_draw_object.setObjectName("action_draw_object") | ||||
|         self.actionBugs = QtWidgets.QAction(BaseWindow) | ||||
|         self.actionBugs.setObjectName("actionBugs") | ||||
|         self.actionShow_error_log = QtWidgets.QAction(BaseWindow) | ||||
| @@ -446,7 +441,6 @@ class Ui_BaseWindow(object): | ||||
|         self.menuWindow.addSeparator() | ||||
|         self.menuWindow.addAction(self.actionRefresh) | ||||
|         self.menuWindow.addSeparator() | ||||
|         self.menuWindow.addAction(self.action_draw_object) | ||||
|         self.menuNMR.addAction(self.t1action) | ||||
|         self.menuNMR.addAction(self.actionCalculateT1) | ||||
|         self.menuNMR.addAction(self.action_coup_calc) | ||||
| @@ -505,7 +499,6 @@ class Ui_BaseWindow(object): | ||||
|         self.tabWidget.setTabText(self.tabWidget.indexOf(self.editsignalwidget), _translate("BaseWindow", "Signals")) | ||||
|         self.tabWidget.setTabText(self.tabWidget.indexOf(self.ptsselectwidget), _translate("BaseWindow", "Pick points")) | ||||
|         self.tabWidget.setTabText(self.tabWidget.indexOf(self.t1tauwidget), _translate("BaseWindow", "SLR")) | ||||
|         self.tabWidget.setTabText(self.tabWidget.indexOf(self.drawingswidget), _translate("BaseWindow", "Drawings")) | ||||
|         self.tabWidget.setTabText(self.tabWidget.indexOf(self.integralwidget), _translate("BaseWindow", "Integrate")) | ||||
|         self.menuFile.setTitle(_translate("BaseWindow", "&File")) | ||||
|         self.menuSave.setTitle(_translate("BaseWindow", "&Save...")) | ||||
| @@ -574,7 +567,6 @@ class Ui_BaseWindow(object): | ||||
|         self.actionFit_parameter_saving.setText(_translate("BaseWindow", "Fit parameter saving...")) | ||||
|         self.actionShow_fit_parameter.setText(_translate("BaseWindow", "Parameter...")) | ||||
|         self.actionSkip_points.setText(_translate("BaseWindow", "Skip points...")) | ||||
|         self.actionGuide_lines.setText(_translate("BaseWindow", "Draw lines...")) | ||||
|         self.actionMaximize.setText(_translate("BaseWindow", "Maximize")) | ||||
|         self.actionTile.setText(_translate("BaseWindow", "Tile windows")) | ||||
|         self.actionTileVertical.setText(_translate("BaseWindow", "Tile windows vertically")) | ||||
| @@ -622,7 +614,6 @@ class Ui_BaseWindow(object): | ||||
|         self.actionTetris.setText(_translate("BaseWindow", "Not Tetris")) | ||||
|         self.actionUpdate.setText(_translate("BaseWindow", "Look for updates")) | ||||
|         self.actionMine.setText(_translate("BaseWindow", "Mine")) | ||||
|         self.action_draw_object.setText(_translate("BaseWindow", "Draw objects...")) | ||||
|         self.actionBugs.setText(_translate("BaseWindow", "Bugs! Problems! Wishes!")) | ||||
|         self.actionShow_error_log.setText(_translate("BaseWindow", "Show error log")) | ||||
|         self.actionCreate_starter.setText(_translate("BaseWindow", "Create starter..")) | ||||
| @@ -633,6 +624,5 @@ from ..data.point_select import PointSelectWidget | ||||
| from ..data.signaledit.editsignalwidget import EditSignalWidget | ||||
| from ..data.valueeditwidget import ValueEditWidget | ||||
| from ..fit.fitwindow import QFitDialog | ||||
| from ..graphs.drawings import DrawingsWidget | ||||
| from ..lib.mdiarea import MdiAreaTile | ||||
| from ..nmr.t1widget import QT1Widget | ||||
|   | ||||
| @@ -49,7 +49,7 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog): | ||||
|         self._func_list = {} | ||||
|         self._complex = {} | ||||
|  | ||||
|         self.connected_figure = '' | ||||
|         self.connected_figure = None | ||||
|  | ||||
|         self.model_frame.hide() | ||||
|         self.preview_button.hide() | ||||
|   | ||||
| @@ -58,7 +58,7 @@ class RdBuCMap: | ||||
|         elif val < self.min: | ||||
|             col = QtGui.QColor.fromRgb(*RdBuCMap._rdbu[-1]) | ||||
|         else: | ||||
|             col = QtGui.QColor.fromRgb(*(int(self.spline[i](val)) for i in range(3))) | ||||
|             col = QtGui.QColor.fromRgbF(*(float(self.spline[i](val)) for i in range(3))) | ||||
|  | ||||
|         return col | ||||
|  | ||||
|   | ||||
| @@ -9,6 +9,7 @@ from numpy import geomspace, linspace | ||||
| from pyqtgraph import ViewBox | ||||
|  | ||||
| from nmreval.configs import * | ||||
| from nmreval.lib.logger import logger | ||||
| from nmreval.io.sessionwriter import NMRWriter | ||||
|  | ||||
| from .management import UpperManagement | ||||
| @@ -128,7 +129,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|  | ||||
|         self.datawidget.management = self.management | ||||
|         self.integralwidget.management = self.management | ||||
|         self.drawingswidget.graphs = self.management.graphs | ||||
|         # self.drawingswidget.graphs = self.management.graphs | ||||
|  | ||||
|         self.ac_group = QtWidgets.QActionGroup(self) | ||||
|         self.ac_group.addAction(self.action_lm_fit) | ||||
| @@ -161,7 +162,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|         self.actionPick_position.triggered.connect(lambda: self._show_tab('pick')) | ||||
|         self.actionIntegration.triggered.connect(lambda: self._show_tab('integrate')) | ||||
|         self.action_FitWidget.triggered.connect(lambda: self._show_tab('fit')) | ||||
|         self.action_draw_object.triggered.connect(lambda: self._show_tab('drawing')) | ||||
|  | ||||
|         self.action_new_set.triggered.connect(self.management.create_empty) | ||||
|  | ||||
| @@ -389,7 +389,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|                     self.current_graph_widget.enable_picking(False) | ||||
|  | ||||
|                     self.current_graph_widget = None | ||||
|                     self.management.current_graph = '' | ||||
|                     self.management.current_graph = None | ||||
|                     self.current_plotitem = None | ||||
|  | ||||
|                 wdgt.setParent(None) | ||||
| @@ -493,7 +493,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|             'signal': (self.editsignalwidget, 'Signals'), | ||||
|             'pick': (self.ptsselectwidget, 'Pick points'), | ||||
|             'fit': (self.fit_dialog, 'Fit'), | ||||
|             'drawing': (self.drawingswidget, 'Draw'), | ||||
|             'integrate': (self.integralwidget, 'Integrate'), | ||||
|         }[mode] | ||||
|  | ||||
| @@ -905,7 +904,9 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|  | ||||
|     @QtCore.pyqtSlot(dict, int, bool) | ||||
|     def show_fit_preview(self, funcs: dict, num: int, show: bool): | ||||
|         if self.fit_dialog.connected_figure is None: | ||||
|         if not self.fit_dialog.connected_figure: | ||||
|             logger.warning(f'Fit dialog is not connected graph: Fit {self.fit_dialog.connected_figure}, ' | ||||
|                            f'current graph: {self.management.current_graph} ({self.management.current_graph in self.management.graphs})') | ||||
|             return | ||||
|  | ||||
|         g = self.management.graphs[self.fit_dialog.connected_figure] | ||||
|   | ||||
| @@ -110,7 +110,7 @@ class UpperManagement(QtCore.QObject): | ||||
|         self.counter = 0 | ||||
|         self.data = OrderedDict() | ||||
|         self.window = window | ||||
|         self.current_graph = '' | ||||
|         self.current_graph = None | ||||
|         self.graphs = GraphDict(self.data) | ||||
|         self.namespace = None | ||||
|         self.undostack = QtWidgets.QUndoStack() | ||||
| @@ -489,12 +489,14 @@ class UpperManagement(QtCore.QObject): | ||||
|  | ||||
|     @QtCore.pyqtSlot(list, bool) | ||||
|     def end_fit(self, result: list, success: bool): | ||||
|         logger.info('FIT FINISHED') | ||||
|         if success: | ||||
|             logger.info('Successful fit') | ||||
|             self.fitFinished.emit(result) | ||||
|         else: | ||||
|             e = result[0] | ||||
|             logger.exception(e, exc_info=True) | ||||
|             QtWidgets.QMessageBox.warning(QtWidgets.QWidget(), 'Fit failed', | ||||
|                                           'Fit kaput with exception: \n' + "\n".join(result[0])) | ||||
|                                           f'Fit kaput with exception: \n\n{e!r}') | ||||
|             self.fitFinished.emit([]) | ||||
|         self._fit_active = False | ||||
|  | ||||
| @@ -1213,6 +1215,6 @@ class FitWorker(QtCore.QObject): | ||||
|             res = self.fitter.run(mode=self.mode) | ||||
|             success = True | ||||
|         except Exception as e: | ||||
|             res = [e.args] | ||||
|             res = [e] | ||||
|             success = False | ||||
|         self.finished.emit(res, success) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user