Ejemplo n.º 1
0
 def __init__(self, pts, max_depth=None):
     if not len(pts.shape) == 2 and not pts.shape[1] == 4:
         raise ValueError('pts must be a numpy ndarray with shape (length,4).')
     if max_depth == None:
         max_depth = math.log(len(pts), 2) + 2
     self._points = CLReal()
     parr = np.array(pts).flatten()
     parr.shape = (parr.shape[0], 1)
     self._points.value = parr
     data = list(kd_c.get_tree(pts))
     for i in range(len(data)):
         data[i] = data[i].flatten()
         data[i].shape = (data[i].shape[0], 1)
     self._id = CLInt()
     self._parent = CLInt()
     self._cdim = CLInt()
     self._pt = CLInt()
     self._lo = CLInt()
     self._hi = CLInt()
     self._vmax = CLReal()
     self._vmin = CLReal()
     self._cval = CLReal()
     self._offset = CLScalar(0)
     self._id.value = data[0]
     self._parent.value = data[1]
     self._cdim.value = data[2]
     self._pt.value = data[3]
     self._lo.value = data[4]
     self._hi.value = data[5]
     self._vmin.value = data[6]
     self._vmax.value = data[7]
     self._cval.value = data[8]
     #prepare for nns
     self._query_points = CLReal4()
     self._neigh_i = CLInt()
     self._neigh_d = CLReal()
     #prepare the kernel
     pre = "#define MAX_DEPTH " + str(int(max_depth))
     self._get_nn_krn = CLTemplateKernel(pre=pre, src=_GET_NN_SRC)
     self._get_nn_krn.query_points = self._query_points
     self._get_nn_krn.points = self._points
     self._get_nn_krn.id = self._id
     self._get_nn_krn.parent = self._parent
     self._get_nn_krn.cdim = self._cdim
     self._get_nn_krn.pt = self._pt
     self._get_nn_krn.lo = self._lo
     self._get_nn_krn.hi = self._hi
     self._get_nn_krn.vmin = self._vmin
     self._get_nn_krn.vmax = self._vmax
     self._get_nn_krn.cval = self._cval
     self._get_nn_krn.neigh_i = self._neigh_i
     self._get_nn_krn.neigh_d = self._neigh_d
     self._get_nn_krn.offset = self._offset
     self._get_nn_krn.compile()
Ejemplo n.º 2
0
# -*- coding: utf-8 -*-
"""
Created on Sun Dec  6 17:29:12 2015

@author: Hagen
"""

import kd_c 
import numpy as np

length = 10000

points = np.random.rand(length,4)
#print points

tup = kd_c.get_tree(points)

c = 0;
for i in tup:
    print len(i), i