def test_ball_tree_query_radius_count(n_samples=100, n_features=10): X = 2 * np.random.random(size=(n_samples, n_features)) - 1 dm = DistanceMetric() D = dm.pdist(X, squareform=True) r = np.mean(D) bt = BallTree(X) count1 = bt.query_radius(X, r, count_only=True) count2 = (D <= r).sum(1) assert_array_almost_equal(count1, count2)
def test_query_radius_count(self): # center the data X = 2 * self.X - 1 dm = DistanceMetric() D = dm.pdist(X, squareform=True) r = np.mean(D) bt = BallTree(X) count1 = bt.query_radius(X, r, count_only=True) count2 = (D <= r).sum(1) assert_array_almost_equal(count1, count2)
def test_query_radius_indices(self, n_queries=20): # center the data X = 2 * self.X - 1 dm = DistanceMetric() D = dm.cdist(X[:n_queries], X) r = np.mean(D) bt = BallTree(X) ind = bt.query_radius(X[:n_queries], r, return_distance=False) ind2 = np.zeros(D.shape) + np.arange(D.shape[1]) ind = np.concatenate(map(np.sort, ind)) ind2 = ind2[D <= r] assert_array_almost_equal(ind, ind2)
def test_ball_tree_query_radius(n_samples=100, n_features=10): np.random.seed(0) X = 2 * np.random.random(size=(n_samples, n_features)) - 1 query_pt = np.zeros(n_features, dtype=float) eps = 1E-15 # roundoff error can cause test to fail bt = BallTree(X, leaf_size=5) rad = np.sqrt(((X - query_pt) ** 2).sum(1)) for r in np.linspace(rad[0], rad[-1], 100): ind = bt.query_radius(query_pt, r + eps)[0] i = np.where(rad <= r + eps)[0] ind.sort() i.sort() assert_allclose(i, ind)
def test_ball_tree_query_radius_distance(n_samples=100, n_features=10): X = 2 * np.random.random(size=(n_samples, n_features)) - 1 query_pt = np.zeros(n_features, dtype=float) eps = 1e-15 # roundoff error can cause test to fail bt = BallTree(X, leaf_size=5) rad = np.sqrt(((X - query_pt) ** 2).sum(1)) for r in np.linspace(rad[0], rad[-1], 100): ind, dist = bt.query_radius(query_pt, r + eps, return_distance=True) ind = ind[0] dist = dist[0] d = np.sqrt(((query_pt - X[ind]) ** 2).sum(1)) assert_array_almost_equal(d, dist)
def test_ball_tree_query_radius(n_samples=100, n_features=10): np.random.seed(0) X = 2 * np.random.random(size=(n_samples, n_features)) - 1 query_pt = np.zeros(n_features, dtype=float) eps = 1E-15 # roundoff error can cause test to fail bt = BallTree(X, leaf_size=5) rad = np.sqrt(((X - query_pt)**2).sum(1)) for r in np.linspace(rad[0], rad[-1], 100): ind = bt.query_radius(query_pt, r + eps)[0] i = np.where(rad <= r + eps)[0] ind.sort() i.sort() assert_allclose(i, ind)
def test_ball_tree_query_radius_distance(n_samples=100, n_features=10): X = 2 * np.random.random(size=(n_samples, n_features)) - 1 query_pt = np.zeros(n_features, dtype=float) eps = 1E-15 # roundoff error can cause test to fail bt = BallTree(X, leaf_size=5) rad = np.sqrt(((X - query_pt)**2).sum(1)) for r in np.linspace(rad[0], rad[-1], 100): ind, dist = bt.query_radius(query_pt, r + eps, return_distance=True) ind = ind[0] dist = dist[0] d = np.sqrt(((query_pt - X[ind])**2).sum(1)) assert_array_almost_equal(d, dist)
def test_ball_tree_query_radius_indices(n_samples=100, n_features=10): X = 2 * np.random.random(size=(n_samples, n_features)) - 1 dm = DistanceMetric() D = dm.cdist(X[:10], X) r = np.mean(D) bt = BallTree(X) ind = bt.query_radius(X[:10], r, return_distance=False) for i in range(10): ind1 = ind[i] ind2 = np.where(D[i] <= r)[0] ind1.sort() ind2.sort() assert_array_almost_equal(ind1, ind2)
from time import time import numpy as np from ball_tree import BallTree X = np.random.random((10000, 3)) t0 = time() BT = BallTree(X, 30) t1 = time() print "construction: %.2g sec" % (t1 - t0) for k in [1, 2, 4, 8]: for dual in (False, True): t0 = time() BT.query(X, k, dualtree=dual) t1 = time() if dual: dual_str = ' (dual)' else: dual_str = '' print "query %i in [%i, %i]%s: %.3g sec" % (k, X.shape[0], X.shape[1], dual_str, t1 - t0) for r in 0.1, 0.3, 0.5: t0 = time() BT.query_radius(X[:1000], r) t1 = time() print "query r<%.1f in [%i, %i]: %.3g sec" % (r, X.shape[0], X.shape[1], t1 - t0)
import numpy as np from ball_tree import BallTree X = np.random.random((10000, 3)) t0 = time() BT = BallTree(X, 30) t1 = time() print "construction: %.2g sec" % (t1 - t0) for k in [1, 2, 4, 8]: for dual in (False, True): t0 = time() BT.query(X, k, dualtree=dual) t1 = time() if dual: dual_str = ' (dual)' else: dual_str = '' print "query %i in [%i, %i]%s: %.3g sec" % (k, X.shape[0], X.shape[1], dual_str, t1 - t0) for r in 0.1, 0.3, 0.5: t0 = time() BT.query_radius(X[:1000], r) t1 = time() print "query r<%.1f in [%i, %i]: %.3g sec" % (r, X.shape[0], X.shape[1], t1 - t0)