'Update the current computed scores.
If `measuresMask` is given it must be an list of bool values
indicating what measures should be recomputed.'

def updateScores(self, measuresMask=None):

    if (not self.data):
        return
    if self.data.has_missing():
        self.information('Missing    values    have    been    imputed.')
    measures = (self.measures + [v for (k, v) in self.learners.items()])
    if (measuresMask is None):
        measuresMask = [self.selectedMeasures.get(m.name) for m in self.measures]
        measuresMask = (measuresMask + [v.name for (k, v) in self.learners.items()])
    data = self.data
    learner_col = len(self.measures)
    if ((len(measuresMask) <= len(self.measures)) or measuresMask[len(self.measures)]):
        self.labels = []
        self.Error.inadequate_learner.clear()
    self.setStatusMessage('Running')
    with self.progressBar():
        n_measure_update = len([x for x in measuresMask if (x is not False)])
        count = 0
        for (index, (meas, mask)) in enumerate(zip(measures, measuresMask)):
            if (not mask):
                continue
            self.progressBarSet(((90 * count) / n_measure_update))
            count += 1
            if (index < len(self.measures)):
                estimator = meas.score()
                try:
                    self.measure_scores[index] = estimator(data)
                except ValueError:
                    self.measure_scores[index] = []
                    for attr in data.domain.attributes:
                        try:
                            self.measure_scores[index].append(estimator(data, attr))
                        except ValueError:
                            self.measure_scores[index].append(None)
            else:
                learner = meas.score
                if (isinstance(learner, Learner) and (not learner.check_learner_adequacy(self.data.domain))):
                    self.Error.inadequate_learner(learner.learner_adequacy_err_msg)
                    scores = table((1, len(data.domain.attributes)))
                else:
                    scores = meas.score.score_data(data)
                for (i, row) in enumerate(scores):
                    self.labels.append((meas.shortname + str((i + 1))))
                    if (len(self.measure_scores) > learner_col):
                        self.measure_scores[learner_col] = row
                    else:
                        self.measure_scores.append(row)
                    learner_col += 1
        self.progressBarSet(90)
    self.contRanksModel.setHorizontalHeaderLabels((self.contRanksLabels + self.labels))
    self.discRanksModel.setHorizontalHeaderLabels((self.discRanksLabels + self.labels))
    self.noClassRanksModel.setHorizontalHeaderLabels((self.noClassRanksLabels + self.labels))
    self.updateRankModel(measuresMask)
    self.ranksProxyModel.invalidate()
    self.selectMethodChanged()
    self.Outputs.scores.send(self.create_scores_table(self.labels))
    self.setStatusMessage('')
