def test_prunning(self): pruned = hierarchical.prune(self.cluster, level=2) depths = hierarchical.cluster_depths(pruned) self.assertTrue(all(d <= 2 for d in depths.values())) pruned = hierarchical.prune(self.cluster, height=10) self.assertTrue(c.height >= 10 for c in hierarchical.preorder(pruned))
def test_prunning(self): pruned = hierarchical.prune(self.cluster, level=2) depths = hierarchical.cluster_depths(pruned) self.assertTrue(all(d <= 2 for d in depths.values())) pruned = hierarchical.prune(self.cluster, height=10) self.assertTrue(c.height >= 10 for c in hierarchical.preorder(pruned)) pruned = hierarchical.prune(self.cluster, condition=lambda cl: len(cl) <= 3) self.assertTrue(len(c) > 3 for c in hierarchical.preorder(pruned))
def _update(self): self._clear_plot() distances = self.matrix if distances is not None: # Convert to flat upper triangular distances i, j = numpy.triu_indices(distances.X.shape[0], k=1) distances = distances.X[i, j] method = LINKAGE[self.linkage].lower() Z = scipy.cluster.hierarchy.linkage(distances, method=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 _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 _update(self): self._clear_plot() distances = self.matrix if distances is not None: # Convert to flat upper triangular distances i, j = numpy.triu_indices(distances.X.shape[0], k=1) distances = distances.X[i, j] method = LINKAGE[self.linkage].lower() Z = scipy.cluster.hierarchy.linkage( distances, method=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 test_prunning(self): pruned = hierarchical.prune(self.cluster, level=2) depths = hierarchical.cluster_depths(pruned) self.assertTrue(all(d <= 2 for d in depths.values())) pruned = hierarchical.prune(self.cluster, height=10) self.assertTrue(c.height >= 10 for c in hierarchical.preorder(pruned)) top = hierarchical.top_clusters(self.cluster, 3) self.assertEqual(len(top), 3) top = hierarchical.top_clusters(self.cluster, len(self.matrix)) self.assertEqual(len(top), len(self.matrix)) self.assertTrue(all(n.is_leaf for n in top)) top1 = hierarchical.top_clusters(self.cluster, len(self.matrix) + 1) self.assertEqual(top1, top)
def _invalidate_pruning(self): if self.root: selection = self.dendrogram.selected_nodes() ranges = [node.value.range for node in selection] if self.pruning: self._set_displayed_root(prune(self.root, level=self.max_depth)) else: self._set_displayed_root(self.root) selected = [node for node in preorder(self._displayed_root) if node.value.range in ranges] self.dendrogram.set_selected_clusters(selected) self._apply_selection()
def _invalidate_pruning(self): if self.root: selection = self.dendrogram.selected_nodes() ranges = [node.value.range for node in selection] if self.pruning: self._set_displayed_root( prune(self.root, level=self.max_depth)) else: self._set_displayed_root(self.root) selected = [node for node in preorder(self._displayed_root) if node.value.range in ranges] self.dendrogram.set_selected_clusters(selected) self._apply_selection()