def _df_tree(self, delta): print 'constructing tree1' tree_inner = KD_tree(self._points_inner.value) print 'constructing tree2' tree_outer = KD_tree(self._points_outer.value) self._cmp_pts_kern() vox_pts = np.zeros((self._voxels._value.size,4)) vox_pts = self._vpoints.value vox_pts.shape = (vox_pts.shape[0]*vox_pts.shape[1]*vox_pts.shape[2], 4) print 'getting nn from tree1' nn_dat_inner = tree_inner.get_nn(vox_pts) print 'getting nn from tree2' nn_dat_outer = tree_outer.get_nn(vox_pts) self._dist_inner.value = nn_dat_inner[1] self._dist_outer.value = nn_dat_outer[1] self._cmp_df_kern()
n = 0 for p in points: d = (p[0]-q[0])*(p[0]-q[0]) + (p[1]-q[1])*(p[1]-q[1]) + (p[2]-q[2])*(p[2]-q[2]) if d < dist: dist = d nid = n n += 1; neighs.append(nid) dists.append(math.sqrt(dist)) t1 = timeit.default_timer() print 'python naive:', (t1-t0) t0 = timeit.default_timer() correct = len(np.nonzero(tree.get_nn(points2)[0][:,0] == np.array(neighs))[0])/float(len(neighs))*100 t1 = timeit.default_timer() print 'cl:', (t1-t0), '(', correct, 'correct)'#""" #print tree.get_nn(points2)[0] """for i in range(len(tree._id)): print 'node', tree._id.value[i,0] print 'parent', tree._parent.value[i,0] print 'cdim', tree._cdim.value[i,0] print 'pt', tree._pt.value[i,0] if not (tree._pt.value[i,0] == -1): print tree._points.value[tree._pt.value[i,0]*4, 0], tree._points.value[tree._pt.value[i,0]*4 + 1, 0], tree._points.value[tree._pt.value[i,0]*4 + 2, 0], tree._points.value[tree._pt.value[i,0]*4 + 3, 0] pass print 'lo', tree._lo.value[i,0] print 'hi', tree._hi.value[i,0] print 'vmin', tree._vmin.value[i*4,0], tree._vmin.value[i*4 + 1,0], tree._vmin.value[i*4 + 2,0], tree._vmin.value[i*4 + 3,0]