Пример #1
0
 def onFitfunctionChanged(self, row, newfitname ):
     """Swap out the fitfunction on the current analysis"""
     if self.fitfunction:
         self.currentEvaluation.fitfunctionCache[self.fitfunction.name] = StoredFitFunction.fromFitfunction( self.fitfunction )
     self.currentEvaluation.fitfunctionName = newfitname
     if newfitname in self.currentEvaluation.fitfunctionCache:
         self.currentEvaluation.fitfunction = self.currentEvaluation.fitfunctionCache[newfitname]
         self.setFitfunction(  self.currentEvaluation.fitfunction.fitfunction() )
     else:
         self.setFitfunction( fitFunctionMap[newfitname]() )
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(self.fitfunction)
     self.pushTableModel.setPushVariables(self.currentEvaluation.pushVariables, self.fitfunction)
Пример #2
0
 def onActiveAnalysisChanged(self, selected, deselected=None):
     if deselected and self.fitfunction:
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(
             self.fitfunction)
     if selected.row() >= 0:
         self.currentEvaluation = self.analysisDefinition[
             selected.row()] if self.analysisDefinition else None
         self.currentEvaluationIndex = selected.row(
         ) if self.analysisDefinition else None
         self.currentEvaluationLabel.setText(
             self.currentEvaluation.name if self.currentEvaluation else "")
         if self.currentEvaluation and self.currentEvaluation.fitfunction:
             self.setFitfunction(
                 self.currentEvaluation.fitfunction.fitfunction())
         else:
             self.setFitfunction(None)
         self.pushTableModel.setPushVariables(
             self.currentEvaluation.pushVariables
             if self.currentEvaluation else None, self.fitfunction)
     else:
         self.currentEvaluation = None
         self.currentEvaluationIndex = None
         self.currentEvaluationLabel.setText("")
         self.setFitfunction(None)
         self.pushTableModel.setPushVariables(None, self.fitfunction)
     self.setButtonEnabledState()
Пример #3
0
 def saveable(self):
     name = str(self.analysisNameComboBox.currentText())
     definition = StoredFitFunction.fromFitfunction(self.fitfunction)
     definition.name = name
     return name != '' and (
         name not in self.analysisDefinitions
         or not (self.analysisDefinitions[name] == definition))
Пример #4
0
 def onLoadFitFunction(self, name=None):
     name = str(name) if name is not None else self.currentAnalysisName
     if name in self.analysisDefinitions:
         if StoredFitFunction.fromFitfunction(
                 self.fitfunction) != self.analysisDefinitions[name]:
             self.setFitfunction(
                 self.analysisDefinitions[name].fitfunction())
Пример #5
0
 def saveable(self):
     if self.currentEvaluation is not None and self.fitfunction is not None:
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(
             self.fitfunction)
     return self.currentAnalysisName != '' and (
         self.currentAnalysisName not in self.analysisDefinitionDict
         or not (self.analysisDefinitionDict[self.currentAnalysisName]
                 == self.analysisDefinition))
Пример #6
0
 def fit(self, evaluation):
     if self.currentEvaluation is not None and evaluation == self.currentEvaluation:
         plot = self.plottedTraceDict.get(evaluation.evaluation)
         self.fitfunction.evaluate(self.globalDict)
         if plot is not None:
             sigma = None
             if plot.hasHeightColumn:
                 sigma = plot.height
             elif plot.hasTopColumn and plot.hasBottomColumn:
                 sigma = abs(plot.top + plot.bottom)
             self.fitfunction.leastsq(plot.x, plot.y, sigma=sigma)
             plot.fitFunction = copy.deepcopy(self.fitfunction)
             plot.plot(-2)
             evaluation.fitfunction = StoredFitFunction.fromFitfunction(
                 self.fitfunction)
             self.fitfunctionTableModel.fitDataChanged()
             self.fitResultsTableModel.fitDataChanged()
             replacements = self.fitfunction.replacementDict()
             replacements.update(self.globalDict)
             evaluation.updatePushVariables(replacements)
             self.pushTableModel.fitDataChanged()
     else:
         fitfunction = evaluation.fitfunction.fitfunction()
         fitfunction.evaluate(self.globalDict)
         plot = self.plottedTraceDict.get(evaluation.evaluation)
         if plot is not None:
             sigma = None
             if plot.hasHeightColumn:
                 sigma = plot.height
             elif plot.hasTopColumn and plot.hasBottomColumn:
                 sigma = abs(plot.top + plot.bottom)
             fitfunction.leastsq(plot.x, plot.y, sigma=sigma)
             plot.fitFunction = fitfunction
             plot.plot(-2)
             evaluation.fitfunction = StoredFitFunction.fromFitfunction(
                 fitfunction)
             self.fitfunctionTableModel.fitDataChanged()
             self.fitResultsTableModel.fitDataChanged()
             replacements = fitfunction.replacementDict()
             replacements.update(self.globalDict)
             evaluation.updatePushVariables(replacements)
     names = evaluation.fitfunction.fitfunction().parameterNames
     vals = evaluation.fitfunction.fitfunction().parameters
     return dict(list(zip(
         names,
         vals)))  #Return a dictionary of fit parameters and fitted values
Пример #7
0
 def autoSave(self):
     if self.parameters.autoSave:
         if self.currentEvaluation is not None and self.fitfunction is not None:
             self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction( self.fitfunction )
         self.onSave()
         self.saveButton.setEnabled( False )
     else:
         self.saveButton.setEnabled( self.saveable() )
Пример #8
0
 def autoSave(self):
     if self.parameters.autoSave:
         if self.currentEvaluation is not None and self.fitfunction is not None:
             self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(
                 self.fitfunction)
         self.onSave()
         self.saveButton.setEnabled(False)
     else:
         self.saveButton.setEnabled(self.saveable())
Пример #9
0
 def onFitfunctionChanged(self, row, newfitname):
     """Swap out the fitfunction on the current analysis"""
     if self.fitfunction:
         self.currentEvaluation.fitfunctionCache[
             self.fitfunction.name] = StoredFitFunction.fromFitfunction(
                 self.fitfunction)
     self.currentEvaluation.fitfunctionName = newfitname
     if newfitname in self.currentEvaluation.fitfunctionCache:
         self.currentEvaluation.fitfunction = self.currentEvaluation.fitfunctionCache[
             newfitname]
         self.setFitfunction(
             self.currentEvaluation.fitfunction.fitfunction())
     else:
         self.setFitfunction(fitFunctionMap[newfitname]())
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(
             self.fitfunction)
     self.pushTableModel.setPushVariables(
         self.currentEvaluation.pushVariables, self.fitfunction)
Пример #10
0
 def fit(self, evaluation):
     if self.currentEvaluation is not None and evaluation == self.currentEvaluation:
         plot = self.plottedTraceDict.get( evaluation.evaluation )
         self.fitfunction.evaluate( self.globalDict )
         if plot is not None:
             sigma = None
             if plot.hasHeightColumn:
                 sigma = plot.height
             elif plot.hasTopColumn and plot.hasBottomColumn:
                 sigma = abs(plot.top + plot.bottom)
             self.fitfunction.leastsq(plot.x, plot.y, sigma=sigma)
             plot.fitFunction = copy.deepcopy(self.fitfunction)
             plot.plot(-2)
             evaluation.fitfunction = StoredFitFunction.fromFitfunction(self.fitfunction)
             self.fitfunctionTableModel.fitDataChanged()
             self.fitResultsTableModel.fitDataChanged()
             replacements = self.fitfunction.replacementDict()
             replacements.update( self.globalDict )
             evaluation.updatePushVariables( replacements )
             self.pushTableModel.fitDataChanged()
     else:
         fitfunction = evaluation.fitfunction.fitfunction()
         fitfunction.evaluate( self.globalDict )
         plot = self.plottedTraceDict.get( evaluation.evaluation )
         if plot is not None:
             sigma = None
             if plot.hasHeightColumn:
                 sigma = plot.height
             elif plot.hasTopColumn and plot.hasBottomColumn:
                 sigma = abs(plot.top + plot.bottom)
             fitfunction.leastsq(plot.x, plot.y, sigma=sigma)
             plot.fitFunction = fitfunction
             plot.plot(-2)
             evaluation.fitfunction = StoredFitFunction.fromFitfunction(fitfunction)
             self.fitfunctionTableModel.fitDataChanged()
             self.fitResultsTableModel.fitDataChanged()
             replacements = fitfunction.replacementDict()
             replacements.update( self.globalDict )
             evaluation.updatePushVariables( replacements )
     names = evaluation.fitfunction.fitfunction().parameterNames
     vals = evaluation.fitfunction.fitfunction().parameters
     return dict(list(zip(names, vals))) #Return a dictionary of fit parameters and fitted values
Пример #11
0
 def onSaveAnalysis(self):
     name = str(self.analysisNameComboBox.currentText())
     if name:
         definition = StoredFitFunction.fromFitfunction(self.fitfunction)
         definition.name = name
         isNew = name not in self.analysisDefinitions
         self.analysisDefinitions[name] = definition
         if self.analysisNameComboBox.findText(name)<0:
             self.analysisNameComboBox.addItem(name)
         if isNew:
             self.analysisNamesChanged.emit( list(self.analysisDefinitions.keys()) )
         self.saveButton.setEnabled( False )
Пример #12
0
 def onSaveAnalysis(self):
     name = str(self.analysisNameComboBox.currentText())
     if name:
         definition = StoredFitFunction.fromFitfunction(self.fitfunction)
         definition.name = name
         isNew = name not in self.analysisDefinitions
         self.analysisDefinitions[name] = definition
         if self.analysisNameComboBox.findText(name) < 0:
             self.analysisNameComboBox.addItem(name)
         if isNew:
             self.analysisNamesChanged.emit(
                 list(self.analysisDefinitions.keys()))
         self.saveButton.setEnabled(False)
Пример #13
0
 def onActiveAnalysisChanged(self, selected, deselected=None):
     if deselected and self.fitfunction:
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(self.fitfunction)
     if selected.row()>=0:
         self.currentEvaluation = self.analysisDefinition[selected.row()] if self.analysisDefinition else None
         self.currentEvaluationIndex = selected.row() if self.analysisDefinition else None
         self.currentEvaluationLabel.setText( self.currentEvaluation.name if self.currentEvaluation else "" )
         if self.currentEvaluation and self.currentEvaluation.fitfunction:
             self.setFitfunction( self.currentEvaluation.fitfunction.fitfunction() )
         else:
             self.setFitfunction( None )
         self.pushTableModel.setPushVariables(self.currentEvaluation.pushVariables if self.currentEvaluation else None, self.fitfunction)
     else:
         self.currentEvaluation = None
         self.currentEvaluationIndex = None
         self.currentEvaluationLabel.setText( "" )
         self.setFitfunction( None )
         self.pushTableModel.setPushVariables( None, self.fitfunction)
     self.setButtonEnabledState()
Пример #14
0
 def onLoadAnalysis(self, name=None):
     name = str(name) if name is not None else str(self.analysisNameComboBox.currentText())
     if name in self.analysisDefinitions:
         if StoredFitFunction.fromFitfunction(self.fitfunction) != self.analysisDefinitions[name]:
             self.setFitfunction( self.analysisDefinitions[name].fitfunction() )
Пример #15
0
 def saveable(self):
     name = str(self.analysisNameComboBox.currentText())       
     definition = StoredFitFunction.fromFitfunction(self.fitfunction)
     definition.name = name
     return name != '' and ( name not in self.analysisDefinitions or not (self.analysisDefinitions[name] == definition) )             
Пример #16
0
 def onUseSmartStart(self, state):
     if self.fitfunction is not None:
         self.fitfunction.useSmartStartValues = state==QtCore.Qt.Checked
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(self.fitfunction)
         self.autoSave()
Пример #17
0
 def saveable(self):
     if self.currentEvaluation is not None and self.fitfunction is not None:
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction( self.fitfunction )
     return self.currentAnalysisName != '' and ( self.currentAnalysisName not in self.analysisDefinitionDict or not (self.analysisDefinitionDict[self.currentAnalysisName] == self.analysisDefinition))            
Пример #18
0
 def onUseSmartStart(self, state):
     if self.fitfunction is not None:
         self.fitfunction.useSmartStartValues = state == QtCore.Qt.Checked
         self.currentEvaluation.fitfunction = StoredFitFunction.fromFitfunction(
             self.fitfunction)
         self.autoSave()