def test_invalid_linkage(self): link = numpy.array( [[0.0, 1.0, 1.0, 2.0], [2.0, 1.0, 2.0, 3.0]] ) with self.assertRaises(ValueError): hierarchical.tree_from_linkage(link)
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 _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 run_orange3(Z, D): import Orange.clustering.hierarchical as orange_hier tree = orange_hier.tree_from_linkage(Z) start_time = time.time() orange_hier.optimal_leaf_ordering(tree, squareform(D)) end_time = time.time() return end_time - start_time, None
def test_linkage_from_tree(self): T = hierarchical.Tree C = hierarchical.ClusterData S = hierarchical.SingletonData def t(h: float, left: T, right: T): return T(C((left.value.first, right.value.last), h), (left, right)) def leaf(r, index): return T(S((r, r + 1), 0.0, index)) assert_array_equal(hierarchical.linkage_from_tree(leaf(0, 0)), numpy.empty((0, 4))) assert_array_equal( hierarchical.linkage_from_tree(t(1.0, leaf(0, 0), leaf(1, 1))), numpy.array([[0, 1, 1.0, 0.0]])) tree = t(1.0, t(0.2, leaf(0, 0), leaf(1, 1)), leaf(2, 2)) Z = hierarchical.linkage_from_tree(tree) assert_array_equal(Z, numpy.array([[0, 1, 0.2, 0.0], [3, 2, 1.0, 0.0]])) self.assertEqual(tree, hierarchical.tree_from_linkage(Z)) tree = t(2.0, left=t(0.5, leaf(0, 1), leaf(1, 2)), right=t( 1.0, leaf(2, 0), leaf(3, 3), )) Z = hierarchical.linkage_from_tree(tree) assert_array_equal( Z, numpy.array([[1, 2, 0.5, 0.0], [0, 3, 1.0, 0.0], [4, 5, 2.0, 0.0]])) self.assertEqual(tree, hierarchical.tree_from_linkage(Z))
def build_hierarchical_tree(X): print(type(X)) #print(X.astype(np.float32)) return hierarchical.tree_from_linkage(X.astype(np.float32))
def test_invalid_linkage(self): link = numpy.array([[0.0, 1.0, 1.0, 2.0], [2.0, 1.0, 2.0, 3.0]]) with self.assertRaises(ValueError): hierarchical.tree_from_linkage(link)