Skip to content

Commit 8f05718

Browse files
authored
Merge pull request #400 from neontty/issue-370.2
fixes #370 -- epsilon search would crash when root node in leaf list
2 parents 97a4dcf + c41f641 commit 8f05718

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

hdbscan/_hdbscan_tree.pyx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -733,9 +733,15 @@ cpdef tuple get_clusters(np.ndarray tree, dict stability,
733733
if sub_node != node:
734734
is_cluster[sub_node] = False
735735

736-
if cluster_selection_epsilon != 0.0:
737-
eom_clusters = set([c for c in is_cluster if is_cluster[c]])
738-
selected_clusters = epsilon_search(eom_clusters, cluster_tree, cluster_selection_epsilon, allow_single_cluster)
736+
if cluster_selection_epsilon != 0.0 and cluster_tree.shape[0] > 0:
737+
eom_clusters = [c for c in is_cluster if is_cluster[c]]
738+
selected_clusters = []
739+
# first check if eom_clusters only has root node, which skips epsilon check.
740+
if (len(eom_clusters) == 1 and eom_clusters[0] == cluster_tree['parent'].min()):
741+
if allow_single_cluster:
742+
selected_clusters = eom_clusters
743+
else:
744+
selected_clusters = epsilon_search(set(eom_clusters), cluster_tree, cluster_selection_epsilon, allow_single_cluster)
739745
for c in is_cluster:
740746
if c in selected_clusters:
741747
is_cluster[c] = True

0 commit comments

Comments
 (0)