def _update(self): self._clear_plot() distances = self.matrix if distances is not None: method = LINKAGE[self.linkage].lower() Z = dist_matrix_linkage(distances, linkage=method) tree = tree_from_linkage(Z) self.linkmatrix = Z self.root = tree self.top_axis.setRange(tree.value.height, 0.0) self.bottom_axis.setRange(tree.value.height, 0.0) if self.pruning: self._set_displayed_root(prune(tree, level=self.max_depth)) else: self._set_displayed_root(tree) else: self.linkmatrix = None self.root = None self._set_displayed_root(None) self._apply_selection()
def recalculate_linkage(self): if self.distances is not None: self.linkage = dist_matrix_linkage(self.distances, self.LINKAGE[self.linkage_method].lower()) # Magnitude of the spinbox's step is data-dependent vals = sorted(self.linkage[:, 2]) low, up = vals[0], vals[-1] step = (up - low) / 20 self.threshold_spin.setSingleStep(step) self.threshold = np.clip(self.threshold, low, up) self.histogram.setValues([]) # without this range breaks when changing linkages self.histogram.setValues(vals) self.histogram.setRegion(0, self.threshold) self.detect_duplicates()