Skip to content

Commit 3fe4a43

Browse files
mdeffnperraud
authored andcommitted
nngraph: fix radius cKDTree (PR #21)
1 parent a12eaea commit 3fe4a43

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

pygsp/graphs/nngraphs/nngraph.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,16 @@ def _radius_sp_kdtree(features, radius, metric, order):
111111
def _radius_sp_ckdtree(features, radius, metric, order):
112112
p = order if metric == 'minkowski' else _metrics['scipy-ckdtree'][metric]
113113
n_vertices, _ = features.shape
114-
kdt = spatial.cKDTree(features)
115-
nn = kdt.query_ball_point(features, r=radius, p=p, n_jobs=-1)
116-
D = []
117-
NN = []
118-
for k in range(n_vertices):
119-
x = np.tile(features[k, :], (len(nn[k]), 1))
120-
d = np.linalg.norm(x - features[nn[k], :],
121-
ord=_metrics['scipy-ckdtree'][metric],
122-
axis=1)
123-
nidx = d.argsort()
124-
NN.append(np.take(nn[k], nidx))
125-
D.append(np.sort(d))
126-
return NN, D
114+
tree = spatial.cKDTree(features)
115+
D, NN = tree.query(features, k=n_vertices, distance_upper_bound=radius,
116+
p=p, n_jobs=-1)
117+
distances = []
118+
neighbors = []
119+
for d, n in zip(D, NN):
120+
mask = (d != np.inf)
121+
distances.append(d[mask])
122+
neighbors.append(n[mask])
123+
return neighbors, distances
127124

128125

129126
def _knn_sp_pdist(features, num_neighbors, metric, order):

0 commit comments

Comments
 (0)