Skip to main content

Fast kd-tree implementation with OpenMP-enabled queries

Project description

https://github.com/storpipfugl/pykdtree/actions/workflows/deploy-wheels.yml/badge.svg?branch=master

pykdtree

Objective

pykdtree is a kd-tree implementation for fast nearest neighbour search in Python. The aim is to be the fastest implementation around for common use cases (low dimensions and low number of neighbours) for both tree construction and queries.

The implementation is based on scipy.spatial.cKDTree and libANN by combining the best features from both and focus on implementation efficiency.

The interface is similar to that of scipy.spatial.cKDTree except only Euclidean distance measure is supported.

Queries are optionally multithreaded using OpenMP.

Installation

Pykdtree can be installed via pip:

pip install pykdtree

Or, if in a conda-based environment, with conda from the conda-forge channel:

conda install -c conda-forge pykdtree

Note that by default these packages (the binary wheels on PyPI and the binary package on conda-forge) are only built with OpenMP for linux platforms. To attempt to build from source with OpenMP support do:

export USE_OMP="probe"
pip install --no-binary pykdtree pykdtree

This may not work on some systems that don’t have OpenMP installed. See the below development instructions for more guidance. Disabling OpenMP can be accomplished by setting USE_OMP to "0" in the above commands.

Development Installation

If you wish to contribute to pykdtree then it is a good idea to install from source so you can quickly see the effects of your changes. By default pykdtree is built with OpenMP enabled queries on unix-like systems. On linux this is done using libgomp. On OSX systems OpenMP is provided using the clang compiler (conda environments use a separate compiler).

$ cd <pykdtree_dir>
$ pip install -e .

This installs pykdtree in an “editable” mode where changes to the Python files are automatically reflected when running a new python interpreter instance (ex. running a python script that uses pykdtree). It does not automatically rebuild or recompile the .mako templates and .pyx Cython code in pykdtree. Editing these files requires running the pykdtree/render_template.py script and then rerunning the pip command above to recompile the Cython files.

If installation fails with undefined compiler flags or you want to use another OpenMP implementation you may need to modify setup.py or specify additional pip command line flags to match the library locations on your system.

Building without OpenMP support is controlled by the USE_OMP environment variable

$ cd <pykdtree_dir>
$ export USE_OMP=0
$ pip install -e .

Note evironment variables are by default not exported when using sudo so in this case do

$ USE_OMP=0 sudo -E pip install -e .

Control OpenMP usage

The USE_OMP variable can be set to one of a couple different options. If set to "probe", the installation process (setup.py) will attempt to determine what variant of OpenMP is available based on the compiler being used, the platform being run on, and the Python environment being run with. It will then use the flags specified by one of the other USE_OMP modes. Note that in the case of MacOS, it will also try to identify if OpenMP is available from macports or homebrew and include the necessary include and library paths.

If set to "gcc" or "gomp" then compiler and linking flags will be set appropriately for “GNU OpenMP” (gomp) library. If set to "clang" or "omp" then the flags will be set to support the “omp” library. If set to "msvc" then flags will be set for the Microsoft Visual C++ compiler’s OpenMP variant. For backwards compatibility the previous "1" has the same behavior as "probe". As mentioned above "0" can be used to disable any detection of OpenMP or attempt to compile with it.

Usage

The usage of pykdtree is similar to scipy.spatial.cKDTree so for now refer to its documentation

>>> from pykdtree.kdtree import KDTree
>>> kd_tree = KDTree(data_pts)
>>> dist, idx = kd_tree.query(query_pts, k=8)

The number of threads to be used in OpenMP enabled queries can be controlled with the standard OpenMP environment variable OMP_NUM_THREADS.

The leafsize argument (number of data points per leaf) for the tree creation can be used to control the memory overhead of the kd-tree. pykdtree uses a default leafsize=16. Increasing leafsize will reduce the memory overhead and construction time but increase query time.

pykdtree accepts data in double precision (numpy.float64) or single precision (numpy.float32) floating point. If data of another type is used an internal copy in double precision is made resulting in a memory overhead. If the kd-tree is constructed on single precision data the query points must be single precision as well.

Benchmarks

Comparison with scipy.spatial.cKDTree and libANN. This benchmark is on geospatial 3D data with 10053632 data points and 4276224 query points. The results are indexed relative to the construction time of scipy.spatial.cKDTree. A leafsize of 10 (scipy.spatial.cKDTree default) is used.

Note: libANN is not thread safe. In this benchmark libANN is compiled with “-O3 -funroll-loops -ffast-math -fprefetch-loop-arrays” in order to achieve optimum performance.

Operation

scipy.spatial.cKDTree

libANN

pykdtree

pykdtree 4 threads

Construction

100

304

96

96

query 1 neighbour

1267

294

223

70

Total 1 neighbour

1367

598

319

166

query 8 neighbours

2193

625

449

143

Total 8 neighbours

2293

929

545

293

Looking at the combined construction and query this gives the following performance improvement relative to scipy.spatial.cKDTree

Neighbours

libANN

pykdtree

pykdtree 4 threads

1

129%

329%

723%

8

147%

320%

682%

Note: mileage will vary with the dataset at hand and computer architecture.

Test

Run the unit tests using pytest

$ cd <pykdtree_dir>
$ pytest

Installing on AppVeyor

Pykdtree requires the “stdint.h” header file which is not available on certain versions of Windows or certain Windows compilers including those on the continuous integration platform AppVeyor. To get around this the header file(s) can be downloaded and placed in the correct “include” directory. This can be done by adding the anaconda/missing-headers.ps1 script to your repository and running it the install step of appveyor.yml:

# install missing headers that aren’t included with MSVC 2008 # https://github.com/omnia-md/conda-recipes/pull/524 - “powershell ./appveyor/missing-headers.ps1”

In addition to this, AppVeyor does not support OpenMP so this feature must be turned off by adding the following to appveyor.yml in the environment section:

environment:
global:

# Don’t build with openmp because it isn’t supported in appveyor’s compilers USE_OMP: “0”

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pykdtree-1.3.9.tar.gz (110.6 kB view details)

Uploaded Source

Built Distributions

pykdtree-1.3.9-cp312-cp312-win_arm64.whl (47.9 kB view details)

Uploaded CPython 3.12 Windows ARM64

pykdtree-1.3.9-cp312-cp312-win_amd64.whl (56.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

pykdtree-1.3.9-cp312-cp312-musllinux_1_1_x86_64.whl (373.7 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

pykdtree-1.3.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (365.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (354.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.9-cp312-cp312-macosx_11_0_arm64.whl (61.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pykdtree-1.3.9-cp312-cp312-macosx_10_9_x86_64.whl (336.0 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pykdtree-1.3.9-cp311-cp311-win_arm64.whl (48.9 kB view details)

Uploaded CPython 3.11 Windows ARM64

pykdtree-1.3.9-cp311-cp311-win_amd64.whl (58.4 kB view details)

Uploaded CPython 3.11 Windows x86-64

pykdtree-1.3.9-cp311-cp311-musllinux_1_1_x86_64.whl (366.0 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pykdtree-1.3.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (357.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (345.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.9-cp311-cp311-macosx_11_0_arm64.whl (62.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pykdtree-1.3.9-cp311-cp311-macosx_10_9_x86_64.whl (338.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pykdtree-1.3.9-cp310-cp310-win_arm64.whl (48.7 kB view details)

Uploaded CPython 3.10 Windows ARM64

pykdtree-1.3.9-cp310-cp310-win_amd64.whl (58.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

pykdtree-1.3.9-cp310-cp310-musllinux_1_1_x86_64.whl (352.0 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pykdtree-1.3.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (340.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (328.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.9-cp310-cp310-macosx_11_0_arm64.whl (62.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pykdtree-1.3.9-cp310-cp310-macosx_10_9_x86_64.whl (338.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pykdtree-1.3.9-cp39-cp39-win_arm64.whl (49.2 kB view details)

Uploaded CPython 3.9 Windows ARM64

pykdtree-1.3.9-cp39-cp39-win_amd64.whl (58.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

pykdtree-1.3.9-cp39-cp39-musllinux_1_1_x86_64.whl (355.2 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pykdtree-1.3.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.0 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.9-cp39-cp39-macosx_11_0_arm64.whl (63.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pykdtree-1.3.9-cp39-cp39-macosx_10_9_x86_64.whl (338.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

Details for the file pykdtree-1.3.9.tar.gz.

File metadata

  • Download URL: pykdtree-1.3.9.tar.gz
  • Upload date:
  • Size: 110.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pykdtree-1.3.9.tar.gz
Algorithm Hash digest
SHA256 a7bd0b37d9a4780adf5138bda56180c26d45fa86f33d0fc271a629641bce9f60
MD5 432113aeeff2871ebfc00d86a61f06e1
BLAKE2b-256 9cb86655855515da7a42028ab653093e73c9d53cd1933ffaf2b39d86b812f6df

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 bccb060a06d753d55236c3ea55bffb3090f533cc1c3698bf3d5f2213f6b79dcb
MD5 df8ef3779f336fcc32643e094c1728cf
BLAKE2b-256 19d0975bdf0ccca3fbfc8ce1a8f6a2ce786a9ac57bcc4208c31d6b54f6a8b17e

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 56.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 032804bbec4442b2f80892b10ff9df953b5f0fcd435cc14be48c41398f15aea5
MD5 f3910d6f039cae4995c95da83b8029a4
BLAKE2b-256 9d97dcbdd9c0ca9dbfc8c353353cdc7774d657714df45798939445495ead15b1

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 410f17b6e07385cdeb48c44a144beb22fc5c6e15e36f49370752ed32962dd1e3
MD5 271477b64cc9e1678f81aa0e386eedfd
BLAKE2b-256 c9705ad04810413c879ff35d44759f28d67073b2bb5756a71ef0a303b27c6681

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc54ce9a881912b9915b5dfb32c2c04de7f5741f0d0d7dd5a50b04392b0bc7e6
MD5 28825a32f002cf8a5574734e7e04a7b0
BLAKE2b-256 712f3e5034f25a41cfe66a61e18ad27a4213727d81ae7f7cc8e8f1669a2c48cc

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9464949bbdc555cafebd35d1ede6c2e0618716ee6614f9c5ed0b4891cc003264
MD5 1b9d50ce813dc1147b2524c8e6f4e224
BLAKE2b-256 0c2b43672dcf9257b95d70b42ae479131a8ba98edffb5aca84388f51ebfc1c9c

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bcbe4268844a84925e3c0c5f4e7d9b6ab45df3fa24e8439e08f4088d6b1782bb
MD5 8a86e472e5cc72ddc452b676f667c299
BLAKE2b-256 0694560314a13f43d7cbdfc23649862a8a85590b0c3c36a0820e9640348bd540

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 634ae983c96c5b153044d8bf1950bcffe01f287f6e701444defb5ff26ba8af74
MD5 f27beec518f1e98d885d5fd0e9507f7c
BLAKE2b-256 6a4db965ee54b59422a5b3cbb3f6a8cc3e0491b2eb4d293ba45d444c535b30c4

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 68d3ae19a0028c9b61e5b58f453639f2ea7af83799b2414be521423b39096e83
MD5 74551b3a50b9403b56a7398cee994638
BLAKE2b-256 20f59322596cb40967ba3958ffb6c1b92bd8890a6c26ebb8ada60d9ffc515f41

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 58.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f48f16d388db52ba3ed0278598a9cb5843a359ce354e15ed73d351a8b41d8cc1
MD5 dfd775a11c157a695e76be29f9ab7ed8
BLAKE2b-256 4232c1bba442c663bb3120d24b209806115080eb9d83139008d5508bbe0de7cd

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 188502a8e809bd5888a7f2d2eee87c2b76b89fc889ed3cb2d2c686ca732e5d19
MD5 59eae548fe90cb882aa4a15445a04367
BLAKE2b-256 67faa322fc376bc39a69d4a1affc942b0520a1812b96b3dbb1730333dae645a5

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d768319a3ade0334e39c1f74e7862a9a5bd5c929e52cf231e97ca66ad2917483
MD5 fcd3ea2968c043ec83616c3f56269c02
BLAKE2b-256 64952cae85dc9502d2bbaa5e808889490758353bf99f70045b1ef11d619a1eee

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29c5be7bb33d8a472be162a64caac59ae74f34a70b09675ab9dd6441d5b354ba
MD5 086df8259708dfe36edbc96e6237355e
BLAKE2b-256 93688a48c0e5ec6089ba051fa8554179aefb51d50f8afde2d144eac5f7e9e251

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b18bee24f61e304b358cd5111525339e2394b9ba491ae62b31d9a8f07334a10
MD5 c5525c0edc70f9a8f985810cfe38b460
BLAKE2b-256 d551d6245803cd25513a16c8cb605c9a0df7ca068021e3a1c8582333ecca10bc

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8dd862a3b85b7904be970ff7a9a0b165410f19c678708a3ed30cef3412582da8
MD5 c186e30b0650c31cc12a2f53cbbae47b
BLAKE2b-256 ec489f7a419c3eb9a0595a524b0f04097dbc3b4ad5475f7b78021953d246de44

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-win_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 ab28af0e7d48ba13fe34d969e9a4ee3852b6d15a0b03403b163821f862bd0fbb
MD5 95a70784d25b8f2012155d0aac2ef2ca
BLAKE2b-256 6498f18237b2c1df64b53a5cd551341a986aad9b4858d5a3b3f23c9a8a728ae4

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 58.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 377c1180771825be3a662d975e95d7dceedd6f1ca6577edcd9484f3c7b9133e9
MD5 6f8b39ea2242f3c1ae6d0cd20e82504d
BLAKE2b-256 406a66bfbd5d4bcf002518c90902e1df38f6e4f50ee7002df8123abb79f367f7

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c33304ea16b1ce93cfbb19c3da85361be1f5a64bbedeef37146cad5fec717e21
MD5 0cdbb0691a9ead2846c0e4943d1ac1cf
BLAKE2b-256 54e28780c72be230a8d384f491e56432ab80db4723b7fb0819aa4adbb285c991

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 feb79f58ec31f41d952d57d40da44df192aea08d2eb077014f521dd5587de15c
MD5 6a881e8dcf9fdd29554226cd8d8d1548
BLAKE2b-256 dd73606740ad3924eafa46fa86e87ca838185388637753c87d598dce534ea4b5

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 434d2f5581e70d35660d74bdbad5aff4314c0a408b1fccbe33d445af62e7ceda
MD5 34805e2ee671fedb6fb478b0e7fe2fe0
BLAKE2b-256 277aa3e280b51ae9bcf8e4580d524778c673f8d2069f1e4e3c6b393e983582b4

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d39dca52cbb77e45e0bd92a6accb58c606b3bff1db1e6439c225fb9731a46f6
MD5 409231f33090e48e9ecd107f65db2603
BLAKE2b-256 d1108dc47b9dc1c100f10316b684d3136dd9ab2682fa733d2cf0f4e5218a1697

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4e96dd1ffed08ce17f560a41b17c54210a4f5794f8304a9d2e3c8e2f24a5b7fa
MD5 319c0c18da80bfe0a1a95f93ad3cb1db
BLAKE2b-256 1e236fb7dd418cca1340d54b63ee7aefcf6f1a439246e5028870cf07faf49992

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: pykdtree-1.3.9-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 49.2 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 56cd499c9107ab482e31c02fb0e4ff8ca20b5eb8417885042fc690a963ebc5e7
MD5 7d81291b15c7c94e2c1fcc7dd736fce4
BLAKE2b-256 5b60cee5e8d63a91d3f375543a026661ba907c6669bb6b479ebff1e8ca086449

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.9-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 58.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 423b96ea7bf871630dfd28b2a03aae7d69cb3d3016164d909c36f46208ae6af6
MD5 dbf8641cd988fd7f80041724d8d29abe
BLAKE2b-256 0249bfd594ccec5dcc6fcea8c62fbbb05e63fbb92b0b68b105d4d619c4ebe3d7

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f61b9af15bf36fb02d223c121aeaa7c8cfbfe001b2879e5e3f50c5007fad3720
MD5 818e9ea23fed6f54fb7cbc569d39ea59
BLAKE2b-256 9f07d1f9d9aad206dbd9eda0b613db7c390a0155d67ba7b9fe4d71bb31e669d7

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8377862d2938f44d8294e2c5813cf9f3b18ef20fffffdec4edf851fb63cc746
MD5 09732e5be7a0f5f7686201e2ca292c55
BLAKE2b-256 bea9fc843009951ce13d7de44d9d667158039387e799869dae37be7d6875865e

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c5598a231828fa6dae9aa726191e6f4f1eb6e30294b4e58384de38242f4661d
MD5 e01eabf5d1b963d1ef0cd9b9793fb78b
BLAKE2b-256 2615c05f205f57fc6b1705dbb804164fb778f170b0f3ed69433bd24618875fe6

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3f390a85dc39c306243d8548456c7647d4a4fe071013db17d1a2bc4f080a696
MD5 2a3a06d066d12d06a3ab715f98896eed
BLAKE2b-256 a96acc306f774a9cf6e614b74207616ef8cbe1aae5b845b338811891da944f8d

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.9-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.9-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cdd82b77412da1efe5082a96473326241502604f60b9c1aa2f7b1d42e74b3285
MD5 6c9dc85b42d8248a7e853b577903d892
BLAKE2b-256 0fd7e859e3e59ac526014e664d9bcd9b761730b201e9899b4271a184cab6d9c2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page