Ignore:
Timestamp:
Nov 24, 2017 4:13:11 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:
8f83719f
Parents:
c6fb57c
Message:

Minor layout changes to corfunc. Transformed plots now in Data Explorer. SASVIEW-608

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Corfunc/CorfuncPerspective.py

    • Property mode changed from 100755 to 100644
    rd4881f6a rcb4d219  
    4343        It will also plot the extrpolation in self.extrap, if it exists.""" 
    4444 
     45        # TODO: add interactivity to axvlines so qlimits are immediately updated! 
    4546        self.fig.clf() 
    4647 
     
    103104        self.setWindowTitle("Corfunc Perspective") 
    104105 
     106        self.parent = parent 
    105107        self.mapper = None 
    106108        self.model = QtGui.QStandardItemModel(self) 
     
    108110        self._calculator = CorfuncCalculator() 
    109111        self._allow_close = True 
     112        self._model_item = None 
     113        self.txtLowerQMin.setText("0.0") 
     114        self.txtLowerQMin.setEnabled(False) 
    110115 
    111116        self._canvas = MyMplCanvas(self.model) 
    112         self._realplot = MyMplCanvas(self.model) 
    113         self.verticalLayout_7.insertWidget(0, self._canvas) 
    114         self.verticalLayout_7.insertWidget(1, self._realplot) 
     117        self.mainVerticalLayout.insertWidget(0, self._canvas) 
    115118 
    116119        # Connect buttons to slots. 
     
    126129    def setup_slots(self): 
    127130        """Connect the buttons to their appropriate slots.""" 
    128         self.extrapolateBtn.clicked.connect(self.extrapolate) 
    129         self.extrapolateBtn.setEnabled(False) 
    130         self.transformBtn.clicked.connect(self.transform) 
    131         self.transformBtn.setEnabled(False) 
    132  
    133         self.calculateBgBtn.clicked.connect(self.calculate_background) 
    134         self.calculateBgBtn.setEnabled(False) 
     131        self.cmdExtrapolate.clicked.connect(self.extrapolate) 
     132        self.cmdExtrapolate.setEnabled(False) 
     133        self.cmdTransform.clicked.connect(self.transform) 
     134        self.cmdTransform.setEnabled(False) 
     135 
     136        self.cmdCalculateBg.clicked.connect(self.calculate_background) 
     137        self.cmdCalculateBg.setEnabled(False) 
    135138 
    136139        self.model.itemChanged.connect(self.model_changed) 
     
    148151        self.model.setItem(W.W_BACKGROUND, 
    149152                           QtGui.QStandardItem("0")) 
    150         self.model.setItem(W.W_TRANSFORM, 
    151                            QtGui.QStandardItem("Fourier")) 
     153        #self.model.setItem(W.W_TRANSFORM, 
     154        #                   QtGui.QStandardItem("Fourier")) 
    152155        self.model.setItem(W.W_GUINIERA, 
    153156                           QtGui.QStandardItem("0.0")) 
     
    185188        try: 
    186189            params, extrapolation, _ = self._calculator.compute_extrapolation() 
    187             self.model.setItem(W.W_GUINIERA, QtGui.QStandardItem(str(params['A']))) 
    188             self.model.setItem(W.W_GUINIERB, QtGui.QStandardItem(str(params['B']))) 
    189             self.model.setItem(W.W_PORODK, QtGui.QStandardItem(str(params['K']))) 
     190            self.model.setItem(W.W_GUINIERA, QtGui.QStandardItem("{:.3g}".format(params['A']))) 
     191            self.model.setItem(W.W_GUINIERB, QtGui.QStandardItem("{:.3g}".format(params['B']))) 
     192            self.model.setItem(W.W_PORODK, QtGui.QStandardItem("{:.3g}".format(params['K']))) 
    190193            self.model.setItem(W.W_PORODSIGMA, 
    191                                QtGui.QStandardItem(str(params['sigma']))) 
     194                               QtGui.QStandardItem("{:.4g}".format(params['sigma']))) 
    192195 
    193196            self._canvas.extrap = extrapolation 
    194197            self._canvas.draw_q_space() 
    195             self.transformBtn.setEnabled(True) 
     198            self.cmdTransform.setEnabled(True) 
    196199        except (LinAlgError, ValueError): 
    197200            message = "These is not enough data in the fitting range. "\ 
     
    206209    def transform(self): 
    207210        """Calculate the real space version of the extrapolation.""" 
    208         method = str(self.model.item(W.W_TRANSFORM).text()).lower() 
     211        #method = self.model.item(W.W_TRANSFORM).text().lower() 
     212 
     213        method = "fourier" 
    209214 
    210215        extrap = self._canvas.extrap 
     
    226231    def finish_transform(self, transforms): 
    227232        params = self._calculator.extract_parameters(transforms[0]) 
    228         self.model.setItem(W.W_CORETHICK, 
    229                            QtGui.QStandardItem(str(params['d0']))) 
    230         self.model.setItem(W.W_INTTHICK, 
    231                            QtGui.QStandardItem(str(params['dtr']))) 
    232         self.model.setItem(W.W_HARDBLOCK, 
    233                            QtGui.QStandardItem(str(params['Lc']))) 
    234         self.model.setItem(W.W_CRYSTAL, 
    235                            QtGui.QStandardItem(str(params['fill']))) 
    236         self.model.setItem(W.W_POLY, 
    237                            QtGui.QStandardItem(str(params['A']))) 
    238         self.model.setItem(W.W_PERIOD, 
    239                            QtGui.QStandardItem(str(params['max']))) 
    240         self._realplot.data = transforms 
    241         self._realplot.draw_real_space() 
     233        self.model.setItem(W.W_CORETHICK, QtGui.QStandardItem("{:.3g}".format(params['d0']))) 
     234        self.model.setItem(W.W_INTTHICK, QtGui.QStandardItem("{:.3g}".format(params['dtr']))) 
     235        self.model.setItem(W.W_HARDBLOCK, QtGui.QStandardItem("{:.3g}".format(params['Lc']))) 
     236        self.model.setItem(W.W_CRYSTAL, QtGui.QStandardItem("{:.3g}".format(params['fill']))) 
     237        self.model.setItem(W.W_POLY, QtGui.QStandardItem("{:.3g}".format(params['A']))) 
     238        self.model.setItem(W.W_PERIOD, QtGui.QStandardItem("{:.3g}".format(params['max']))) 
     239        #self._realplot.data = transforms 
     240 
     241        self.update_real_space_plot(transforms) 
     242 
     243        #self._realplot.draw_real_space() 
     244 
     245    def update_real_space_plot(self, datas): 
     246        """take the datas tuple and create a plot in DE""" 
     247 
     248        assert isinstance(datas, tuple) 
     249        plot_id = id(self) 
     250        titles = ['1D Correlation', '3D Correlation', 'Interface Distribution Function'] 
     251        for i, plot in enumerate(datas): 
     252            plot_to_add = self.parent.createGuiData(plot) 
     253            # set plot properties 
     254            title = plot_to_add.title 
     255            plot_to_add.scale = 'linear' 
     256            plot_to_add.symbol = 'Line' 
     257            plot_to_add._xaxis = "x" 
     258            plot_to_add._xunit = "A" 
     259            plot_to_add._yaxis = "\Gamma" 
     260            if i < len(titles): 
     261                title = titles[i] 
     262                plot_to_add.name = titles[i] 
     263            GuiUtils.updateModelItemWithPlot(self._model_item, plot_to_add, title) 
     264            #self.axes.set_xlim(min(data1.x), max(data1.x) / 4) 
     265        pass 
    242266 
    243267    def setup_mapper(self): 
     
    247271        self.mapper.setModel(self.model) 
    248272 
    249         self.mapper.addMapping(self.qMin, W.W_QMIN) 
    250         self.mapper.addMapping(self.qMax1, W.W_QMAX) 
    251         self.mapper.addMapping(self.qMax2, W.W_QCUTOFF) 
    252         self.mapper.addMapping(self.bg, W.W_BACKGROUND) 
    253         self.mapper.addMapping(self.transformCombo, W.W_TRANSFORM) 
    254  
    255         self.mapper.addMapping(self.guinierA, W.W_GUINIERA) 
    256         self.mapper.addMapping(self.guinierB, W.W_GUINIERB) 
    257         self.mapper.addMapping(self.porodK, W.W_PORODK) 
    258         self.mapper.addMapping(self.porodSigma, W.W_PORODSIGMA) 
    259  
    260         self.mapper.addMapping(self.avgCoreThick, W.W_CORETHICK) 
    261         self.mapper.addMapping(self.avgIntThick, W.W_INTTHICK) 
    262         self.mapper.addMapping(self.avgHardBlock, W.W_HARDBLOCK) 
    263         self.mapper.addMapping(self.polydisp, W.W_POLY) 
    264         self.mapper.addMapping(self.longPeriod, W.W_PERIOD) 
    265         self.mapper.addMapping(self.localCrystal, W.W_CRYSTAL) 
     273        self.mapper.addMapping(self.txtLowerQMax, W.W_QMIN) 
     274        self.mapper.addMapping(self.txtUpperQMin, W.W_QMAX) 
     275        self.mapper.addMapping(self.txtUpperQMax, W.W_QCUTOFF) 
     276        self.mapper.addMapping(self.txtBackground, W.W_BACKGROUND) 
     277        #self.mapper.addMapping(self.transformCombo, W.W_TRANSFORM) 
     278 
     279        self.mapper.addMapping(self.txtGuinierA, W.W_GUINIERA) 
     280        self.mapper.addMapping(self.txtGuinierB, W.W_GUINIERB) 
     281        self.mapper.addMapping(self.txtPorodK, W.W_PORODK) 
     282        self.mapper.addMapping(self.txtPorodSigma, W.W_PORODSIGMA) 
     283 
     284        self.mapper.addMapping(self.txtAvgCoreThick, W.W_CORETHICK) 
     285        self.mapper.addMapping(self.txtAvgIntThick, W.W_INTTHICK) 
     286        self.mapper.addMapping(self.txtAvgHardBlock, W.W_HARDBLOCK) 
     287        self.mapper.addMapping(self.txtPolydisp, W.W_POLY) 
     288        self.mapper.addMapping(self.txtLongPeriod, W.W_PERIOD) 
     289        self.mapper.addMapping(self.txtLocalCrystal, W.W_CRYSTAL) 
    266290 
    267291        self.mapper.toFirst() 
     
    272296        try: 
    273297            background = self._calculator.compute_background() 
    274             temp = QtGui.QStandardItem(str(background)) 
     298            temp = QtGui.QStandardItem("{:.4g}".format(background)) 
    275299            self.model.setItem(W.W_BACKGROUND, temp) 
    276300        except (LinAlgError, ValueError): 
     
    304328        model_item = data_item[0] 
    305329        data = GuiUtils.dataFromItem(model_item) 
     330        self._model_item = model_item 
    306331        self._calculator.set_data(data) 
    307         self.calculateBgBtn.setEnabled(True) 
    308         self.extrapolateBtn.setEnabled(True) 
     332        self.cmdCalculateBg.setEnabled(True) 
     333        self.cmdExtrapolate.setEnabled(True) 
    309334 
    310335        self.model.setItem(W.W_GUINIERA, QtGui.QStandardItem("")) 
     
    322347        self._canvas.extrap = None 
    323348        self._canvas.draw_q_space() 
    324         self.transformBtn.setEnabled(False) 
    325  
    326         self._realplot.data = None 
    327         self._realplot.draw_real_space() 
     349        self.cmdTransform.setEnabled(False) 
     350 
     351        #self._realplot.data = None 
     352        #self._realplot.draw_real_space() 
    328353 
    329354    def setClosable(self, value=True): 
Note: See TracChangeset for help on using the changeset viewer.