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()
Beispiel #3
0
    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()
Beispiel #5
0
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
Beispiel #6
0
    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))
Beispiel #7
0
def build_hierarchical_tree(X):
    print(type(X))
    #print(X.astype(np.float32))
    return hierarchical.tree_from_linkage(X.astype(np.float32))
Beispiel #8
0
 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)