Approximate Nearest Neighbor library wrapper for Numpy

Download: http://pypi.python.org/pypi/scikits.ann

Homepage: http://scipy.org/scipy/scikits/wiki/AnnWrapper

PyPI: http://pypi.python.org/pypi/scikits.ann

People: Barry Wark

The ANN module provides a numpy-compatible python wrapper around the

Approximate Nearest Neighbor library (http://www.cs.umd.edu/~mount/ANN/).

* Installation *

Download and build the Approximate Nearest Neighbor library. Modify the ANN section of

site.cfg so that ANN_ROOT is the path to the root of the Approximate Nearest Neighbor

library include/lib tree.

If /usr/local/include contains the ANN/ include directory and /usr/local/lib contains

libANN.a, then

ANN_ROOT = /usr/local

Run ::

python setup.py build_ext --inplace build test

sudo python setup.py install

from within the source directory.

* Usage *

scikits.ann exposes a single class, kdtree that wraps the Approximate Nearest Neighbor

library's kd-tree implementation. kdtree has a single (non-constructor) method, knn that

finds the indecies (of the points used to construct the kdtree) of the k-nearest neighbors

and the squared distances to those points. A little example will probably be much

more enlightening::

>>> import scikits.ann as ann

>>> import numpy as np

>>> k=ann.kdtree(np.array([[0.,0],[1,0],[1.5,2]]))

>>> k.knn([0,.2],1)

(array([[0]]), array([[ 0.04]]))

>>> k.knn([0,.2],2)

(array([[0, 1]]), array([[ 0.04, 1.04]]))

>>> k.knn([[0,.2],[.1,2],[3,1],[0,0]],2)

(array([[0, 1],

[2, 0],

[2, 1],

[1, 2]]), array([[ 0.04, 1.04],

[ 1.96, 4.01],

[ 3.25, 5. ],

[ 1. , 6.25]]))

>>> k.knn([[0,.2],[.1,2],[3,1],[0,0]],3)

(array([[ 0, 1, 2],

[ 2, 0, 1],

[ 2, 1, 0],

[ 1, 2, -1]]), array([[ 4.00000000e-002, 1.04000000e+000, 5.49000000e+000],

[ 1.96000000e+000, 4.01000000e+000, 4.81000000e+000],

[ 3.25000000e+000, 5.00000000e+000, 1.00000000e+001],

[ 1.00000000e+000, 6.25000000e+000, 1.79769313e+308]]))

Approximate Nearest Neighbor library (http://www.cs.umd.edu/~mount/ANN/).

* Installation *

Download and build the Approximate Nearest Neighbor library. Modify the ANN section of

site.cfg so that ANN_ROOT is the path to the root of the Approximate Nearest Neighbor

library include/lib tree.

If /usr/local/include contains the ANN/ include directory and /usr/local/lib contains

libANN.a, then

ANN_ROOT = /usr/local

Run ::

python setup.py build_ext --inplace build test

sudo python setup.py install

from within the source directory.

* Usage *

scikits.ann exposes a single class, kdtree that wraps the Approximate Nearest Neighbor

library's kd-tree implementation. kdtree has a single (non-constructor) method, knn that

finds the indecies (of the points used to construct the kdtree) of the k-nearest neighbors

and the squared distances to those points. A little example will probably be much

more enlightening::

>>> import scikits.ann as ann

>>> import numpy as np

>>> k=ann.kdtree(np.array([[0.,0],[1,0],[1.5,2]]))

>>> k.knn([0,.2],1)

(array([[0]]), array([[ 0.04]]))

>>> k.knn([0,.2],2)

(array([[0, 1]]), array([[ 0.04, 1.04]]))

>>> k.knn([[0,.2],[.1,2],[3,1],[0,0]],2)

(array([[0, 1],

[2, 0],

[2, 1],

[1, 2]]), array([[ 0.04, 1.04],

[ 1.96, 4.01],

[ 3.25, 5. ],

[ 1. , 6.25]]))

>>> k.knn([[0,.2],[.1,2],[3,1],[0,0]],3)

(array([[ 0, 1, 2],

[ 2, 0, 1],

[ 2, 1, 0],

[ 1, 2, -1]]), array([[ 4.00000000e-002, 1.04000000e+000, 5.49000000e+000],

[ 1.96000000e+000, 4.01000000e+000, 4.81000000e+000],

[ 3.25000000e+000, 5.00000000e+000, 1.00000000e+001],

[ 1.00000000e+000, 6.25000000e+000, 1.79769313e+308]]))

You can download the latest distribution from PyPI here: http://pypi.python.org/pypi/scikits.ann

You can install scikits.ann for yourself from the terminal by running:

pip install --user scikits.ann

If you want to install it for all users on your machine, do:

pip install scikits.annOn Linux, do

If you don't yet have the pip tool, you can get it following these instructions.

*This package was discovered in PyPI.*