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.13.tar.gz (25.2 kB view details)

Uploaded Source

Built Distributions

pykdtree-1.3.13-cp313-cp313-win_arm64.whl (48.4 kB view details)

Uploaded CPython 3.13 Windows ARM64

pykdtree-1.3.13-cp313-cp313-win_amd64.whl (58.3 kB view details)

Uploaded CPython 3.13 Windows x86-64

pykdtree-1.3.13-cp313-cp313-musllinux_1_2_x86_64.whl (443.8 kB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

pykdtree-1.3.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (372.9 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (364.6 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.13-cp313-cp313-macosx_12_0_x86_64.whl (340.9 kB view details)

Uploaded CPython 3.13 macOS 12.0+ x86-64

pykdtree-1.3.13-cp313-cp313-macosx_12_0_arm64.whl (62.9 kB view details)

Uploaded CPython 3.13 macOS 12.0+ ARM64

pykdtree-1.3.13-cp312-cp312-win_arm64.whl (48.5 kB view details)

Uploaded CPython 3.12 Windows ARM64

pykdtree-1.3.13-cp312-cp312-win_amd64.whl (57.8 kB view details)

Uploaded CPython 3.12 Windows x86-64

pykdtree-1.3.13-cp312-cp312-musllinux_1_2_x86_64.whl (447.3 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

pykdtree-1.3.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (378.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.9 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.13-cp312-cp312-macosx_12_0_x86_64.whl (341.0 kB view details)

Uploaded CPython 3.12 macOS 12.0+ x86-64

pykdtree-1.3.13-cp312-cp312-macosx_12_0_arm64.whl (63.4 kB view details)

Uploaded CPython 3.12 macOS 12.0+ ARM64

pykdtree-1.3.13-cp311-cp311-win_arm64.whl (49.5 kB view details)

Uploaded CPython 3.11 Windows ARM64

pykdtree-1.3.13-cp311-cp311-win_amd64.whl (59.2 kB view details)

Uploaded CPython 3.11 Windows x86-64

pykdtree-1.3.13-cp311-cp311-musllinux_1_2_x86_64.whl (442.3 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

pykdtree-1.3.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (367.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (356.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.13-cp311-cp311-macosx_12_0_x86_64.whl (343.4 kB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

pykdtree-1.3.13-cp311-cp311-macosx_12_0_arm64.whl (64.1 kB view details)

Uploaded CPython 3.11 macOS 12.0+ ARM64

pykdtree-1.3.13-cp310-cp310-win_arm64.whl (49.3 kB view details)

Uploaded CPython 3.10 Windows ARM64

pykdtree-1.3.13-cp310-cp310-win_amd64.whl (59.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

pykdtree-1.3.13-cp310-cp310-musllinux_1_2_x86_64.whl (417.3 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

pykdtree-1.3.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (345.0 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.13-cp310-cp310-macosx_12_0_x86_64.whl (343.4 kB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

pykdtree-1.3.13-cp310-cp310-macosx_12_0_arm64.whl (64.2 kB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

pykdtree-1.3.13-cp39-cp39-win_arm64.whl (50.1 kB view details)

Uploaded CPython 3.9 Windows ARM64

pykdtree-1.3.13-cp39-cp39-win_amd64.whl (59.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

pykdtree-1.3.13-cp39-cp39-musllinux_1_2_x86_64.whl (420.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

pykdtree-1.3.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (348.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (335.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.13-cp39-cp39-macosx_12_0_x86_64.whl (344.2 kB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

pykdtree-1.3.13-cp39-cp39-macosx_12_0_arm64.whl (64.8 kB view details)

Uploaded CPython 3.9 macOS 12.0+ ARM64

File details

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

File metadata

  • Download URL: pykdtree-1.3.13.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for pykdtree-1.3.13.tar.gz
Algorithm Hash digest
SHA256 3accf852e946653e399c3d4dbbe119dbc6d3f72cfd2d5a95cabf0bf0c7f924fe
MD5 b120bff426349f7035e753dd72b9c6ff
BLAKE2b-256 7a99a29c97c042d6978863740b1dc68dd8a1184a89667b25d947f78d0759208a

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 96d618fb208ecc0152877e2e74fd7428a5ed00bac32bcaf72b0d2c4ba459a1ef
MD5 58817b3c16d859ee9cf631a6d62a8b88
BLAKE2b-256 4181747c88a4779f7c52adf438ce6f45b5fefb17376876c1e4070e9f5b8e3d01

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 83b6ef87704b04b8422fa83c427a837b4fb763715a72500a49b707c0afc50b88
MD5 8c096b5c6cea575e172f42a3e846b784
BLAKE2b-256 3e7d56441a9fa0d3e28d91d88e22fa4913943490a21b8533cd5f9c9eefdf718e

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9231ba4418b0b5d9f545966f52c525945436618a61d3eab0c8003d8781b48c85
MD5 225e2f702216a8f4bb826eee3bd8f7c8
BLAKE2b-256 d771f093ce5a33d684ce87c34f8b563c4e6d2167098a2cc3a7ab35a6c423ed6a

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 faaca4cda02d2b9bfcdd441e21c76e235f1a9a38f82b0702c2ac20ecbd54ca0c
MD5 ba1253b68cc95005eb1f593933e8a4f2
BLAKE2b-256 d760efd7d393a5bf6a706e6da94097236d886421fd8c7111c359642039e86399

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7fd4189a9016def701635582fd4ef7ed4720954cb01d0c5fc473bf2c8329fdf0
MD5 5bac053be06780fb40241c84a04fd33f
BLAKE2b-256 dbbe7e9362b81a08105bb58cad02b8142381be7d2f0013c975b549ba1d1c94b4

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 4792a2564a6f465163299ecbd7b2bf9d87c653b9c7d591a89d98843382dea1f7
MD5 cf9dc9aa071c7ef3fd168b9ece82a995
BLAKE2b-256 56715b954cfa69b7f9a2462b8f10c9b9c898c7365e1cfde6e97c4d9faa57dab0

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp313-cp313-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 953a0dda3317f34e48a08819cc614269776bb2e2286c6c4ec2e02645e03ce6b7
MD5 ec69324b4e55a61d199eb310334abb9c
BLAKE2b-256 6f2d1f0d4f34038985cc9ea4b2de0ce9c5880edd53eef1203d60d0a595fc6026

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 7f2eac6c372130afd2204443e719930cdd737d7d91b0b2be3c4f2d26f124d8b2
MD5 f989305545064550d0eb52ccf549fe30
BLAKE2b-256 e60a064a4c4e1539539e80da9c3f51e6c9876a24ccd8dcd4993d6f1002c5d064

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4699631cd52b7405cfc3846b65b98380fe3e47d8abc1ef13ae2f78966a0db0ad
MD5 174d9a2cf2791fc61cecddcf6a802477
BLAKE2b-256 cbddf1fd7b5d52294d1cd6ea422602c7999aa3e5bc811cd69df5cff6e23d3a98

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b89455f5c1e261522cd5560b2ec03dabaacaf3b17a44fbdc5f319618c167578b
MD5 5ab1ded36217c342e04b4b128150e418
BLAKE2b-256 fbcc099d592f03a1edd64f14defee1de55510297e27940e62113c2c4a4bd0adb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8e4d03bbd6655af89eef51b0445139e3ceea65bd6addd666966423d1a0bde3c8
MD5 81f737a82668fc1c225b4d9c800805ce
BLAKE2b-256 02006d9c66a025387790e356247b7ad3802e7f2d19a21b8743af8d5607736986

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc5dc024bfc47f5f32eaf7ac8b2535fc374486fd33eebfe914c24e4f9177f1ed
MD5 f991047ebee64967b260f7b5ca5e8c94
BLAKE2b-256 64440da2940cdc2421291ee16ea0e8d29738836568313c7b83728a059c0002d0

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp312-cp312-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 ded3c7a6a20b9e5eddf8a3e2ce1506d45e91f1c139f1d6de0c7028bad5bad47e
MD5 5de2e1c49fad481464f198abe65d1599
BLAKE2b-256 0228b06553552d1997de4624b3e37b979d70f7a1c094359638471917ec989e3f

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp312-cp312-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp312-cp312-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 1ce7bb28aa469d032fe8f1a7068baba0b94bcd8da9e9b0b843c6d4c8fc6d362a
MD5 589978729338727950ad1ef23d72b03b
BLAKE2b-256 d32734337fdde14b29359e5e98d68052ab1a1c84f83e24c1d265c592ba68ac49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 cc842b0d533cb6cc55eca6ce4c9ed1151cc3592bd892c25b60f51d82b90c1f29
MD5 31ba7fab941e2f61afb06f9d48065fdc
BLAKE2b-256 f12f93921ac06a78cc4d1f815da7ba7714e0397b99bb16533e7af9ddfa114d15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e4aa810f9f916955b325bcf20410fce065a8c0945dabe87d1c56dc9af5d7c66c
MD5 b78d6cb1347a35f8a08be85b2b1f4c13
BLAKE2b-256 9cf14df85ce280279a227d47f237526e95c6959fe25167c0206e799e850c2512

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 898c87d6ad4867d4367bccdddcebb60b2a4badb7db4886dc34d4e18442752e86
MD5 cdd29760304e14a9ea5edb59e1e83597
BLAKE2b-256 a835c359346e2f6f12bb902149f6351b37eeb0ad2de2c9639b154c17a57a3d63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 072f71383831d4a7d1584967eb2d9fdb9832cddf704b57cec9cd886121c47fe9
MD5 5f772dcf82d81eaf9cee5e9cafb490de
BLAKE2b-256 ec607903143ac18cc92f4483845c2c36da1680917778cf42a95e91c9d206fa8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cbd16a2612bb8d98d05151226807b7080dc9521891893409b2827514f75f295a
MD5 84c5a30b0e6cbf4faf33c7e8bad98d99
BLAKE2b-256 d15284ff47c0dc35a1abfe732d5debe82ba1b55c9ca53974c6d7945ca61a2508

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 642f54938605a70ca946e3d2ec0fae31082c95dc34449befdfb83349d29803db
MD5 ccb3d241a00a57b77aad35a2a0215323
BLAKE2b-256 787352ad2f7d84f9e13fb34b4e2716952d7b7265a9ef831e82c56b3243ce1d84

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 843d210b8489d59f97c17e11c818c9c75597d22a2b0f73cfe075f6758e7c16b9
MD5 3d52f5b4d59e2be9362339f5ab866669
BLAKE2b-256 4f3a8f1d1ab1db85fe6cc64ea0d7a9e5f64b8d945fc1bd5b7fa35c73d0a3dfa3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 86ea9c075729d104432fe0bc3d4f44ba2c2593a06b111b237e0c0eed4f845b39
MD5 f4b6dbf87dc46fa61a838e735780e202
BLAKE2b-256 e27d361f1efa5be657af84ff746d2965b7cd5fd14ca45a5e0c49ad8df6e4bc56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7de1ae1e18c6961694240b11888ac88fe2b312ba0a9d20d8f93ec9ef76b116e7
MD5 f2a2dcf07fe30e302b66dacb2a52f979
BLAKE2b-256 9439277bbd5cb03edfb3179f3e7dfc50a5ef15083f62b2a69afd2a40a61aca9f

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6cac37304c55c54f03968e6491628c8e9d7b726c29eef91e1d6112a4a1b6bc19
MD5 efa9f7b513a1016411324b8de699c5f3
BLAKE2b-256 fd21fc16c560599a08fed43fed9c2f742f2b493bef9f29e8420ad4729686d5dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ddd297bdf7540d56cc0105f6f86664f16c043b308a165b44fb60b5009113771a
MD5 cc7b62c6cddfde419d6cc2494fbfbefd
BLAKE2b-256 cc491910553ddc5db1eedce380b5901d7481f5ec0dfcd51cebe932f8302316b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8c0c7f8b3bf58601c4cf11cae707bd445b392ed3c45a2dc0d5b15f0128befc65
MD5 46ed75f44b10a36707bc3c4e28d7798b
BLAKE2b-256 1f7199086ea1320500d7012a15e8894ef238d3de298fa7ccb0852f645b7697f6

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 45c8015fdf514c9d1d8f989d19eefd9699c8daf3318d5a82eeee791582b445a7
MD5 abe83c216a8f7e37af1bd8c5abf6a6a1
BLAKE2b-256 242c6adf8b10bcc90170598297dedb9574e744970557114691f1ae8bd1601e11

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 7ba325679c45ebda907bf91821441818f28c02a1a3a24adc8c0fe5cf6d4a6a23
MD5 cba3151bb632ab199c6e9068b6663bee
BLAKE2b-256 415ef7c97558ee967e8de35e1fafb2e6e64fd12737ed70e3fc223333398cfdfe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pykdtree-1.3.13-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 50.1 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 3c6b1a58a56bb5f065bd67947b4befb0a595f2cc5fced839b9c50a2411fbdf65
MD5 b6be107d482b64e1e7d82dbbc7cc87ef
BLAKE2b-256 4fefe7ea571313fe2e21aeacd16d6b2a4597d0981e273169eb36294997e53409

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pykdtree-1.3.13-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 59.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 77667ab75a422048256c32f3422b7c05c5ff19bfb38e87b330ec46abcd201ff3
MD5 ad171b79bb767c6494fa879a4a2d4b55
BLAKE2b-256 756c2ed51e73f43603b2f1ee5c69bf76be8c6b3aea16930cef7b0a49322ab31a

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ca0b58fed5b386f01f421ca033dd267b3f3be7713270feb93af58e236da43dd8
MD5 ec0e7bfcf62364732d11e921511dcfc6
BLAKE2b-256 24cca72346da7bf98efb569462624c6e364429485be4619331afc015faa55f6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dda9b2708317ad8907dc32e082a0528c824a2a85919c5aa5352f08737cfd1189
MD5 226f97dd8f24e3c8c8db04e31e169183
BLAKE2b-256 086f8d0a8e568933fe96c0d03b718fba02dd335138ef35e3fd2e36281d0c7f9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 08302481dc40274ac5df716e4d123879823f43a223f51309379a63aadb63e406
MD5 ee0a037261c3124527d77bbbd1161b88
BLAKE2b-256 b2f87eeffe16715602514c6928b7bd58d730cd7d0e224061c4dce08468887ab5

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 8a104c5d519b19f79660ea8fbc86d5d7114540d1dcccdbd6f4e7583ad4f270d5
MD5 9748967cda7d984fde6ea8115c947aab
BLAKE2b-256 8885e8fc6efe673ced4421792e5961ea4bfc8be39c89c10809858234c4093122

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.13-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pykdtree-1.3.13-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 201d8171a118533efe2a8d3eb0122cabfb0151ae6ab4d5f0b07332e7f27333b7
MD5 056bdb8c882cdb1d54990ec738062073
BLAKE2b-256 2bd65e1934608a6c70363227535cd5e64e85c5fc8e955edbea77336ef74f8c2b

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