napf - nanoflann wrappers for python and maybe fortran
As nanoflann offers template classes, separate classes are implemented in napf
for each {datatype, distance metric}. All the search functions are equipped with multi-thread execution. Uses numpy.ndarray for data input and output.
Currently, the combinations of following options are supported:
data type
: {double, float, int, long} (corresponds to {np.float64, np.float32, np.int32, np.int64})distance metric
: {L1, L2} Note that functions return squared distances, when you use the L2 metric.
install with pip:
pip install --upgrade pip
pip install napf
Note: in case your system requires a dynamic build, you need a c++11 compatible c++ compiler. To make sure a correct compiler is chosen, set export CC=<your-c-compiler> CXX=<your-c++-compiler>
import napf
import numpy as np
data = <data in 2D array>
queries = <query points in 2D array>
kdt = napf.KDT(tree_data=data, metric=1)
distances, indices = kdt.knn_search(
queries=queries,
kneighbors=3,
nthread=4,
)
...
If you need fortran bindings, please let us know by creating an issue.
This package uses a sphinx
based documentation. An online version of the documentation can be found at napf - documentation.
If you want to build the documentation yourself use the following commands in the package root directory.
pip install -r ./docs/requirements.txt
sphinx-build -W -b html docs/source docs/build
You will find the documentation in the docs/build folder.