Skip to main content

Fast kd-tree implementation with OpenMP-enabled queries

Project description

https://travis-ci.org/storpipfugl/pykdtree.svg?branch=master https://ci.appveyor.com/api/projects/status/ubo92368ktt2d25g/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

By default pykdtree is built with OpenMP enabled queries using libgomp except on OSX systems using the clang compiler (conda environments use a separate compiler).

$ cd <pykdtree_dir>
$ python setup.py install

If it fails with undefined compiler flags or you want to use another OpenMP implementation please modify setup.py at the indicated point to match your system.

Building without OpenMP support is controlled by the USE_OMP environment variable

$ cd <pykdtree_dir>
$ export USE_OMP=0
$ python setup.py install

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

$ USE_OMP=0 sudo -E python setup.py install

Pykdtree can also be installed with conda via the conda-forge channel:

$ conda install -c conda-forge pykdtree

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 nosetest

$ cd <pykdtree_dir>
$ python setup.py nosetests

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”

Changelog

v1.3.3 : Add compatibility to python 3.9

v1.3.2 : Change OSX installation to not use OpenMP without conda interpreter

v1.3.1 : Fix masking in the “query” method introduced in 1.3.0

v1.3.0 : Keyword argument “mask” added to “query” method. OpenMP compilation now works for MS Visual Studio compiler

v1.2.2 : Build process fixes

v1.2.1 : Fixed OpenMP thread safety issue introduced in v1.2.0

v1.2.0 : 64 and 32 bit MSVC Windows support added

v1.1.1 : Same as v1.1 release due to incorrect pypi release

v1.1 : Build process improvements. Add data attribute to kdtree class for scipy interface compatibility

v1.0 : Switched license from GPLv3 to LGPLv3

v0.3 : Avoid zipping of installed egg

v0.2 : Reduced memory footprint. Can now handle single precision data internally avoiding copy conversion to double precision. Default leafsize changed from 10 to 16 as this reduces the memory footprint and makes it a cache line multiplum (negligible if any query performance observed in benchmarks). Reduced memory allocation for leaf nodes. Applied patch for building on OS X.

v0.1 : Initial version.

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

Uploaded Source

Built Distributions

pykdtree-1.3.3-cp39-cp39-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

pykdtree-1.3.3-cp39-cp39-macosx_10_14_x86_64.whl (59.6 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

pykdtree-1.3.3-cp38-cp38-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

pykdtree-1.3.3-cp38-cp38-manylinux1_x86_64.whl (231.9 kB view details)

Uploaded CPython 3.8

pykdtree-1.3.3-cp38-cp38-manylinux1_i686.whl (217.4 kB view details)

Uploaded CPython 3.8

pykdtree-1.3.3-cp38-cp38-macosx_10_14_x86_64.whl (58.7 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

pykdtree-1.3.3-cp37-cp37m-win_amd64.whl (52.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

pykdtree-1.3.3-cp37-cp37m-manylinux1_x86_64.whl (212.5 kB view details)

Uploaded CPython 3.7m

pykdtree-1.3.3-cp37-cp37m-manylinux1_i686.whl (202.9 kB view details)

Uploaded CPython 3.7m

pykdtree-1.3.3-cp37-cp37m-macosx_10_14_x86_64.whl (58.4 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

pykdtree-1.3.3-cp36-cp36m-win_amd64.whl (53.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

pykdtree-1.3.3-cp36-cp36m-manylinux1_x86_64.whl (212.0 kB view details)

Uploaded CPython 3.6m

pykdtree-1.3.3-cp36-cp36m-manylinux1_i686.whl (202.4 kB view details)

Uploaded CPython 3.6m

pykdtree-1.3.3-cp36-cp36m-macosx_10_14_x86_64.whl (59.0 kB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

pykdtree-1.3.3-cp35-cp35m-manylinux1_x86_64.whl (209.2 kB view details)

Uploaded CPython 3.5m

pykdtree-1.3.3-cp35-cp35m-manylinux1_i686.whl (197.7 kB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: pykdtree-1.3.3.tar.gz
  • Upload date:
  • Size: 79.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20201009 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3.tar.gz
Algorithm Hash digest
SHA256 240e8783860a5ec29aa82332b303bd61cf20c1d87aa620c3d962882d4050d097
MD5 83a879c81291e9ed7b5a59cbafed896d
BLAKE2b-256 2cb1483b7bcc7eef650c504a51b36874d3e02b8203d5cc6d49c8e0e421eb219f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pykdtree-1.3.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for pykdtree-1.3.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0385b92ba55c6757aa63818778916a9ac5e1f2c13988cc3d53cb78f491ae275d
MD5 677ea43470755f42294b3021344b9269
BLAKE2b-256 dd8a85fba1c7be9459cbe5afc4857520aeeb3a33ab3e46ebeca800ba1ec5c258

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp39-cp39-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 59.6 kB
  • Tags: CPython 3.9, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for pykdtree-1.3.3-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 e095c5a6c49c5c37ab1fe8808dfc8684c2aa01d17f93e5eecca028edbf0dc452
MD5 b8efe8d5979dfe7f917cba2a9236e30e
BLAKE2b-256 635c75726c0daf89d0b344e6effb75fbafae5689fb430af267a4cef900140a90

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ae7b2fe5acb51f038ea190c095124b9eea88de7f02fb9f53d4320657defa3053
MD5 1d7e558da2e639baba0a91754b631d70
BLAKE2b-256 811c47cd38320ea1117c37d90996d1d314287ef887dff1d45500986387367bda

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 231.9 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9d7234c0bb5f53670dc242a8dd09770ce5931037b94ff0edf0536921dfb9162d
MD5 fd8bae03d864d3f77d5080fc1c6836a9
BLAKE2b-256 3003fde4239623fc616b072f57ccb0c0c2ce2335d3bfd8be76a59e765cf71dad

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp38-cp38-manylinux1_i686.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp38-cp38-manylinux1_i686.whl
  • Upload date:
  • Size: 217.4 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp38-cp38-manylinux1_i686.whl
Algorithm Hash digest
SHA256 6e7ee047c2386c997691134841d64e6eb4a8e24863a92f5478a49b1802226c46
MD5 1e0d6b73ceb7f87ea9c777fb35eb59cc
BLAKE2b-256 020a546cf86ad8b3c7c17ba428e29812d9079af49642848d581712ae1565f4dc

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 58.7 kB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 5b7dd2bc3f66c69dd75904c2873022b9d7836db91618a0fa97349384ca69eaa2
MD5 0dadc7ea86db3eebf3f61e30ff2190ee
BLAKE2b-256 1c75343d781e7a4fafff9bc4805ed771f088f0864e9548df0c59bc5fd47968b3

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 52.8 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.9

File hashes

Hashes for pykdtree-1.3.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 adad18e80681c830615f25762759164697919693ed6ccb8838ff1372a58873c5
MD5 b13431bfe2b13c05e5e48447fc847f29
BLAKE2b-256 f88fe5ac5d33fcf5b729e7482930aff1ed9651a92aea7d6f00abcf9808d9b915

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 212.5 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 84d9ed2166339583e4240b35c3bd9ee69cf58b29c4c352565638f93385749172
MD5 6a468a41e1c92e4f3bec804903c94d91
BLAKE2b-256 08e3520b6b53ea7be14dc52154fe61a906c9be71bb72ecac461b6b4469400a1b

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 202.9 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1b5c67d0c5374fc46d756cd8c5636fb881be092e987f844b2513dace7afa4a80
MD5 b4192e8c40f5d0af9f7696e8c0ae483b
BLAKE2b-256 4bf459b42edc099c7f33a74b652a8493ff1665af1c4bfe43df77588e6cb501e0

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 58.4 kB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.9

File hashes

Hashes for pykdtree-1.3.3-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 4b2d8a727839dcf0abdd3e806e1ab562922605373ea64a1de8699736717822f5
MD5 6bef9520ec2d2855ffbed7098d7099ea
BLAKE2b-256 e9c69476445a199b94fe707940344fbc4c3dd345141a504f78adb1710958523b

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 53.0 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.8

File hashes

Hashes for pykdtree-1.3.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 3097acd0b1421dfb461dd681552eb02ad4ccdd15b7c8403801659d1997056396
MD5 baf318ac9306722b37061e237fd115c7
BLAKE2b-256 a409ce444b8a686a377ac1b38b87bba4bddd3b217100dcb4a1527083efb3da77

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 212.0 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a19c942e81528d400032b68ed0634b856df764ca155a4632faf7072e7951f7c5
MD5 c76f95829784139721df3598d18a7e77
BLAKE2b-256 a3e2e56c6beae5f8928c765009a1dd649efada8ae701b280c2a1bac99b93b32d

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 202.4 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 d9f7e7f8a7923431ee3fd147e8478e4a01a2fb289e1548a10463ad380e654cd3
MD5 46e06b5c36beae7836ad038c72d73f98
BLAKE2b-256 553ef679b878d68347c0a7a21f3eca2f66b22259d741f137297f0ddf0ececb0a

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 59.0 kB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.12

File hashes

Hashes for pykdtree-1.3.3-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 25b0e600e329451dc933d08805f552c72ff6a22f35253bf9857349c4a2aa5b0b
MD5 e418ae27d1a4dd941051988887ebe80d
BLAKE2b-256 c36e3997b1c650ae8edbf5bf161075e30b431d266df1c4535864b3450500a9c4

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 209.2 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9ab1492ce9dc374a77a79ae17ce17398824995078df761120dd8084a5dd4dade
MD5 75f2ada5e28cb92b0f99702403daacf3
BLAKE2b-256 bac70e7a0d4da748de7c15b1773fe79dae6ec656c9d9b3804481ee353f19bf54

See more details on using hashes here.

File details

Details for the file pykdtree-1.3.3-cp35-cp35m-manylinux1_i686.whl.

File metadata

  • Download URL: pykdtree-1.3.3-cp35-cp35m-manylinux1_i686.whl
  • Upload date:
  • Size: 197.7 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for pykdtree-1.3.3-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 aa0c7e95ca2f60e5fc211c84e38fd8671f21b970983cc8a79a19793fb0213051
MD5 7c9f74873f506a0f3f6947783660a779
BLAKE2b-256 88924f15f2d7f44803540f63c461d34e094c7a6bb8cbfc2fc83d357cd231f61e

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