Ignore:
Timestamp:
Nov 24, 2017 9:57:08 AM (6 years ago)
Author:
Piotr Rozyczko <rozyczko@…>
Branches:
ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
Children:
f4480f0
Parents:
cb4d219
Message:

More inversion work on details in validation, UI design and such

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Inversion/DMaxExplorerWidget.py

    r0261bc1 r8f83719f  
    1616from PyQt5 import QtWidgets 
    1717 
    18 from twisted.internet import threads 
    19  
    2018# sas-global 
    2119from sas.qtgui.Plotting.PlotterData import Data1D 
     
    3028from sas.qtgui.Utilities.GuiUtils import enum 
    3129 
    32 W = enum( 'NPTS',           #0 
    33           'DMIN',               #1 
    34           'DMAX',               #2 
    35           'VARIABLE',         #3 
     30W = enum( 'NPTS',      #0 
     31          'DMIN',      #1 
     32          'DMAX',      #2 
     33          'VARIABLE',  #3 
    3634) 
    3735 
     
    5957        self.mapper = None 
    6058 
     59        # Add validators on line edits 
     60        self.setupValidators() 
     61 
    6162        # # Connect buttons to slots. 
    6263        # # Needs to be done early so default values propagate properly. 
     
    6970        self.setupMapper() 
    7071 
     72    def setupValidators(self): 
     73        """Add validators on relevant line edits""" 
     74        self.Npts.setValidator(QtGui.QIntValidator()) 
     75        self.minDist.setValidator(GuiUtils.DoubleValidator()) 
     76        self.maxDist.setValidator(GuiUtils.DoubleValidator()) 
     77 
    7178    def setupSlots(self): 
    7279        self.closeButton.clicked.connect(self.close) 
    73  
    7480        self.model.itemChanged.connect(self.modelChanged) 
     81        self.dependentVariable.currentIndexChanged.connect(lambda:self.modelChanged(None)) 
    7582 
    7683    def setupModel(self): 
    7784        self.model.setItem(W.NPTS, QtGui.QStandardItem(str(self.nfunc))) 
    78         self.model.setItem(W.DMIN, QtGui.QStandardItem(str(0.9*self.pr_state.d_max))) 
    79         self.model.setItem(W.DMAX, QtGui.QStandardItem(str(1.1*self.pr_state.d_max))) 
     85        self.model.setItem(W.DMIN, QtGui.QStandardItem("{:.1f}".format(0.9*self.pr_state.d_max))) 
     86        self.model.setItem(W.DMAX, QtGui.QStandardItem("{:.1f}".format(1.1*self.pr_state.d_max))) 
    8087        self.model.setItem(W.VARIABLE, QtGui.QStandardItem( "χ²/dof")) 
    8188 
     
    9198 
    9299        self.mapper.toFirst() 
     100 
     101    def variableChanged(self, index): 
     102        """ 
     103        Respond to combobox update 
     104        """ 
     105        # Just fire the model change signal, mate 
     106        pass 
    93107 
    94108    def modelChanged(self, item): 
     
    121135                bck.append(self.pr_state.background) 
    122136                chi2.append(self.pr_state.chi2) 
    123             except: 
     137            except Exception as ex: 
    124138                # This inversion failed, skip this D_max value 
    125139                msg = "ExploreDialog: inversion failed " 
    126                 msg += "for D_max=%s\n%s" % (str(x), sys.exc_info()[1]) 
     140                msg += "for D_max=%s\n%s" % (str(x), ex) 
    127141                print(msg) 
    128142                logger.error(msg) 
     
    134148        except RuntimeError as ex: 
    135149            msg = "ExploreDialog: inversion failed " 
    136             msg += "for D_max=%s\n%s" % (str(x), sys.exc_info()[1]) 
     150            msg += "for D_max=%s\n%s" % (str(x), ex) 
    137151            print(msg) 
    138152            logger.error(msg) 
    139153 
    140         plotter = str(self.model.item(W.VARIABLE).text()) 
     154        plotter = self.model.item(W.VARIABLE).text() 
     155        y_label = y_unit = "" 
     156        x_label = "D_{max}" 
     157        x_unit = "A" 
    141158        if plotter == "χ²/dof": 
    142159            ys = chi2 
     160            y_label = "\chi^2/dof" 
     161            y_unit = "a.u." 
    143162        elif plotter == "I(Q=0)": 
    144163            ys = iq0 
     164            y_label = "I(q=0)" 
     165            y_unit = "\AA^{-1}" 
    145166        elif plotter == "Rg": 
    146167            ys = rg 
     168            y_label = "R_g" 
     169            y_unit = "\AA" 
    147170        elif plotter == "Oscillation parameter": 
    148171            ys = osc 
     172            y_label = "Osc" 
     173            y_unit = "a.u." 
    149174        elif plotter == "Background": 
    150175            ys = bck 
     176            y_label = "Bckg" 
     177            y_unit = "\AA^{-1}" 
    151178        elif plotter == "Positive Fraction": 
    152179            ys = pos 
     180            y_label = "P^+" 
     181            y_unit = "a.u." 
    153182        else: 
    154183            ys = pos_err 
     184            y_label = "P^{+}_{1\sigma}" 
     185            y_unit = "a.u." 
    155186 
    156187        data = Data1D(xs, ys) 
     
    158189            self.plot.removePlot(None) 
    159190        self.hasPlot = True 
     191        data.title = plotter 
     192        data._xaxis= x_label 
     193        data._xunit = x_unit 
     194        data._yaxis = y_label 
     195        data._yunit = y_unit 
    160196        self.plot.plot(data=data, marker="-") 
Note: See TracChangeset for help on using the changeset viewer.