{ "info": { "author": "Paulo Emilio de Vilhena", "author_email": "pevilhena2@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Utilities" ], "description": "=======\nKdQuery\n=======\n\nKdQuery is a package that defines one possible implementation of kd-trees using python lists to avoid recursion and most importantly it defines a general method to find the nearest node for any kd-tree implementation.\n\nGetting Started\n===============\n\nPrerequisites\n-------------\n\n* Python version 3.6 installed locally\n* Pip installed locally\n\nInstalling\n----------\n\nThe package can easily be installed via pip::\n\n pip install kdquery\n\nUsage\n=====\n\nThe Tree class with the default settings\n----------------------------------------\n\n.. code-block:: python\n\n from kdquery import Tree\n\n # Create a kd-tree (k = 2 and capacity = 10000 by default)\n tree = Tree()\n\n # Insert points with some attached data (or not)\n tree.insert((9, 1), {'description': 'point in the plane', 'label': 6})\n tree.insert((1, -8))\n tree.insert((-3, 3), data=None)\n tree.insert((0.2, 3.89), [\"blue\", \"yellow\", \"python\"])\n\n # Recover the data attached to (0, 3)\n node_id = tree.insert((0, 3), 'Important data')\n node = tree.get_node(node_id)\n print(node.data) # 'Important data'\n\n # Find the node in the tree that is nearest to a given point\n query = (7.2, 1.2)\n node_id, dist = tree.find_nearest_point(query)\n print(dist) # 1.8110770276274832\n\nThe Tree class with the optional arguments\n------------------------------------------\n\n.. code-block:: python\n\n from kdquery import Tree\n\n x_limits = [-100, 100]\n y_limits = [-10000, 250]\n z_limits = [-1500, 10]\n region = [x_limits, y_limits, z_limits]\n\n capacity = 3000000\n\n # 3d-tree with capacity of 3000000 nodes\n tree = Tree(3, capacity, region)\n\nThe nearest_point method\n------------------------\n\nLet's say that you work with some positions over the superface of the Earth in your application and that to store this data you implement a kd-tree where each node is represented as an element of an array with these specifications:\n\n.. code-block:: python\n\n import numpy as np\n\n node_dtype = np.dtype([\n ('longitude', 'float64'),\n ('latitude', 'float64'),\n ('limit_left', 'float64'),\n ('limit_right', 'float64'),\n ('limit_bottom', 'float64'),\n ('limit_top', 'float64'),\n ('dimension', 'float64'),\n ('left', 'int32'),\n ('right', 'int32')\n ])\n\nIf given a point over the surface of the Earth you need to find the nearest position of your database, you can use the nearest_point method from this package. You only need to define a method that receives the index of a node in this representation and returns the coordinates of the node, the region where it is and the indices to the left and right child. For the implementation mentioned above, it could be something like:\n\n.. code-block:: python\n\n def get_properties(node_id):\n node = tree[node_id]\n\n horizontal_limits = [node['limit_left'], node['limit_right']]\n vertical_limits = [node['limit_bottom'], node['limit_top']]\n\n # The region of the space definied by the node\n region = [horizontal_limits, vertical_limits]\n\n # The position of the point in the space\n coordinates = (node['longitude']), node['latitude']))\n\n # The dimension of the space divided by this node\n # 0 for longitude and 1 for latitude in this case\n dimension = node['dimension']\n\n # If you want this node to be considered\n # Set to true if this feature is not predicted by your implementation\n active = True\n\n # Indices to left and right children\n left, right = node['left'], node['right']\n\n return coordinates, region, dimension, active, left, right\n\nTo call the method:\n\n.. code-block:: python\n\n import kdquery\n\n def spherical_dist(point1, point2):\n \n .\n .\n .\n \n return dist\n\n query = (2.21, 48.65)\n root_id = 0 # index of the root\n node_id, dist = kdquery.nearest_point(query, root_id, get_properties,\n spherical_dist)\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/DeVilhena-Paulo/KdQuery", "keywords": "kd-tree query", "license": "Apache Software License", "maintainer": "", "maintainer_email": "", "name": "KdQuery", "package_url": "https://pypi.org/project/KdQuery/", "platform": "", "project_url": "https://pypi.org/project/KdQuery/", "project_urls": { "Homepage": "https://github.com/DeVilhena-Paulo/KdQuery" }, "release_url": "https://pypi.org/project/KdQuery/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "Nearest point query for any kd-tree implementation", "version": "0.2.2" }, "last_serial": 3148110, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "1ecf372483c9f60b5e38d05b60e34d9e", "sha256": "3a0a0b3e8cfbea58de4d0d7575ce316cbf89bcd497834e0d28a0cd511ad49b09" }, "downloads": -1, "filename": "KdQuery-0.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1ecf372483c9f60b5e38d05b60e34d9e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4894, "upload_time": "2017-08-04T00:48:25", "url": "https://files.pythonhosted.org/packages/9d/05/0f73a210b401274e6663ef124cc959f62a58ce99a0cce7885e680f3118bd/KdQuery-0.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "423c8be796e76e7706a7710c754da4c4", "sha256": "a58de08190e1a0b9d79ec86d0dec4d08b530049ca9e7e586085a2e433f53f175" }, "downloads": -1, "filename": "KdQuery-0.0.0.tar.gz", "has_sig": false, "md5_digest": "423c8be796e76e7706a7710c754da4c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4461, "upload_time": "2017-08-04T00:48:26", "url": "https://files.pythonhosted.org/packages/6f/bc/71fce66e909301593197376d1ba0a4cb91b8772e4f12472c7279909f6596/KdQuery-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "7620ab996a9e5345d5749bd676d726b2", "sha256": "2a93a9d87431cf0c8124b462de78f09482ae459eb892b675387879e8f11522f1" }, "downloads": -1, "filename": "KdQuery-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7620ab996a9e5345d5749bd676d726b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7962, "upload_time": "2017-08-04T01:01:33", "url": "https://files.pythonhosted.org/packages/f3/8d/052454e406f5949f0b49690888598843446ba1ab4d4bca5be6d42affda3e/KdQuery-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5895f9a32fdabff04ec42e7354a558df", "sha256": "e3e73280b48e7b4122da375ae472db60abeb31e6338fb5521352c7cfd6a43ed7" }, "downloads": -1, "filename": "KdQuery-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5895f9a32fdabff04ec42e7354a558df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4458, "upload_time": "2017-08-04T01:01:35", "url": "https://files.pythonhosted.org/packages/56/1b/dec26537b68d8d89c7521fe59f548c7523d4711fd5b3d049c90369f1b76e/KdQuery-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "635c26ccf51025400f76b4c145f9e67c", "sha256": "daadb2b7f5cc60a56fe8210b34c6673b5ee111748c682501e6c43c83c3f0eede" }, "downloads": -1, "filename": "KdQuery-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "635c26ccf51025400f76b4c145f9e67c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7989, "upload_time": "2017-08-04T01:31:50", "url": "https://files.pythonhosted.org/packages/49/53/f0aadde4cc723400bc4934746b81c8e43b1613f343385ae10e4abec8b4cf/KdQuery-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21b123e5cbed23150d96ce4a3e1334da", "sha256": "dd509bea128c70ac59a731d636f02fa1250e0705837a19e0024d45a2d4582f52" }, "downloads": -1, "filename": "KdQuery-0.0.2.tar.gz", "has_sig": false, "md5_digest": "21b123e5cbed23150d96ce4a3e1334da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4449, "upload_time": "2017-08-04T01:31:51", "url": "https://files.pythonhosted.org/packages/36/64/2d8facc1fa6c14f87296cf3cc27ce22d42e0aca86882d0920930b2f50cd9/KdQuery-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e10fac8b8484acbbd11bbca3792c28cf", "sha256": "6aee96c2d9a2e091abd6a508c119438048192d3de53206a5ea343b7ec5fa11f5" }, "downloads": -1, "filename": "KdQuery-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e10fac8b8484acbbd11bbca3792c28cf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8155, "upload_time": "2017-08-04T10:16:33", "url": "https://files.pythonhosted.org/packages/08/4a/087833a4cc817667a16989be98a2ae2b11b810d350f25e47d494b416c634/KdQuery-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04dfbba7902157f9a2c7ea701ed8bb94", "sha256": "601994c9d830fd0ee4e7f81accd6492dd0d67ab7e6e06458119259e4cfaab9ac" }, "downloads": -1, "filename": "KdQuery-0.1.0.tar.gz", "has_sig": false, "md5_digest": "04dfbba7902157f9a2c7ea701ed8bb94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4611, "upload_time": "2017-08-04T10:16:34", "url": "https://files.pythonhosted.org/packages/78/3f/4ac97e83358cec25dbd4ad1f066c3904f3352fab42583ffbe91ac912b46c/KdQuery-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "54777ce9be1e277d17605bc75b33c6a5", "sha256": "d8f22107232da2a3c36aa599084647f74c0d3d60665408ebb0f4376209e31594" }, "downloads": -1, "filename": "KdQuery-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "54777ce9be1e277d17605bc75b33c6a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8175, "upload_time": "2017-08-05T08:55:20", "url": "https://files.pythonhosted.org/packages/06/2d/86d1d3302f21f55f9d3e46ea666bb15456b6eb3080b40d5e1e65a4a1b8dc/KdQuery-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d78c51450ffd71d9189ea1121c2e4ce2", "sha256": "d45ed65539f3f5f0c2d71fd8e426c2a7c705395b1e6f21e415896b618cd6e523" }, "downloads": -1, "filename": "KdQuery-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d78c51450ffd71d9189ea1121c2e4ce2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4631, "upload_time": "2017-08-05T08:55:22", "url": "https://files.pythonhosted.org/packages/ad/1a/48ad5e2ce706410210daf0b2d0608b621ac8b09f5c2a40f15dd174c06766/KdQuery-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "960a82747c922cff1e4f7ebe7103ff8f", "sha256": "c27a1e65acbe56aa31b4148666d28f06a12fba7fb46f75ac85dab111da15fe0b" }, "downloads": -1, "filename": "KdQuery-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "960a82747c922cff1e4f7ebe7103ff8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8089, "upload_time": "2017-08-11T12:56:03", "url": "https://files.pythonhosted.org/packages/8b/bc/17b7b528b8d98244dbcd37f9e80589c1dca53e135680f630619f3c8f9749/KdQuery-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71fae775a86c29aafc7562984f72ed7d", "sha256": "35ba348054dbdc6ada65044add820da4a76e70e1ef83f2ae0197138bdc8393f4" }, "downloads": -1, "filename": "KdQuery-0.1.2.tar.gz", "has_sig": false, "md5_digest": "71fae775a86c29aafc7562984f72ed7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6030, "upload_time": "2017-08-11T12:56:04", "url": "https://files.pythonhosted.org/packages/22/b9/6d831433ce4ffe2ba778ea2af729a223a88fb6d0fa704b895de90767d813/KdQuery-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d84c5596cd33af003fc8164dc8392317", "sha256": "c32ccc2bf8351b03a3e1dd99a0139f07a1b67f06aa9bdefe2c54a561d6b7215f" }, "downloads": -1, "filename": "KdQuery-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d84c5596cd33af003fc8164dc8392317", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4991, "upload_time": "2017-08-23T07:18:56", "url": "https://files.pythonhosted.org/packages/8d/ac/942335782ec53fd69f2d01d63ac15da4a3cf2d6f6d6e923e6b5d4073f0d9/KdQuery-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc57e6720c637bf7fc6405eecae340d0", "sha256": "f355106815d67b4e7e06f77388d83058d845e7bc3f44d3116a76418e0c49784c" }, "downloads": -1, "filename": "KdQuery-0.1.3.tar.gz", "has_sig": false, "md5_digest": "cc57e6720c637bf7fc6405eecae340d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6164, "upload_time": "2017-08-23T07:18:57", "url": "https://files.pythonhosted.org/packages/ba/10/9abffaf7d0f4d35ef68bae4a4be81fa3e7014a510036d451802c98a62855/KdQuery-0.1.3.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "a24a6b8c93e8d7b255e6d7c706196114", "sha256": "075cbb325321a85d83c86131e7e92c49f92aba30b3a35ee9c4169fbca7a35e99" }, "downloads": -1, "filename": "KdQuery-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a24a6b8c93e8d7b255e6d7c706196114", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7880, "upload_time": "2017-08-25T20:56:12", "url": "https://files.pythonhosted.org/packages/e6/fd/fe4474430ecdbac3a36f586a2eda38804318dfd8cfba2dc7b74c0086a448/KdQuery-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cb3e99be50c97aba8724b652adff87b", "sha256": "6b80b1b88905e0e20e551f2155ff53bdd8aeacc2e440fbd897426730f6718065" }, "downloads": -1, "filename": "KdQuery-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7cb3e99be50c97aba8724b652adff87b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5754, "upload_time": "2017-08-25T20:56:13", "url": "https://files.pythonhosted.org/packages/44/0f/492539767c5d78b35ca982bc2644a0a7c83fbe8a1c376e8eb871a481af66/KdQuery-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "42eb539ba5a0a61839c93ae0f241f71d", "sha256": "3de1e784c294db4823a30de4fbd52d80d86e1be16f4d122f6a3df0c945f23573" }, "downloads": -1, "filename": "KdQuery-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "42eb539ba5a0a61839c93ae0f241f71d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7895, "upload_time": "2017-09-04T17:31:13", "url": "https://files.pythonhosted.org/packages/e4/dc/305312056db45a654f21623255ca81ae3e503e8850bdb336e7eaec920094/KdQuery-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d36680968537af6ef9e650b28ec4e8f8", "sha256": "f3ee45269e9c81f947636371ef416742812763094a03fc6b04eb547a66553667" }, "downloads": -1, "filename": "KdQuery-0.2.2.tar.gz", "has_sig": false, "md5_digest": "d36680968537af6ef9e650b28ec4e8f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5767, "upload_time": "2017-09-04T17:31:15", "url": "https://files.pythonhosted.org/packages/90/93/f9d499cc28908d0dafc17e33b722398d54bd673325edfe5622e72ab34551/KdQuery-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "42eb539ba5a0a61839c93ae0f241f71d", "sha256": "3de1e784c294db4823a30de4fbd52d80d86e1be16f4d122f6a3df0c945f23573" }, "downloads": -1, "filename": "KdQuery-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "42eb539ba5a0a61839c93ae0f241f71d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7895, "upload_time": "2017-09-04T17:31:13", "url": "https://files.pythonhosted.org/packages/e4/dc/305312056db45a654f21623255ca81ae3e503e8850bdb336e7eaec920094/KdQuery-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d36680968537af6ef9e650b28ec4e8f8", "sha256": "f3ee45269e9c81f947636371ef416742812763094a03fc6b04eb547a66553667" }, "downloads": -1, "filename": "KdQuery-0.2.2.tar.gz", "has_sig": false, "md5_digest": "d36680968537af6ef9e650b28ec4e8f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5767, "upload_time": "2017-09-04T17:31:15", "url": "https://files.pythonhosted.org/packages/90/93/f9d499cc28908d0dafc17e33b722398d54bd673325edfe5622e72ab34551/KdQuery-0.2.2.tar.gz" } ] }