A kdtree implementation for numba.
Project description
Numba-Kdtree - a fast KDTree implementation for numba
numba-kdtree provides a fast KDTree implementation for numba CPU functions based on scipys ckdtree.
The provided KDTree class is usable from both python and numba nopython functions calling directly into C code for performance critical sections utilizing a ctypes-like interface.
Once the KDTree class is compiled by numba, it is just as fast as the original scipy version.
Note: Currently only a basic subset of the original ckdtree interface is implemented.
Installation
Using pip
pip install numba-kdtree
From source
git clone https://github.com/mortacious/numba-kdtree.git
cd numba-kdtree
python -m pip install
Usage
import numpy as np
from numba_kdtree import KDTree
data = np.random.random(3_000_000).reshape(-1, 3)
kdtree = KDTree(data, leafsize=10)
# compute the nearest neighbors of the first 100 points
distances, indices = kdtree.query(data[:100], k=30)
# compute all points in a 0.5 radius around the first 100 points and return it's sorted indices
indices = kdtree.query_radius(data[:100], r=0.5, return_sorted=True)
The KDTree can be freely passed into a numba nopython function or constructed directly within it:
import numpy as np
from numba import njit
from numba_kdtree import KDTree
def numba_function_with_kdtree(kdtree, data):
for i in range(data.shape[0]):
distances, indices = kdtree.query(data[i], k=30)
#<Use the computed neighbors
data = np.random.random(3_000_000).reshape(-1, 3)
kdtree = KDTree(data, leafsize=10)
numba_function_with_kdtree(kdtree)
import numpy as np
from numba import njit
from numba_kdtree import KDTree
def numba_function_constructing_kdtree(kdtree, data):
kdtree = KDTree(data, leafsize=10)
for i in range(data.shape[0]):
distances, indices = kdtree.query(data[i], k=30)
#<Use the computed neighbors
data = np.random.random(10_000_000).reshape(-1, 10)
numba_function_constructing_kdtree(data)
Additionally, the KDTree object can also be serialized via pickle:
import pickle
data = np.random.random(3_000_000).reshape(-1, 3)
kdtree = KDTree(data, leafsize=10)
# pass the tree through pickle
# Note: This also copies the data array preserving it's integrity
serialized_tree = pickle.dumps(kdtree)
# The copied data array is now owned by the restored tree
restored_kdtree = pickle.loads(serialized_tree)
k = 10
# query the old tree
dd, ii, nn = kdtree.query_parallel(data[:100], k=k)
# query the new tree
dd_r, ii_r, nn_r = restored_kdtree.query_parallel(data[:100], k=k)
TODOs
- Implement the full scipy
ckdtreeinterface
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file numba_kdtree-0.6.0.tar.gz.
File metadata
- Download URL: numba_kdtree-0.6.0.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53ba8bb82cc820b06b771018698468cad5a9356bc9d8bfd7df7332c1887bd251
|
|
| MD5 |
f5bcec192a9bcae69c803ee955c2e091
|
|
| BLAKE2b-256 |
4862d99cb142b118144635fae85368e2e586c52e4ec9d49d38aaf2176cd0ddcf
|
File details
Details for the file numba_kdtree-0.6.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 46.2 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ede5d08abaa069a4fe24059ef278118ae2afecaf23ab57fc6858cc334e81cf6c
|
|
| MD5 |
5c2b79d495724ba423d8b2b066a67c62
|
|
| BLAKE2b-256 |
0248559aa77dbfbc738f3f2997f6452303a274294031f17577d19f7d1b134005
|
File details
Details for the file numba_kdtree-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 481.3 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2b31ffd14cfa5a50f3107ca6ecdac3bc1892cc3cc8208e053ff41aaf8687476
|
|
| MD5 |
9f8da4765b55a3b8b63d032769a60895
|
|
| BLAKE2b-256 |
3f052a24018fe50f4e593b6795eb8040728f013af37606326e1a7a42861dd823
|
File details
Details for the file numba_kdtree-0.6.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 46.2 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3537d4bd35934ff9716e4161d715e2036ddaa03080a83ea22b8365a89860b3c
|
|
| MD5 |
ee3d5cd69e9f3f18497deb68714a0984
|
|
| BLAKE2b-256 |
a09c2f93702257f79fdb7dd3f3a55ac87bdd5a69d651df3829a835582b3ec4e6
|
File details
Details for the file numba_kdtree-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 481.3 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93f8bb9cf5965b5b6a24e0b9f665df4837cfecf025d9e87d25b3d0b59e96a9fe
|
|
| MD5 |
6510dc83dbf972a9898f41087683e554
|
|
| BLAKE2b-256 |
3af357c096b81ba13cc6bdd4f2d2e827da7f1c41b25c3c53e76e97e402b611d2
|
File details
Details for the file numba_kdtree-0.6.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 46.2 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
029f1cfa815fa5e58a8ee47f02c0926f3d54ef44ab50cb68884e5928b22a1e63
|
|
| MD5 |
17b9cfc556c84090fb5c8934ba87f8a3
|
|
| BLAKE2b-256 |
da25902e307bff7faa716a59eda062a861173428df02989b640adbea6a838c25
|
File details
Details for the file numba_kdtree-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 481.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fe41e287392a901b90c8ab341cd21ff6285571f1175a368860a966a20b425f3
|
|
| MD5 |
ddd141dc208ad0edd6e2956c83049318
|
|
| BLAKE2b-256 |
426dc2d892b8fc5f74603bb467330652983af5269c0d4d8f0b0ec57a1710a8d5
|
File details
Details for the file numba_kdtree-0.6.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 46.2 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49b7d13f92d859e022c06c91ab38c04c6bba1ad891aaaa1646199600ccb57913
|
|
| MD5 |
21437f6e9ed6f68aaeb2b4e9c8b9eae0
|
|
| BLAKE2b-256 |
a20f92deda143a75f9ace20ab435dfdc22360cdc4aeb8fa892351f6370515336
|
File details
Details for the file numba_kdtree-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 481.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2b62bb23c0db17c908e5bf1968b71340411ef062d9e961bdc58f20fe57572c9
|
|
| MD5 |
8c04827c4e24cbc983a8c2dca37a7eba
|
|
| BLAKE2b-256 |
7ce053604ec230c656e50971260c5ee7836082219b8abdfd99974c1d60dff9a3
|
File details
Details for the file numba_kdtree-0.6.0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 46.2 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f7c221f502fb06016e3a76c49a4243f6426e93f289eaba805f62e9151b331c0
|
|
| MD5 |
92e4eda88bfff0fc9fd12d6dfc065e33
|
|
| BLAKE2b-256 |
f3c8d2411728e4cc7373ff2e8fe9fd10009901f9b499b9181a4b17ccf1bffc91
|
File details
Details for the file numba_kdtree-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: numba_kdtree-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 481.1 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a668a123a552bd8cbd4d31c57b149c5ba9721247736e65dde02c731164e9a455
|
|
| MD5 |
eba8e9c7df53164cc53d3121daffdf9c
|
|
| BLAKE2b-256 |
01849aeff3848f2ab9e65c07701ae1d48d2d377dd7f31508d770b714276c9284
|