コード例 #1
0
class test_small(ConsistencyTests):
    def setUp(self):
        self.data = np.array([[0,0,0],
                              [0,0,1],
                              [0,1,0],
                              [0,1,1],
                              [1,0,0],
                              [1,0,1],
                              [1,1,0],
                              [1,1,1]])
        self.bounds = 1.1 * np.ones(3)
        self.kdtree = PeriodicKDTree(self.bounds, self.data)
        self.n = self.kdtree.n
        self.m = self.kdtree.m
        self.x = np.random.randn(3)
        self.d = 0.5
        self.k = 4

    def test_nearest(self):
        assert_array_equal(
                self.kdtree.query((0,0,0.1), 1),
                (0.1,0))
    def test_nearest_two(self):
        assert_array_almost_equal(
                self.kdtree.query((0,0,0.1), 2),
                ([0.1,np.sqrt(0.1**2 + 0.1**2)],[0,2]))
コード例 #2
0
def test_random_ball_vectorized():

    n = 20
    m = 5
    bounds = np.ones(m)
    T = PeriodicKDTree(bounds, np.random.randn(n,m))

    r = T.query_ball_point(np.random.randn(2,3,m),1)
    assert_equal(r.shape,(2,3))
    assert_(isinstance(r[0,0],list))
コード例 #3
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
def test_random_ball_vectorized():

    n = 20
    m = 5
    bounds = np.ones(m)
    T = PeriodicKDTree(bounds, np.random.randn(n, m))

    r = T.query_ball_point(np.random.randn(2, 3, m), 1)
    assert_equal(r.shape, (2, 3))
    assert_(isinstance(r[0, 0], list))
コード例 #4
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
 def setUp(self):
     self.data = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1],
                           [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]])
     self.bounds = 1.1 * np.ones(3)
     self.kdtree = PeriodicKDTree(self.bounds, self.data)
     self.n = self.kdtree.n
     self.m = self.kdtree.m
     self.x = np.random.randn(3)
     self.d = 0.5
     self.k = 4
コード例 #5
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
class test_small(ConsistencyTests):
    def setUp(self):
        self.data = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1],
                              [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]])
        self.bounds = 1.1 * np.ones(3)
        self.kdtree = PeriodicKDTree(self.bounds, self.data)
        self.n = self.kdtree.n
        self.m = self.kdtree.m
        self.x = np.random.randn(3)
        self.d = 0.5
        self.k = 4

    def test_nearest(self):
        assert_array_equal(self.kdtree.query((0, 0, 0.1), 1), (0.1, 0))

    def test_nearest_two(self):
        assert_array_almost_equal(self.kdtree.query((0, 0, 0.1), 2),
                                  ([0.1, np.sqrt(0.1**2 + 0.1**2)], [0, 2]))
コード例 #6
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
 def setUp(self):
     self.n = 100
     self.m = 4
     self.data = np.random.randn(self.n, self.m)
     self.bounds = np.ones(self.m)
     self.kdtree = PeriodicKDTree(self.bounds, self.data, leafsize=2)
     self.x = np.random.randn(self.m)
     self.d = 0.2
     self.k = 10
コード例 #7
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
 def setUp(self):
     n = 100
     m = 4
     self.data = np.random.randn(n, m)
     self.bounds = np.ones(m)
     self.T = PeriodicKDTree(self.bounds, self.data, leafsize=2)
     self.x = np.random.randn(m)
     self.p = 2.
     self.eps = 0
     self.d = 0.2
コード例 #8
0
 def setUp(self):
     self.data = np.array([[0,0,0],
                           [0,0,1],
                           [0,1,0],
                           [0,1,1],
                           [1,0,0],
                           [1,0,1],
                           [1,1,0],
                           [1,1,1]])
     self.bounds = 1.1 * np.ones(3)
     self.kdtree = PeriodicKDTree(self.bounds, self.data)
コード例 #9
0
 def setUp(self):
     self.data = np.array([[0,0,0],
                           [0,0,1],
                           [0,1,0],
                           [0,1,1],
                           [1,0,0],
                           [1,0,1],
                           [1,1,0],
                           [1,1,1]])
     self.bounds = 1.1 * np.ones(3)
     self.kdtree = PeriodicKDTree(self.bounds, self.data)
     self.n = self.kdtree.n
     self.m = self.kdtree.m
     self.x = np.random.randn(3)
     self.d = 0.5
     self.k = 4
コード例 #10
0
class test_vectorization:
    def setUp(self):
        self.data = np.array([[0,0,0],
                              [0,0,1],
                              [0,1,0],
                              [0,1,1],
                              [1,0,0],
                              [1,0,1],
                              [1,1,0],
                              [1,1,1]])
        self.bounds = 1.1 * np.ones(3)
        self.kdtree = PeriodicKDTree(self.bounds, self.data)

    def test_single_query(self):
        d, i = self.kdtree.query(np.array([0,0,0]))
        assert_(isinstance(d,float))
        assert_(np.issubdtype(i, int))

    def test_vectorized_query(self):
        d, i = self.kdtree.query(np.zeros((2,4,3)))
        assert_equal(np.shape(d),(2,4))
        assert_equal(np.shape(i),(2,4))

    def test_single_query_multiple_neighbors(self):
        s = 23
        kk = 27*self.kdtree.n+s
        d, i = self.kdtree.query(np.array([0,0,0]),k=kk)
        assert_equal(np.shape(d),(kk,))
        assert_equal(np.shape(i),(kk,))
        assert_(np.all(~np.isfinite(d[-s:])))
        assert_(np.all(i[-s:]==self.kdtree.n))

    def test_vectorized_query_multiple_neighbors(self):
        s = 23
        kk = 27*self.kdtree.n+s
        d, i = self.kdtree.query(np.zeros((2,4,3)),k=kk)
        assert_equal(np.shape(d),(2,4,kk))
        assert_equal(np.shape(i),(2,4,kk))
        assert_(np.all(~np.isfinite(d[:,:,-s:])))
        assert_(np.all(i[:,:,-s:]==self.kdtree.n))

    def test_single_query_all_neighbors(self):
        d, i = self.kdtree.query([0,0,0],k=None,distance_upper_bound=1.1)
        assert_(isinstance(d,list))
        assert_(isinstance(i,list))

    def test_vectorized_query_all_neighbors(self):
        d, i = self.kdtree.query(np.zeros((2,4,3)),k=None,distance_upper_bound=1.1)
        assert_equal(np.shape(d),(2,4))
        assert_equal(np.shape(i),(2,4))

        assert_(isinstance(d[0,0],list))
        assert_(isinstance(i[0,0],list))
コード例 #11
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
class test_vectorization:
    def setUp(self):
        self.data = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1],
                              [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]])
        self.bounds = 1.1 * np.ones(3)
        self.kdtree = PeriodicKDTree(self.bounds, self.data)

    def test_single_query(self):
        d, i = self.kdtree.query(np.array([0, 0, 0]))
        assert_(isinstance(d, float))
        assert_(np.issubdtype(i, int))

    def test_vectorized_query(self):
        d, i = self.kdtree.query(np.zeros((2, 4, 3)))
        assert_equal(np.shape(d), (2, 4))
        assert_equal(np.shape(i), (2, 4))

    def test_single_query_multiple_neighbors(self):
        s = 23
        kk = 27 * self.kdtree.n + s
        d, i = self.kdtree.query(np.array([0, 0, 0]), k=kk)
        assert_equal(np.shape(d), (kk, ))
        assert_equal(np.shape(i), (kk, ))
        assert_(np.all(~np.isfinite(d[-s:])))
        assert_(np.all(i[-s:] == self.kdtree.n))

    def test_vectorized_query_multiple_neighbors(self):
        s = 23
        kk = 27 * self.kdtree.n + s
        d, i = self.kdtree.query(np.zeros((2, 4, 3)), k=kk)
        assert_equal(np.shape(d), (2, 4, kk))
        assert_equal(np.shape(i), (2, 4, kk))
        assert_(np.all(~np.isfinite(d[:, :, -s:])))
        assert_(np.all(i[:, :, -s:] == self.kdtree.n))

    def test_single_query_all_neighbors(self):
        d, i = self.kdtree.query([0, 0, 0], k=None, distance_upper_bound=1.1)
        assert_(isinstance(d, list))
        assert_(isinstance(i, list))

    def test_vectorized_query_all_neighbors(self):
        d, i = self.kdtree.query(np.zeros((2, 4, 3)),
                                 k=None,
                                 distance_upper_bound=1.1)
        assert_equal(np.shape(d), (2, 4))
        assert_equal(np.shape(i), (2, 4))

        assert_(isinstance(d[0, 0], list))
        assert_(isinstance(i[0, 0], list))
コード例 #12
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
 def setUp(self):
     self.data = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1],
                           [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]])
     self.bounds = 1.1 * np.ones(3)
     self.kdtree = PeriodicKDTree(self.bounds, self.data)
コード例 #13
0
ファイル: test_periodic_kdtree.py プロジェクト: neojie/vatic
 def setUp(self):
     test_small.setUp(self)
     self.kdtree = PeriodicKDTree(self.bounds, self.data, leafsize=1)
コード例 #14
0
ファイル: benchmark.py プロジェクト: syrte/periodic_kdtree
from periodic_kdtree import PeriodicKDTree, PeriodicCKDTree

m = 3
n = 10000
r = 1000

bounds = np.ones(m)
data = np.concatenate(
    (np.random.randn(n // 2, m), np.random.randn(n - n // 2, m) + np.ones(m)))
queries = np.concatenate(
    (np.random.randn(r // 2, m), np.random.randn(r - r // 2, m) + np.ones(m)))

print "dimension %d, %d points" % (m, n)

t = time.time()
T1 = PeriodicKDTree(bounds, data)
print "PeriodicKDTree constructed:\t%g" % (time.time() - t)
t = time.time()
T2 = PeriodicCKDTree(bounds, data)
print "PeriodicCKDTree constructed:\t%g" % (time.time() - t)

t = time.time()
w = T1.query(queries)
print "PeriodicKDTree %d lookups:\t%g" % (r, time.time() - t)
del w

t = time.time()
w = T2.query(queries)
print "PeriodicCKDTree %d lookups:\t%g" % (r, time.time() - t)
del w
コード例 #15
0

m = 3
n = 10000
r = 1000

bounds = np.ones(m)
data = np.concatenate((np.random.randn(n//2,m),
    np.random.randn(n-n//2,m)+np.ones(m)))
queries = np.concatenate((np.random.randn(r//2,m),
    np.random.randn(r-r//2,m)+np.ones(m)))

print "dimension %d, %d points" % (m,n)

t = time.time()
T1 = PeriodicKDTree(bounds, data)
print "PeriodicKDTree constructed:\t%g" % (time.time()-t)
t = time.time()
T2 = PeriodicCKDTree(bounds, data)
print "PeriodicCKDTree constructed:\t%g" % (time.time()-t)

t = time.time()
w = T1.query(queries)
print "PeriodicKDTree %d lookups:\t%g" % (r, time.time()-t)
del w

t = time.time()
w = T2.query(queries)
print "PeriodicCKDTree %d lookups:\t%g" % (r, time.time()-t)
del w