{"id":21755,"library":"pykdtree","title":"pykdtree","description":"A fast kd-tree implementation in Cython with OpenMP-enabled parallel queries. Current version 1.4.3, supports Python >=3.9 and NumPy >=1.25. Release cadence is irregular, with several maintenance releases addressing bugs and build compatibility.","status":"active","version":"1.4.3","language":"python","source_language":"en","source_url":"https://github.com/storpipfugl/pykdtree","tags":["kd-tree","nearest-neighbor","cython","openmp","numpy"],"install":[{"cmd":"pip install pykdtree","lang":"bash","label":"Default"},{"cmd":"pip install pykdtree --no-binary pykdtree","lang":"bash","label":"Force source build (for OpenMP)"}],"dependencies":[{"reason":"Core dependency for array handling and API compatibility.","package":"numpy","optional":false}],"imports":[{"note":"Direct import from kdtree submodule.","symbol":"KDTree","correct":"from pykdtree.kdtree import KDTree"}],"quickstart":{"code":"import numpy as np\nfrom pykdtree.kdtree import KDTree\ndata = np.random.randn(100, 3)\ntree = KDTree(data)\nquery = np.random.randn(5, 3)\ndists, idx = tree.query(query, k=4)\nprint(dists, idx)","lang":"python","description":"Create a KDTree from 100 random 3D points and query nearest 4 neighbors for 5 new points."},"warnings":[{"fix":"Ensure data is np.float64 or np.float32, and for large data prefer float64 to benefit from OpenMP.","message":"Input data must be a 2D NumPy array with dtype float64 or float32. If using float32, queries disable OpenMP parallelization.","severity":"gotcha","affected_versions":"all"},{"fix":"Rebuild trees after upgrading pykdtree.","message":"Version 1.4.0 changed internal integer sizes to handle large arrays. Trees built with older versions cannot be pickled and loaded in 1.4.0+.","severity":"breaking","affected_versions":"1.4.0 and later"},{"fix":"Use from pykdtree.kdtree import KDTree instead.","message":"Importing KDTree directly from pykdtree (e.g., from pykdtree import KDTree) is no longer supported as of 1.4.0.","severity":"deprecated","affected_versions":">=1.4.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use: from pykdtree.kdtree import KDTree","cause":"Import path changed; users try from pykdtree import KDTree.","error":"ModuleNotFoundError: No module named 'pykdtree.kdtree'"},{"fix":"Upgrade to pykdtree >= 1.4.0.","cause":"Integer overflow in tree indexing before version 1.4.0.","error":"pykdtree.kdtree.KDTree not returning correct results for large arrays"},{"fix":"Upgrade to pykdtree >= 1.3.13.","cause":"Bug in versions < 1.3.13 when input data has zero rows.","error":"Segmentation fault (core dumped) when querying empty array"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}