Open
Description
Hello,
In the radius search CPU, you are using:
tree = scipy.spatial.cKDTree(x.detach().numpy())
_, col = tree.query( y.detach().numpy(), k=max_num_neighbors, distance_upper_bound=r + 1e-8)
It seems that there is no guaranty that returned indices are randomly selected if there are more points within range r
than max_num_neighbors
.
Here is a sample code:
data = np.random.rand(100000, 3)
tree = KDTree(data)
distances, ids = tree.query([0.5,0.5,0.5], k=32, distance_upper_bound=0.2)
print(distances.max())
---> 0.044963456313535384 (reproducible if launched several times)
It seems that it searches for the knn and return only the neighbors within r
.
The right function may be query_ball_point
?