blue_sampler.sample_clusters

blue_sampler.sample_clusters(N=32768, D=2, targets=None, n_per_cluster=16)[source]

Recursively partition a point set into N balanced clusters.

At each recursion step, every cluster is split into two equal halves using a random median hyperplane. After log2(N) recursion levels, exactly N clusters are obtained.

Parameters:
  • N (int) – Number of final clusters. Must be a power of two.

  • D (int) – Ambient dimension.

  • targets (NDArray | None) – Initial atoms to clusterise. If omitted, a Sobol low-discrepancy sequence containing K = N * n_per_cluster atoms is generated automatically.

  • n_per_cluster (int) – Number of atoms per final cluster. Only used when targets is not provided.

Returns:

Collection of balanced clusters.

Return type:

NDArray

Notes

The recursive splitting procedure requires the total number of atoms K to be divisible by N.