示例#1
0
    def updateParametersTable(self):
        import Fitting
        # read the currently selected function
        currFunction = self.getCurrentFunction()
        # set the table size
        self.ui.tableParameters.setColumnCount(len(Fitting.tableHeaders))
        self.ui.tableParameters.setRowCount(len(currFunction.paramList))
        self.ui.tableParameters.setVerticalHeaderLabels(currFunction.paramList)
        self.ui.tableParameters.setHorizontalHeaderLabels(Fitting.tableHeaders)

        # set any defaults? - Handle in updatNewFunction

        # read any parameters results (if any)
        # Use Param.stderr != None to determine if a fit has been run or just read it all and set blank for None
        from itertools import izip
        for colNum, colName in izip(xrange(len(Fitting.tableHeaders)),
                                    Fitting.tableHeaders):
            for rowNum, rowName in izip(xrange(len(currFunction.paramList)),
                                        currFunction.paramList):
                #I will now hit each cell in the table
                try:
                    currParam = self.params[rowName]
                except KeyError:
                    continue
                value = Fitting.GetParameterValue(currParam, colName)
                # convert the value to a string appropriately
                if value == None or value == float('-inf') or value == float(
                        'inf'):
                    value = ''
                elif isinstance(value, bool):
                    value = '%s' % value
                else:
                    try:
                        # I'm a number
                        value = '%e' % value
                    except TypeError:
                        # I'm not a number, could be boolean or string or dict
                        value = '%s' % value
                self.ui.tableParameters.setItem(rowNum, colNum,
                                                QtGui.QTableWidgetItem(value))