Changeset 76567bb in sasview


Ignore:
Timestamp:
Apr 13, 2018 2:00:37 PM (6 years ago)
Author:
krzywon
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:
b9e89d5
Parents:
effdd98
Message:

Improvements to batch P(r).

Location:
src/sas/qtgui
Files:
2 edited

Legend:

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

    reffdd98 r76567bb  
    3434 
    3535 
     36# TODO: Use communicator to catch data deletions 
    3637# TODO: Update help with batch capabilities 
    37 # TODO: Method to export results in some meaningful way 
    3838class InversionWindow(QtWidgets.QDialog, Ui_PrInversion): 
    3939    """ 
     
    381381 
    382382    def showBatchOutput(self, output_data): 
     383        """ 
     384        Display the batch output in tabular form 
     385        :param output_data: Dictionary mapping filename -> P(r) instance 
     386        """ 
    383387        if self.grid_window is None: 
    384388            self.grid_window = BatchInversionOutputPanel( 
    385389                parent=self, output_data=output_data) 
     390        else: 
     391            self.grid_window.setupTable(output_data) 
    386392        self.grid_window.show() 
    387393 
     
    499505            self.dmaxWindow.close() 
    500506            self.dmaxWindow = None 
    501         current_data = self._data 
     507        self._data_list.pop(self._data) 
     508        self._data = None 
    502509        self.dataList.removeItem(self.dataList.currentIndex()) 
    503         self._data_list.pop(current_data) 
    504510        # Last file removed 
    505511        if len(self._data_list) == 0: 
     
    527533        for data_ref in self._data_list.keys(): 
    528534            self.setCurrentData(data_ref) 
     535            self.performEstimate() 
     536            self.performEstimateNT() 
     537            self.acceptAlpha() 
     538            self.acceptNoTerms() 
    529539            self.startThread() 
    530540            output[self.logic.data.filename] = self._calculator 
     
    581591        self.estimation_thread_nt.queue() 
    582592        self.estimation_thread_nt.ready(2.5) 
     593        if self.waitForEach: 
     594            if self.estimation_thread_nt.isrunning(): 
     595                self.estimation_thread_nt.update() 
    583596 
    584597    def performEstimate(self): 
     
    599612        self.estimation_thread.queue() 
    600613        self.estimation_thread.ready(2.5) 
     614        if self.waitForEach: 
     615            if self.estimation_thread.isrunning(): 
     616                self.estimation_thread.update() 
    601617 
    602618    ###################################################################### 
     
    618634        if message: 
    619635            logging.info(message) 
    620         self.performEstimateNT() 
     636        if not self.waitForEach: 
     637            self.performEstimateNT() 
    621638 
    622639    def _estimateNTCompleted(self, nterms, alpha, message, elapsed): 
  • src/sas/qtgui/Utilities/GridPanel.py

    reffdd98 r76567bb  
    295295        """ 
    296296        # headers 
    297         param_list = ['Filename', 'Rg', 'Chi^2/dof', 'I(Q=0)', 'Oscillations', 
    298                       'Background', 'P+ Fraction', 'P+1-theta Fraction', 
    299                       'Calculation Time'] 
    300         # P(r) keys 
    301         pr_keys = ['background', ] 
     297        param_list = ['Filename', 'Rg [à
     298]', 'χ^2/dof', 'I(Q=0)', 'Oscillations', 
     299                      'Background [à
     300^-1]', 'P+ Fraction', 'P+1-σ Fraction', 
     301                      'Calc. Time [sec]'] 
    302302 
    303303        keys = data.keys() 
     
    314314            out = pr.out 
    315315            cov = pr.cov 
     316            if out is None: 
     317                logging.warning("P(r) for {} did not converge.".format(filename)) 
     318                continue 
    316319            self.tblParams.setItem(i_row, 0, QtWidgets.QTableWidgetItem( 
    317                 GuiUtils.formatNumber(filename, high=True))) 
     320                "{}".format(filename))) 
    318321            self.tblParams.setItem(i_row, 2, QtWidgets.QTableWidgetItem( 
    319322                "{:.3g}".format(pr.chi2[0]))) 
     
    322325            self.tblParams.setItem(i_row, 8, QtWidgets.QTableWidgetItem( 
    323326                "{:.2g}".format(pr.elapsed))) 
    324             if out is not None: 
    325                 self.tblParams.setItem(i_row, 1, QtWidgets.QTableWidgetItem( 
    326                     "{:.3g}".format(pr.rg(out)))) 
    327                 self.tblParams.setItem(i_row, 3, QtWidgets.QTableWidgetItem( 
    328                     "{:.3g}".format(pr.iq0(out)))) 
    329                 self.tblParams.setItem(i_row, 4, QtWidgets.QTableWidgetItem( 
    330                     "{:.3g}".format(pr.oscillations(out)))) 
    331                 self.tblParams.setItem(i_row, 6, QtWidgets.QTableWidgetItem( 
    332                     "{:.3g}".format(pr.get_positive(out)))) 
    333                 self.tblParams.setItem(i_row, 7, QtWidgets.QTableWidgetItem( 
    334                     "{:.3g}".format(pr.get_pos_err(out, cov)))) 
    335             else: 
    336                 self.tblParams.setItem(i_row, 1, QtWidgets.QTableWidgetItem( 
    337                     "NaN")) 
    338                 self.tblParams.setItem(i_row, 3, QtWidgets.QTableWidgetItem( 
    339                     "NaN")) 
    340                 self.tblParams.setItem(i_row, 4, QtWidgets.QTableWidgetItem( 
    341                     "NaN")) 
    342                 self.tblParams.setItem(i_row, 6, QtWidgets.QTableWidgetItem( 
    343                     "NaN")) 
    344                 self.tblParams.setItem(i_row, 7, QtWidgets.QTableWidgetItem( 
    345                     "NaN")) 
     327            self.tblParams.setItem(i_row, 1, QtWidgets.QTableWidgetItem( 
     328                "{:.3g}".format(pr.rg(out)))) 
     329            self.tblParams.setItem(i_row, 3, QtWidgets.QTableWidgetItem( 
     330                "{:.3g}".format(pr.iq0(out)))) 
     331            self.tblParams.setItem(i_row, 4, QtWidgets.QTableWidgetItem( 
     332                "{:.3g}".format(pr.oscillations(out)))) 
     333            self.tblParams.setItem(i_row, 6, QtWidgets.QTableWidgetItem( 
     334                "{:.3g}".format(pr.get_positive(out)))) 
     335            self.tblParams.setItem(i_row, 7, QtWidgets.QTableWidgetItem( 
     336                "{:.3g}".format(pr.get_pos_err(out, cov)))) 
    346337 
    347338        self.tblParams.resizeColumnsToContents() 
     339 
     340    @classmethod 
     341    def onHelp(cls): 
     342        """ 
     343        Open a local url in the default browser 
     344        """ 
     345        # TODO: Add anchor to batch fitting help when written 
     346        location = GuiUtils.HELP_DIRECTORY_LOCATION 
     347        url = "/user/sasgui/perspectives/pr/pr_help.html" 
     348        try: 
     349            webbrowser.open('file://' + os.path.realpath(location + url)) 
     350        except webbrowser.Error as ex: 
     351            logging.warning("Cannot display help. %s" % ex) 
Note: See TracChangeset for help on using the changeset viewer.