'Commit/send the current selection to the output.'

def commit(self):

    selected = indices = data = None
    if (self.data is not None):
        selectedmask = np.full(len(self.data), False, dtype=bool)
        if (self._silplot is not None):
            indices = self._silplot.selection()
            assert (np.diff(indices) > 0).all(), 'strictly    increasing'
            if (self._mask is not None):
                indices = np.flatnonzero((~ self._mask))[indices]
            selectedmask[indices] = True
        if (self._mask is not None):
            scores = np.full(shape=selectedmask.shape, fill_value=np.nan)
            scores[(~ self._mask)] = self._silhouette
        else:
            scores = self._silhouette
        silhouette_var = None
        if self.add_scores:
            var = self.cluster_var_model[self.cluster_var_idx]
            silhouette_var = Orange.data.ContinuousVariable('Silhouette    ({})'.format(escape(var.name)))
            domain = Orange.data.Domain(self.data.domain.attributes, self.data.domain.class_vars, (self.data.domain.metas + (silhouette_var,)))
            data = self.data.transform(domain)
        else:
            domain = self.data.domain
            data = self.data
        if np.count_nonzero(selectedmask):
            selected = self.data.from_table(domain, self.data, np.flatnonzero(selectedmask))
        if self.add_scores:
            if (selected is not None):
                selected[:, silhouette_var] = np.c_[scores[selectedmask]]
            data[:, silhouette_var] = np.c_[scores]
    self.Outputs.selected_data.send(selected)
    self.Outputs.annotated_data.send(create_annotated_table(data, indices))
