README
author Dmitriy Morozov <dmitriy@mrzv.org>
Sat, 20 Jun 2009 12:33:19 -0700 (2009-06-20)
changeset 6 e34a29c36f13
child 8 ef31983c4dd2
permissions -rw-r--r--
Started README
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     1
pyANN
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     2
=====
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     3
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     4
pyANN provides Python bindings for David Mount and Sunil Arya's ANN_ library for
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     5
approximate nearest neighbor searching.
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     6
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     7
.. _ANN:        http://www.cs.umd.edu/~mount/ANN/
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     8
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
     9
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    10
Example
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    11
-------
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    12
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    13
.. parsed-literal::
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    14
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    15
    >>> import pyANN
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    16
    >>> kdtree = pyANN.KDTree([[1,1,1], [1,2,3], [4,5,6]])
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    17
    >>> kdtree.kSearch([0,0,0], 2, 0)
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    18
    ([0, 1], [3.0, 14.0])
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    19
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    20
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    21
Download
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    22
--------
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    23
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    24
The easiest way to obtain pyANN is to check it out from my Mercurial_
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    25
repository:
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    26
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    27
.. parsed-literal::
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    28
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    29
    hg clone http://hg.mrzv.org/pyANN
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    30
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    31
Alternatively, one can download the tarball_.
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    32
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    33
.. _Mercurial:  http://www.selenic.com/mercurial/wiki/
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    34
.. _tarball:    http://hg.mrzv.org/pyANN/archive/tip.tar.gz
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    35
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    36
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    37
Building and Installing
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    38
-----------------------
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    39
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    40
First of all, one needs to patch ANN_ to make it compile with more recent
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    41
versions of GCC_ and to make it build shared libraries under Linux. If you are
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    42
not under Linux and have an older version of GCC_ (below 4.3), you can safely
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    43
skip these steps.
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    44
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    45
.. _GCC:                    http://gcc.gnu.org/
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    46
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    47
Download the gcc43.patch_ and shared-libs.patch_. Within the directory where
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    48
you've extracted ANN_, run::
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    49
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    50
    patch -p1 < .../gcc43.patch   
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    51
    patch -p1 < .../shared-libs.patch
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    52
    make linux-g++-sl
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    53
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    54
(assuming you are on Linux).    
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    55
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    56
.. _gcc43.patch:            http://aur.archlinux.org/packages/ann/ann/gcc43.patch
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    57
.. _shared-libs.patch:      http://aur.archlinux.org/packages/ann/ann/shared-libs.patch
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    58
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    59
Besides ANN_, pyANN **depends** on Boost.Python_. To compile and install the
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    60
bindings, if you have waf_ installed, run::
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    61
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    62
    waf configure
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    63
    waf build
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    64
    waf install
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    65
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    66
Otherwise, there is the original simple ``Makefile``, which you can tweak (e.g.,
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    67
adjust paths), and then ``make`` will compile the bindings. You will have to
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    68
manually put them somewhere on your ``PYTHONPATH``.
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    69
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    70
.. _Boost.Python:           http://www.boost.org/doc/libs/1_39_0/libs/python/doc/index.html
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    71
.. _waf:                    http://code.google.com/p/waf/
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    72
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    73
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    74
KDTree class
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    75
------------
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    76
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    77
The main content of pyANN is the class `KDTree`. The class is initialized with a
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    78
list of points, and provides three key methods:
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    79
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    80
    :kSearch:
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    81
    :kPriSearch:
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    82
    :kFRSearch:
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    83
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    84
Additional auxiliary methods mimick ANN's functionality:
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    85
e34a29c36f13 Started README
Dmitriy Morozov <dmitriy@mrzv.org>
parents:
diff changeset
    86