Skip to content

tataratat/napf

Repository files navigation

napf - nanoflann wrappers for python and maybe fortran

main PyPI version

python

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.

quick start

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,
)
...

fortran

If you need fortran bindings, please let us know by creating an issue.

Documentation

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.