Exemplo n.º 1
0
    def validate(self):
        """ on poursuit la définition de l'analyse
        """
        # on passe à la suite seulement si le nom est valide ou
        # que l'on a une analyse à éditer. Ne marche que si les 'OU' sont
        # des 'OU SINON' et les 'ET' des 'ET ALORS'
        if self.analysis_to_edit != None or self.checkName():
            name = str(self.ui.analysisNameEdit.text())
            name = name.replace(' ','_')
            genSel = None
            # pour les cas de comparison et estimate, la selection n'influe pas sur l'écran suivant
            # on instancie donc Comparison et Estimation maintenant
            if (self.analysis_to_edit != None and self.analysis_to_edit.category == "compare") or self.ui.comparisonRadio.isChecked():
                if len(self.parent.hist_model_win.scList) >= 2:
                    if self.analysis_to_edit != None:
                        analysis = self.analysis_to_edit
                        self.parent.changeAnalysisName(analysis,name)
                    else:
                        analysis = Analysis(name,"compare")
                    if self.ui.confFdaCompareCheck.isChecked():
                        paramtxt="1"
                    else:
                        paramtxt="0"
                    analysis.fda = paramtxt
                    compFrame = SetupComparisonConfidence(analysis,self)
                    genSel = GenericScenarioSelection(len(self.parent.hist_model_win.scList),"Select the scenarios that you wish to compare",compFrame,"Comparison of scenarios",2,analysis,self)
                else:
                    QMessageBox.information(self,"Scenario error","At least 2 scenarios are needed for this analysis")
            elif (self.analysis_to_edit != None and self.analysis_to_edit.category == "estimate") or self.ui.estimateRadio.isChecked():
                if len(self.parent.hist_model_win.scList) >= 1:
                    if self.analysis_to_edit != None:
                        analysis = self.analysis_to_edit
                        self.parent.changeAnalysisName(analysis,name)
                    else:
                        analysis = Analysis(name,"estimate")
                    estimateFrame = SetupEstimationBias(analysis,self)
                    genSel = GenericScenarioSelection(len(self.parent.hist_model_win.scList),"Parameters will be estimated considering data sets simulated with",estimateFrame,"ABC parameter estimation",1,analysis,self)
                else:
                    QMessageBox.information(self,"Scenario error","At least 1 scenario is needed for this analysis")
            elif (self.analysis_to_edit != None and self.analysis_to_edit.category == "modelChecking") or self.ui.modCheckRadio.isChecked():
                if len(self.parent.hist_model_win.scList) >= 1:
                    compParamtxt = "a:"
                    if self.ui.modCheckPcaCheck.isChecked():
                        compParamtxt += "p"
                    if self.ui.modCheckLossCheck.isChecked():
                        compParamtxt += "l"

                    if self.analysis_to_edit != None:
                        analysis = self.analysis_to_edit
                        self.parent.changeAnalysisName(analysis,name)
                    else:
                        analysis = Analysis(name,"modelChecking")
                    analysis.aParams = compParamtxt
                    modCheckFrame = SetupEstimationBias(analysis,self)
                    genSel = GenericScenarioSelection(len(self.parent.hist_model_win.scList),"Parameters will be estimated considering data sets simulated with",modCheckFrame,"Model Checking",1,analysis,self)
                else:
                    QMessageBox.information(self,"Scenario error","At least 1 scenario is needed for this analysis")
            elif (self.analysis_to_edit != None and self.analysis_to_edit.category == "pre-ev") or self.ui.preEvRadio.isChecked():
                paramtxt = ""
                compParamtxt = "a:"
                if self.ui.confPcaCheck.isChecked():
                    paramtxt+= " PCA "
                    compParamtxt += "p"
                if self.ui.confPcaCheck.isChecked() and self.ui.lossCheck.isChecked():
                    paramtxt+="and"
                if self.ui.lossCheck.isChecked():
                    paramtxt+= " Locate S.S."
                    compParamtxt += "l"

                if self.analysis_to_edit == None:
                    analysis = Analysis(name,"pre-ev")
                    analysis.params = paramtxt
                    analysis.computationParameters = compParamtxt
                    self.parent.addAnalysis(analysis)
                else:
                    self.analysis_to_edit.params = paramtxt
                    self.analysis_to_edit.computationParameters = compParamtxt
                self.exit()
            elif (self.analysis_to_edit != None and self.analysis_to_edit.category == "bias") or self.ui.biasRadio.isChecked():
                if self.analysis_to_edit != None:
                    analysis = self.analysis_to_edit
                    self.parent.changeAnalysisName(analysis,name)
                else:
                    analysis = Analysis(name,"bias")
                genSel = BiasNConfidenceScenarioSelection(len(self.parent.hist_model_win.scList),analysis,self)

            elif (self.analysis_to_edit != None and "confidence" in self.analysis_to_edit.category) or self.ui.confidenceRadio.isChecked():
                if self.analysis_to_edit != None:
                    analysis = self.analysis_to_edit
                    self.parent.changeAnalysisName(analysis,name)
                else:
                    analysis = Analysis(name,"confidence")
                if self.ui.confFdaCheck.isChecked():
                    paramtxt="1"
                else:
                    paramtxt="0"
                analysis.fda = paramtxt
                genSel = ConfidenceTypeSelection(len(self.parent.hist_model_win.scList),analysis,self)
            else:
                output.notify(self,"category error","Choose an analysis type")
            if genSel != None:
                self.parent.ui.analysisStack.addWidget(genSel)
                self.parent.ui.analysisStack.removeWidget(self)
                self.parent.ui.analysisStack.setCurrentWidget(genSel)
                self.parent.parent.updateDoc(genSel)