jakteristics icon indicating copy to clipboard operation
jakteristics copied to clipboard

Variable (per-point) search radii

Open SlapDrone opened this issue 1 year ago • 0 comments

Hey folks,

I was wondering whether one could easily support a per-point search radius (precomputed from optimal neighbourhood in PDAL) for calculating the geometric features.

I had a crack at it with this commit on a fork, as I thought it would be relatively straightforward to just extend the float to an array. But I am not well-versed enough in cython and c++ extensions to python to really effectively understand what went wrong.

In building the c++ extension I get:

  × Building wheel for jakteristics (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [21 lines of output]
      running bdist_wheel
      running build
      running build_py
      copying jakteristics/main.py -> build/lib.linux-x86_64-cpython-310/jakteristics
      copying jakteristics/utils.cpp -> build/lib.linux-x86_64-cpython-310/jakteristics
      copying jakteristics/extension.cpp -> build/lib.linux-x86_64-cpython-310/jakteristics
      running build_ext
      building 'jakteristics.extension' extension
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DNPY_NO_DEPRECATED_API=1 -I/tmp/pip-build-env-9kki0rhb/overlay/lib/python3.10/site-packages/numpy/core/include -Ijakteristics/ckdtree/ckdtree/src -Ijakteristics/ckdtree/_lib -I/home/liam/projects/jakteristics/.venv/include -I/home/liam/.pyenv/versions/3.10.8/include/python3.10 -c jakteristics/ckdtree/ckdtree/src/query_ball_point.cxx -o build/temp.linux-x86_64-cpython-310/jakteristics/ckdtree/ckdtree/src/query_ball_point.o -fopenmp
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DNPY_NO_DEPRECATED_API=1 -I/tmp/pip-build-env-9kki0rhb/overlay/lib/python3.10/site-packages/numpy/core/include -Ijakteristics/ckdtree/ckdtree/src -Ijakteristics/ckdtree/_lib -I/home/liam/projects/jakteristics/.venv/include -I/home/liam/.pyenv/versions/3.10.8/include/python3.10 -c jakteristics/extension.cpp -o build/temp.linux-x86_64-cpython-310/jakteristics/extension.o -fopenmp
      jakteristics/extension.cpp: In function ‘PyObject* __pyx_pf_12jakteristics_9extension_compute_features(PyObject*, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_obj_12jakteristics_7ckdtree_7ckdtree_cKDTree*, int, int, int, PyObject*, float)’:
      jakteristics/extension.cpp:3905:99: error: assignment of read-only location ‘* __pyx_temp_pointer’
       3905 |                                         *((__pyx_t_5numpy_float64_t const  *) __pyx_temp_pointer) = __pyx_temp_scalar;
            |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
      jakteristics/extension.cpp:3988:71: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
       3988 |                               __pyx_t_9 = ((__pyx_v_n_neighbors_at_id > __pyx_v_max_k_neighbors) != 0);
            |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
      jakteristics/extension.cpp:4048:63: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
       4048 |                               for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_27; __pyx_t_10+=1) {
            |                                                    ~~~~~~~~~~~^~~~~~~~~~~~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for jakteristics
Failed to build jakteristics
ERROR: Could not build wheels for jakteristics, which is required to install pyproject.toml-based projects

Figured i'd give you a ping in case the answer is obvious to you devs. It'll take me quite some time to pick through and figure out what's going on.

Happy to open a PR if this is fixable and useful.

Cheers!

SlapDrone avatar May 25 '23 21:05 SlapDrone