def test_cluster_sigmin_pruning(reach, n_child, members): # Tests pruning left and right, insignificant splitpoints, empty nodelists # Parameters chosen specifically for this task # Case 1: Three pseudo clusters, 2 of which are too small # Case 2: Two pseudo clusters, 1 of which are too small # Normalize reach = reach / np.max(reach[1:]) ordering = np.r_[0:20] cluster_boundaries = _find_local_maxima(reach, 5) root = _TreeNode(ordering, 0, 20, None) # Build cluster tree inplace on root node _cluster_tree(root, None, cluster_boundaries, reach, ordering, 5, .75, .7, .4, .3) assert_equal(root.split_point, cluster_boundaries[0]) assert_equal(n_child, len(root.children)) assert_array_equal(members, root.children[0].points)