コード例 #1
0
    def run(self):
        blendranges = []
        submodel_blend_names = []
        submodel_predictions = []
        datakey = self.chooseDatacomboBox.currentText()
        refcol = ('comp', self.optimizeSubRangesComboBox.currentText())

        # start with the low model
        blendranges.append(
            [-9999, float(self.lowPredictionMaxSpinBox.value())])
        submodel_blend_names.append(self.lowPredictionComboBox.currentText())
        submodel_predictions.append(
            self.data[datakey].df[('predict',
                                   self.lowPredictionComboBox.currentText())])

        # append the intermediate submodels
        for i in range(0, self.index):
            temp_vals = self.subwidgets[i].getValues()
            blendranges.append(temp_vals[1])
            submodel_blend_names.append(temp_vals[0])
            submodel_predictions.append(self.data[datakey].df[('predict',
                                                               temp_vals[0])])

        # append the high model
        blendranges.append(
            [float(self.highPredictionMinSpinBox.value()), 9999])
        submodel_blend_names.append(self.highPredictionComboBox.currentText())
        submodel_predictions.append(
            self.data[datakey].df[('predict',
                                   self.highPredictionComboBox.currentText())])

        # append the reference model as a catch-all
        blendranges.append([-9999, 9999])
        submodel_blend_names.append(
            self.referencePredictionComboBox.currentText())
        submodel_predictions.append(self.data[datakey].df[(
            'predict', self.referencePredictionComboBox.currentText())])

        if self.optimizeSubRangesCheckBox.isChecked():
            truevals = self.data[datakey].df[refcol]
        else:
            truevals = None

        sm_obj = sm.sm(blendranges)
        # optimize blending if reference data is provided
        if truevals is not None:
            predictions_blended = sm_obj.do_blend(submodel_predictions,
                                                  truevals=truevals)
        else:
            # otherwise just blend the predictions together
            predictions_blended = sm_obj.do_blend(submodel_predictions)

        # save the blended predictions
        self.data[datakey].df[('predict', 'Blended-Predict ' +
                               str(sm_obj.blendranges))] = predictions_blended
コード例 #2
0
    def setup(self):
        blendranges = []
        datakey = self.chooseDataComboBox.currentText()

        # start with the low model
        blendranges.append(
            [-9999, float(self.lowPredictionMaxSpinBox.value())])

        # append the intermediate submodels
        for i in range(0, self.index_spin.value()):
            temp_vals = self.subwidgets[i].getValues()
            blendranges.append(temp_vals[1])

        # append the high model
        blendranges.append(
            [float(self.highPredictionMinSpinBox.value()), 9999])

        sm_obj = sm.sm(blendranges)
        # save the blended predictions
        try:
            self.data[datakey].df[('predict', 'Blended-Predict ' +
                                   str(sm_obj.blendranges))] = 99999
        except:
            pass
コード例 #3
0
    def run(self):
        blendranges = []
        submodel_names = []
        x_ref = []
        x = []
        submodels = []

        # TODO there are some inefficiencies with this code:103:111
        # For example you are running through the UI to collect the data
        # And then running through the data to collect more data
        # You're doing this with seperate for loops. this could be done
        # with just one for loop. Example lines 103 and 111.
        self.submodel_gui_info = [[
            self.lowModelComboBox.currentText(),
            [-9999, int(self.lowModelMaxSpinBox.value())]
        ]]
        for i in range(1, self.index):
            self.submodel_gui_info.append(self.subwidgets[i].getValues())
        self.submodel_gui_info.append([
            self.highModelComboBox.currentText(),
            [int(self.highModelMinSpinBox.value()), 9999]
        ])
        self.submodel_gui_info.append(
            [self.referenceModelComboBox.currentText(), [-9999, 9999]])

        datakey = self.chooseDataComboBox.currentText()

        for sub_gui in self.submodel_gui_info:
            min_temp = sub_gui[1][0]
            max_temp = sub_gui[1][1]
            blendranges.append([min_temp, max_temp])
            submodel_names.append(sub_gui[0])

        if self.optimizeSubmodelRangesCheckBox.isChecked():
            trueval_data = self.optimizeSubmodelRangesComboBox.currentText()
        else:
            trueval_data = None

        # Check if reference data name has been provided
        # if so, get reference data values
        if trueval_data is not None:
            truevals = self.data[trueval_data].df[self.model_yvars[
                submodel_names[0]]]
        else:
            truevals = None

        # step through the submodel names and get the actual models and the x data
        for i in submodel_names:
            x.append(self.data[datakey].df[self.model_xvars[i]])
            submodels.append(self.models[i])
            if trueval_data is not None:
                x_ref.append(self.data[trueval_data].df[self.model_xvars[i]])

        # create the submodel object
        sm_obj = sm.sm(blendranges, submodels)

        # optimize blending if reference data is provided (otherwise, modelranges will be used as blending ranges)
        if truevals is not None:
            ref_predictions = sm_obj.predict(x_ref)
            ref_predictions_blended = sm_obj.do_blend(ref_predictions,
                                                      truevals=truevals)

        # get predictions for each submodel separately
        predictions = sm_obj.predict(x)

        # blend the predictions together
        predictions_blended = sm_obj.do_blend(predictions)

        # save the individual and blended predictions
        for i, j in enumerate(predictions):
            self.data[datakey].df[('predict',
                                   submodel_names[i] + '-Predict')] = j
        self.data[datakey].df[('predict',
                               'Blended-Predict')] = predictions_blended