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

Uploaded Source

Built Distributions

pykdtree-1.3.11-cp312-cp312-win_arm64.whl (48.4 kB view details)

Uploaded CPython 3.12 Windows ARM64

pykdtree-1.3.11-cp312-cp312-win_amd64.whl (57.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

pykdtree-1.3.11-cp312-cp312-musllinux_1_1_x86_64.whl (385.7 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

pykdtree-1.3.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (378.2 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (370.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.11-cp312-cp312-macosx_11_0_arm64.whl (61.8 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pykdtree-1.3.11-cp312-cp312-macosx_10_9_x86_64.whl (67.0 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pykdtree-1.3.11-cp311-cp311-win_arm64.whl (49.4 kB view details)

Uploaded CPython 3.11 Windows ARM64

pykdtree-1.3.11-cp311-cp311-win_amd64.whl (59.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

pykdtree-1.3.11-cp311-cp311-musllinux_1_1_x86_64.whl (377.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pykdtree-1.3.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (370.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (359.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.11-cp311-cp311-macosx_11_0_arm64.whl (63.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pykdtree-1.3.11-cp311-cp311-macosx_10_9_x86_64.whl (69.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

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

Uploaded CPython 3.10 Windows ARM64

pykdtree-1.3.11-cp310-cp310-win_amd64.whl (59.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

pykdtree-1.3.11-cp310-cp310-musllinux_1_1_x86_64.whl (365.5 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pykdtree-1.3.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (335.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.11-cp310-cp310-macosx_11_0_arm64.whl (63.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pykdtree-1.3.11-cp310-cp310-macosx_10_9_x86_64.whl (69.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pykdtree-1.3.11-cp39-cp39-win_arm64.whl (50.0 kB view details)

Uploaded CPython 3.9 Windows ARM64

pykdtree-1.3.11-cp39-cp39-win_amd64.whl (59.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

pykdtree-1.3.11-cp39-cp39-musllinux_1_1_x86_64.whl (368.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pykdtree-1.3.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (349.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (338.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.11-cp39-cp39-macosx_11_0_arm64.whl (63.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pykdtree-1.3.11-cp39-cp39-macosx_10_9_x86_64.whl (69.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pykdtree-1.3.11.tar.gz
Algorithm Hash digest
SHA256 6c123c7bae5213af223c529a8b4161c07eb854a6fe4038b36952bada2131ebcb
MD5 fce28bde9039c10aa470506ca99431ad
BLAKE2b-256 00b7fdfb183d470e405ae2a75d01e935ad778e2b2412abdfc42fefdd466f029f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 ef3ac55d8e9e7f525d76704b2aadfe3bdd8db9e0ac84043558d2d9686a492d9a
MD5 7234224e31623ed1b1e6c7210d27bf12
BLAKE2b-256 0afbb52e7e821de9bdf5eea726e8f11435810d0fe74a4276017207b8cc2da952

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 70399c6d3fb9071b5b18107e73986f0582b6f9fc3e8c8ecca73c61bed6f0f756
MD5 d1d06184762bd1a9bcda1abcc1829939
BLAKE2b-256 0db73c398336d6931a0ac89587fb2e1fb6375a92a1d285fb59030a032885eb29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 22f892293462bb6ae90eb65cc44ff370cd824d3fafc3010286344c8f43bfa2ab
MD5 47773378056fd2bf4773d706802c3997
BLAKE2b-256 349d2d0c43f5b51a461ce7bc777fb6296104caf31dc4fdffc145a3adf8f0eaa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21dfcb44e4dcbb01348a010095024b55719e41a824a21f876a62193b27453b49
MD5 0d422f52e0c87455e1464154eb30435f
BLAKE2b-256 dfb62120836be4acf547f555e697828c9bc4620e61b7b9a7f900029a4faa3d66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 56043a31ddb5b2a781b85636fcf41d1437d15698ad2833b773243f46839b3ead
MD5 b7bc9ac65d4cffb87e6bbc806455afe3
BLAKE2b-256 01d88a7616091d279bf5df1f5ae4cc39cea54c5bad7932ded6f382ee60ee663f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bcda95a6ea6f7258ad4469de23dff7185e7209eb341ddd02d5be15e78f5991de
MD5 8dd32e833f51d71967a0d23102b99eba
BLAKE2b-256 98afd8e0f165fe97214491fadff71d78134beeb1a2d83c2308182edf9ad2ff97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ef49d3f61187720dbbdc2bf14cf3bb120cc8c4ca6e4a08e7f922ebe8e7cd3268
MD5 390b4d493d3c010ec708a0220c71568a
BLAKE2b-256 694f3c82a82d5855207cc656b0bfcabb9dbe702ca33e1d3821a17405c4b2e7cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 e8be81b9d246fb1e1dfafb2e65273a9ce806f57bf115d86f6d1200c85532768f
MD5 255e3fac51973696a640d92a5e096911
BLAKE2b-256 75dd90a5ce00373188df3ed6ce5802b31ba4d2d1ca6d09685981ef3963039cd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ea760210105cf28c92cdc277043f70cb0f1b7577de61bbcf5326224774c15cf5
MD5 61f8fa8ec82d8874fd5a7f8f2c50e27d
BLAKE2b-256 314749955f194ffc092feeefe7cacf09551ba8ee31bc5cfbf4836a24e0e40492

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 efd53b31134e2897eb3a127d3fced087da009d8f73eea3f46043d5cd452cfbc6
MD5 19f47140feee91b3cd14ef6ce6a67293
BLAKE2b-256 72f667cdb56a623a4ea5f374db9a248521f586ded052028264b2ca7f7f9648b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee7efe507fe829fa01e001108ff1021f5ae2b2694cfc710c589c2e5ce7b78b80
MD5 230550ad33ff2fdf6f8df8f86b72ae72
BLAKE2b-256 6d8b67e9deb0bea7d19d3923b6e7aca654f3aead3a195c2944f59170597373bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 df4ea9f2a6b41a3044f5196051e771da278a0506ec74b90b7b3e668e8705e9c2
MD5 6fc737a7cafe697648dcea10c16c1108
BLAKE2b-256 eaa06b4bb40b0ab36bc7154c5f144723334953aace669047e7f9c0b81807ce69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c8d30672506cf88ec82fd0a267ab433603e824d24b0dc903eea38818ec4c21a
MD5 45bc1cfb5fb72d9da0d8d5f033865f5e
BLAKE2b-256 19fec7cc9568a69162ae6f78897215d880ebbcc4b311da7a08a8a7e3ac6d2f00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9226b7f1448a37e0215e30110e9d4373c173ce5f4d48f191b7fbd959c40b3f2e
MD5 b346192ec21f60af9e88279bf84b99ed
BLAKE2b-256 2b1a3273651f2ec0b27b5afb45a79f0d9a05626cf70d4f87bd8eb3d3d3318414

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 97d902acf0cdb0134e1ce063f7d5b3a8698bce154d484df91908ab7b0bd29a3d
MD5 42a4563af48b20ba490bca0dd1ee3d9f
BLAKE2b-256 4aff4d14edd917efd47f4d60128f8ae78937ef3c63f2c6166dda690196999062

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5642f595d8ef68a3a1845e2ac3e858e6cf375e6d746e8d013f9ff6de80772161
MD5 6bae31cc207d4d6b81658442449167b7
BLAKE2b-256 a2fa9a1f6263fe1314e487adcff4eb6778e8185011524a1c75f71b9ab1284577

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cf18379fa179b4583e1e1caa80f2d4be3496d1af3ef4f379d47b49759f404b52
MD5 4f9101277894cad2475093db3ea31ef3
BLAKE2b-256 e661fed804d855300067ad296d64e393c3380d3fabfd2fd222bc68f2134d1332

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea145ae0a33560282c82e21117e4bd995e6b8434d6a86465be6d7d497b41f474
MD5 a231cf75ec182ecd18f3e41fd2bd9883
BLAKE2b-256 98b0808cd2de4f38c019ad88b50ab2e83e2f788ed398e0be9f2c8bcaeecf45f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7ebe5ffc81c644201bfe4654fb3947403e7cfefb9e422f86c4101c71f8b12e34
MD5 f516657fbab71da99938fea78bc29f99
BLAKE2b-256 c0d340d3b1daa0dba6c92e305a6b2c3e719f129339eaca2b6ee773f03c9ed531

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c00d3623494debeabe8622cd3fe3e45f1a740df6b53752c09f75fee2a071e5ec
MD5 cced6c66436126234784ae882c1ebb93
BLAKE2b-256 f4e587c8e2ea65400bb89b330bc055f9cb69e6129969787beb9599fe7ed2765f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 69018aa08c47604a893e745357b705a9426409d4daefc7167458c21dd9e51e1f
MD5 9924b25fa931a36aceb4611da8728057
BLAKE2b-256 097fd0693869ad5248816560f0ef637092fce71c7c0c66042e9b6977eb9682bc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 f083491f94635a22ab05cec2d88cb3855ea3732126ccc01fa3caa243e000dbcd
MD5 f765f7c780c238581f8b0430e18fc2db
BLAKE2b-256 d03bcb606d7a3b8e6f3ad787cc651a44af6474cce81dc10e6d511c110ad948b1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 709f69876598c33e884a86020ce4f2947668df65ba7744575c413645b9982eb3
MD5 c72ccfd9dcc9d84610ac45f931dd73a4
BLAKE2b-256 314ea53fb293570f62d50e384ccf7a3dce4f9213a13a69fcd31c62893232c8bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2e34c3ab17a4a3a3b842941a0b5e57b524eb3f084a1aec30b95350348f1aecd7
MD5 a84fb8fe144d5e234210a981ce2c3ab9
BLAKE2b-256 64e82d5404a7956858f77f247d9213f46ab901b7e17cb87699202a92be5f8ac2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39f1cb92fdd60834daaad7c9d2757a4afef99089f0c153fcf92adfa9cf54a61d
MD5 119fa18f880e0b1e591ef5a56c80d7d5
BLAKE2b-256 7147f5a722c255a223a93bf37203a6ced15bbd3f452d1e3aa29a805e6b0c5251

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d8273ddef4fe1cce26072148f8c4a0c6f73561466fa26e596f5826515e437243
MD5 899b652f72484e10ed7ad2c9c1e4d83f
BLAKE2b-256 8cfbaf469885ccbaca28286a06e50b5bbe30b593eb54fbf9600b615b8b336c2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4497b842270343fab67215926e2516f34a58cfd15b189c5c93b0542dc6c6a971
MD5 facce62bf3a55d4199a99c270bbb6b2c
BLAKE2b-256 0701e2155b22152e788ac6da65e4f4a7bc7d5773fed55cf3a3843a693a0f4c02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.11-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f19533f636407cf87dc40d7c0c01904700dfb25e10461a80721b3619ea94c071
MD5 a56f91075a21bb54a0c9343ea242fa91
BLAKE2b-256 344966ed4c34b80391bd5e77b566beb97c55aa9e4f67e2287f1d886234cacaf2

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