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

Uploaded Source

Built Distributions

pykdtree-1.3.12-cp312-cp312-win_arm64.whl (48.3 kB view details)

Uploaded CPython 3.12 Windows ARM64

pykdtree-1.3.12-cp312-cp312-win_amd64.whl (57.4 kB view details)

Uploaded CPython 3.12 Windows x86-64

pykdtree-1.3.12-cp312-cp312-musllinux_1_1_x86_64.whl (383.5 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

pykdtree-1.3.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (376.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.12-cp312-cp312-macosx_11_0_arm64.whl (61.5 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pykdtree-1.3.12-cp312-cp312-macosx_10_9_x86_64.whl (66.3 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pykdtree-1.3.12-cp311-cp311-win_arm64.whl (49.3 kB view details)

Uploaded CPython 3.11 Windows ARM64

pykdtree-1.3.12-cp311-cp311-win_amd64.whl (58.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

pykdtree-1.3.12-cp311-cp311-musllinux_1_1_x86_64.whl (371.0 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pykdtree-1.3.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (365.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (355.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.12-cp311-cp311-macosx_11_0_arm64.whl (63.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pykdtree-1.3.12-cp311-cp311-macosx_10_9_x86_64.whl (69.5 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pykdtree-1.3.12-cp310-cp310-win_arm64.whl (49.2 kB view details)

Uploaded CPython 3.10 Windows ARM64

pykdtree-1.3.12-cp310-cp310-win_amd64.whl (59.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

pykdtree-1.3.12-cp310-cp310-musllinux_1_1_x86_64.whl (357.8 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pykdtree-1.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (331.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.12-cp310-cp310-macosx_11_0_arm64.whl (63.1 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pykdtree-1.3.12-cp310-cp310-macosx_10_9_x86_64.whl (69.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pykdtree-1.3.12-cp39-cp39-win_arm64.whl (49.9 kB view details)

Uploaded CPython 3.9 Windows ARM64

pykdtree-1.3.12-cp39-cp39-win_amd64.whl (59.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

pykdtree-1.3.12-cp39-cp39-musllinux_1_1_x86_64.whl (360.8 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pykdtree-1.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (346.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pykdtree-1.3.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (334.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pykdtree-1.3.12-cp39-cp39-macosx_11_0_arm64.whl (63.6 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pykdtree-1.3.12-cp39-cp39-macosx_10_9_x86_64.whl (70.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pykdtree-1.3.12.tar.gz
Algorithm Hash digest
SHA256 cc20b2a67c64056485a314d2c2b6dba354af7ee1c8fb8dae1be6f2936a374341
MD5 9094988f1c30d42212ac0b406c200827
BLAKE2b-256 35ad2a03094c9490077e48cfb7af19d9d49cf304c80fb6d68e67073964e9ac80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 67a87b1a4f9ea484a3269cb7f468e3993bc03bc984ce63215302280061e5b691
MD5 3617b2a1ef70d1c1d393789dbd588bb6
BLAKE2b-256 a31617f7acb968be0630e64232a54505547683c8cdbfbdb50467b48d186c2ecb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c79d6db009714c1b2092366c78c5ffc645cfe5b7103ed4f94eabba3833b70088
MD5 10d3802bb3de62c54f51d2ac81255bad
BLAKE2b-256 fcc81cc5b670b40257f58b36d74833be829ab4b5a751f75fcaf6444fad869d86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 3fd826f886bff82b4c25cdc61df5142e309a45421388de2922bd315995d7fe8f
MD5 e7b90f1c3d7c459dcf939f8d8ab0f33d
BLAKE2b-256 4864996cb116f13bc68b081bb089016a064abd0f075256b34a3a753900b259c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 88f52541f094ada031cee6ab44864d25d41ede97dbdb78cf55f5e9919e366841
MD5 88f925477f80a930919fb30e9fe58478
BLAKE2b-256 d3ed5f3f4ffc6dcb0ed677bb93a8faba0a226551dc543715ea2e12c11d753515

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 41020443270ef8aee5caf513d8a060126743a0aee19d33d35a6684fa2d37c13a
MD5 8ad8e3ffd30ecd20023b5db2b38cdf3c
BLAKE2b-256 e4711738cb16b70006256023ae786d436ecb39fa952d0e694bf4d8f4b409a9ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f985d1b742452ff597fe9c9a0ea2c89cd85b298bcf3f6a565fa0d7ce66eb313f
MD5 430055e1f047526e313303933ecef17f
BLAKE2b-256 fd43d4381658a39f4f29edc615a48f3dd4ff9e3f45c7bb68519ea092560a78f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d20a8f54d29d255fad4bac26e80231067d9331bb9aacc2ee6743e4325b346fa
MD5 cb8d0d47523f5c5d3dba57db7a22894e
BLAKE2b-256 ce3446096c6c822926f0132883e6622755307df6318bcff8796e3beae282ab53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 199585ff5a41c5f383bef3a68cff5c651b342045a8c7409576e3b17fd8a57f4e
MD5 a1b205eff8eff2e956218867da700dab
BLAKE2b-256 0497bd9db567ae4c0e6a27df69176efc34abf68d7076ec0cd2edc128bfc6f8f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1b9473cc5c62f1a7e61f3cabe5d4098b9ec61a63040e1bbd74e5d4482c3603d9
MD5 03794a4e3d57b3c8d01561e96aa50296
BLAKE2b-256 4ee4bcd94e77eae1c9f95394a7355064ea7308e4f99d5824f732d0e570a76849

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d5f64e2dcc603c436ec7fd00c975f38537930cf1097e6ae4d9a80e1e900de528
MD5 feb46e7e50d6a777de78bbbcd4346d88
BLAKE2b-256 bbc8f52666320b9b5d7158c597319da355ff779efd97c58ad3fbdeb8176b1f9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7882706b092b501dd4e74d7658d9ab06d1eac2f88e819877a52cd7441b21a806
MD5 2ed0e252165f78f04d25ba6dfb8bb585
BLAKE2b-256 0c3d6d98090cb3b9feff160ebaeb37520f4b7590e03e41a67e9ea34360ab969f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7771f1151e97080c3efb38e444ed6912dede203ca7e1d415f9b43f880cf92bcb
MD5 338417532b3d9611349975544dc25536
BLAKE2b-256 7e898dff63ef9ca3e915238459b721dace2c25b0a80060acb216d06f06f911bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b8079f357d2358d4c20b2cb779d36add251626ebab1aaf2e03ce4e70355eff49
MD5 9008672dc424db958041967db7e88e96
BLAKE2b-256 62634743cd598a6a44dcd3c4579a8c81c606897de0a07685feb127cdf46edfec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 83263e154871934423850d3b6eaaba6eb38463806d76313cbfa8798ecd7ca0a3
MD5 2c0984b62c4bb56ad089e693985ef2d8
BLAKE2b-256 36af20a84378d99ce02fc8226c344cdb6ef448072ace563529ef581d0c8933b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 3ebab60fa3dab12791fd04987aef53315b8acae196f45e6bad58a2086c1b3436
MD5 d832140c3237240149fc10d9e67bb0b9
BLAKE2b-256 d4452149107805ae7ccfad6161629232d51961041577d249f9034b18c0c6dc57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e3ef09d033e4af683b08cde01a4f3c96d4a96329aa6e3135095325befac28007
MD5 f7aa37bcc4406e08c0300f708c249db1
BLAKE2b-256 73aa092444d8b1d5934cee8536965fb9f3c397954a764b010dfd31f653f8facb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 046efd4607208d6edeedee3d67754c60118086c6ca6a83c33ee01ec70749ea51
MD5 259b98d6e973203c7b1b6df87972e839
BLAKE2b-256 2d50f92686c8d0679e769f841810773a3a4dabfbd3e85e5462c7a5cf85acde8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7437e854b976c51fb1781392d148d6d9244945e1504e49bf490370464848260
MD5 b88063516eae64a94f2778ca830613d4
BLAKE2b-256 4f43ea31c8162106bac82f8baa7a22e81d937bf046d4b976fd5b0814b4972145

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 431194955fd4f2be298a778643e36392bda9c43101dcb719146a050f3455d8cc
MD5 e92503cb3241ad9cc6166c3680adf232
BLAKE2b-256 a49eb7e8a303c4cc0fa087007e03c5e588414215681828d4e9e556ac4c0be8db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76d7f9ba21864701ac1206038abaf7613f35e96312731df770327e763ebb8d3a
MD5 27f2997283506d3cef3dee21478affca
BLAKE2b-256 85f9451fa5a93140590d07a3603cab5de42614efdc331d2c1b687d98d31e862a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a072b845cc2983eb79fbfa9baeda4f4b3c3e6db0a54e1c89434d353246e66104
MD5 90788c5117a168f2bb6d4432172abfc4
BLAKE2b-256 28c8e84c076cc2c30e427faf6439c8e22f87169dbb2d4f35c5941206f8daff9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pykdtree-1.3.12-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 49.9 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 2e23bdaff080affc415b614f2cb230616fc4c4095b56bbb614c56b67f11f3ed1
MD5 93cd026c6eeb535f05cebda38313bbbf
BLAKE2b-256 1012fa1f83399742148519a5277e383547941e9999acae8639b385cf6dd8963c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pykdtree-1.3.12-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 59.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b6cc13f4cc1a5ec967d47db088b6423a629127c43184e5857c631ccc64a8c590
MD5 6d653b6704547ee8f95dacc7c700cf5a
BLAKE2b-256 25cfea3a964b95cb12ecace25f281fd04dccb9e1063d43f4d8a9bbbcfc142572

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1e171cc813c54ff4cffce844230575334c7298aea0c78c1b33a533995608fce5
MD5 4d8982e261110f524216a4959a74c1f5
BLAKE2b-256 613bf801a35aa1fce2139376a8404703a95621c10b04711ac8fdcf10b842dd59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba7d8dbd5976a029b59d5c9893fe0448f9c452ca3b08aaf9be4d8262fbeab42f
MD5 327de3e3f44655c2a08a85c76434c90f
BLAKE2b-256 ade94282e36d68d681eefe28b9c966a081af45ca7373628c07b08327f7bc2c46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8dfe19bab0e7bf92e69657d5c03b3fabc89c2afed64ae394700d09e00b86b07f
MD5 70cc0209d68831b2760842b88e05008a
BLAKE2b-256 9c6c95e152a4b35d59261358198b69ce68f5cf1118c91bb602846a8d2352128e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ba445012613a5284bfb57e119019138b15b363d39246a618d2e9994505baa2e
MD5 bd5d4c3623bc94dd5639d0adcc68c2ca
BLAKE2b-256 ee49b9f794f80bae54a99fcbe25f6894a39d239dd1b78ae54883d8ee56914bf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pykdtree-1.3.12-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8c72357382c37e8d9af7e6b0257340a4c37bc20c9034559af11527034ba3e7b2
MD5 9412bfc32c1a7e23611a27e1984bf7b8
BLAKE2b-256 ac935e13a6c25665d96b4a3d5c3786fcdb1730dd7c261779dc19936188f20471

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