{ "info": { "author": "Alexandre Devert", "author_email": "marmakoide@hotmail.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Software Development :: Libraries", "Topic :: Utilities" ], "description": ".. image:: https://img.shields.io/pypi/v/miniball.svg\n :target: https://pypi.org/project/miniball/\n :alt: miniball on PyPI\n\n.. image:: https://travis-ci.com/marmakoide/miniball.svg?branch=master\n :target: https://travis-ci.com/marmakoide/miniball\n :alt: miniball on TravisCI\n\n.. image:: https://img.shields.io/badge/license-MIT-green.svg\n :target: https://github.com/marmakoide/miniball/blob/master/LICENSE\n :alt: MIT License badge\n\n========\nminiball\n========\n\nA Python module to efficiently compute the smallest bounding ball of a point \nset, in arbitrary number of dimensions.\n\nThe algorithm runs in approximatively linear time in respects to the number of\ninput points. This is NOT a derivative nor a port of \n`Bernd Gaertner's C++ library `__.\n\nThis project is licensed under the MIT License\n\nRequirements\n============\n\nminiball 1.0 requires\n\n* Python 2.7, >=3.4\n* Numpy\n\nInstallation\n============\n\n.. code-block:: console\n\n\t$ pip install miniball\n\n\nUsage\n=====\n\nHere is how you can get the smallest bounding ball of a set of points\n\n.. code-block:: pycon\n\n\t>>> import numpy\n\t>>> import miniball\n\t>>> S = numpy.random.randn(100, 2)\n\t>>> C, r2 = miniball.get_bounding_ball(S)\n\nThe center of the bounding ball is C, its radius is the square root of r2. And \nthat's it ! miniball does only one thing with one function.\n\nImplementation notes\n====================\n\nThe algorithm implemented is Welzl's algorithm. It is a pure Python implementation,\nit is not a binding of the popular C++ package `Bernd Gaertner's miniball `__.\n\nThe algorithm, although often presented in its recursive form, is here implemented\nin an iterative fashion. Python have an hard-coded recursion limit, therefore\na recursive implementation of Welzl's algorithm would have an artificially limited\nnumber of point it could process.\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/marmakoide/miniball", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "miniball", "package_url": "https://pypi.org/project/miniball/", "platform": "", "project_url": "https://pypi.org/project/miniball/", "project_urls": { "Homepage": "https://github.com/marmakoide/miniball" }, "release_url": "https://pypi.org/project/miniball/1.0.3/", "requires_dist": [ "numpy" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "summary": "Efficiently computes the smallest bounding ball of a point set, in arbitrary number of dimensions.", "version": "1.0.3" }, "last_serial": 5535445, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "d3148a190a0fd02f26838827edc52ecd", "sha256": "b6407f00f7ade7aa45288a029affff2f17ceb92083451ae106aeafd5bf3c960e" }, "downloads": -1, "filename": "miniball-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "d3148a190a0fd02f26838827edc52ecd", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4454, "upload_time": "2019-01-14T16:57:31", "url": "https://files.pythonhosted.org/packages/07/76/bb579cfccf6764af71afe87aaae8af846517523a80c5d543c882fa4d2900/miniball-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f414d1f9ec55ba044250f6aef1555ef", "sha256": "67bc42c7960877c4149e9b795153cf772a0662bfc68e781a807dc61f8461c327" }, "downloads": -1, "filename": "miniball-1.0.2.tar.gz", "has_sig": false, "md5_digest": "9f414d1f9ec55ba044250f6aef1555ef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4143, "upload_time": "2019-01-14T16:57:32", "url": "https://files.pythonhosted.org/packages/6c/a1/2cbaf364701093c3fff371d32f27bcc8aac95a90c0d3228b7ca3088d1662/miniball-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "6ee39656d2e3c65d747d00e4b45323c7", "sha256": "0c5cfcc71e9ae4688d269859e74406608bb14a4c1adc88ffb0abbfd65514d90a" }, "downloads": -1, "filename": "miniball-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "6ee39656d2e3c65d747d00e4b45323c7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4635, "upload_time": "2019-07-15T15:00:33", "url": "https://files.pythonhosted.org/packages/2f/8b/011b13f1afdbba008c7c57a982f7fd4f4a30e64ba513be37a4d0d88fe2e0/miniball-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ad11ccbaac22d3af43cf419556ea08f", "sha256": "8f40014f559341a2d9cef6b35543ead678603f8b4b5f6e50e69cbf907978a6ea" }, "downloads": -1, "filename": "miniball-1.0.3-py3.6.egg", "has_sig": false, "md5_digest": "5ad11ccbaac22d3af43cf419556ea08f", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 5501, "upload_time": "2019-07-15T15:00:37", "url": "https://files.pythonhosted.org/packages/3c/fb/c7b260a4053b37f8264550a0e0a0c8150f79611e77d88d55a0f480229501/miniball-1.0.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "3d10f59adb32d667784d76a8f446dc86", "sha256": "bcaf02e7a65f250c3a49d0cf5faa591a2d1f342794e7cfe52928ac5bf2357984" }, "downloads": -1, "filename": "miniball-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3d10f59adb32d667784d76a8f446dc86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4635, "upload_time": "2019-07-15T15:00:35", "url": "https://files.pythonhosted.org/packages/18/7c/c68b25e0e29952a3f40c4ce3f22ecde4e0ba65acca99da84315787dbfe28/miniball-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b4f33421fcf0e8811da117314df8b2f", "sha256": "c99324df330ae3eb10631cc6be605c72d891fccda0902dbe0513329f95563822" }, "downloads": -1, "filename": "miniball-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4b4f33421fcf0e8811da117314df8b2f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4395, "upload_time": "2019-07-15T15:00:39", "url": "https://files.pythonhosted.org/packages/9b/37/312808589603aa52fd9914b890e583d82c9f6611e1d6a32aa30480a0e556/miniball-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6ee39656d2e3c65d747d00e4b45323c7", "sha256": "0c5cfcc71e9ae4688d269859e74406608bb14a4c1adc88ffb0abbfd65514d90a" }, "downloads": -1, "filename": "miniball-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "6ee39656d2e3c65d747d00e4b45323c7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4635, "upload_time": "2019-07-15T15:00:33", "url": "https://files.pythonhosted.org/packages/2f/8b/011b13f1afdbba008c7c57a982f7fd4f4a30e64ba513be37a4d0d88fe2e0/miniball-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ad11ccbaac22d3af43cf419556ea08f", "sha256": "8f40014f559341a2d9cef6b35543ead678603f8b4b5f6e50e69cbf907978a6ea" }, "downloads": -1, "filename": "miniball-1.0.3-py3.6.egg", "has_sig": false, "md5_digest": "5ad11ccbaac22d3af43cf419556ea08f", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 5501, "upload_time": "2019-07-15T15:00:37", "url": "https://files.pythonhosted.org/packages/3c/fb/c7b260a4053b37f8264550a0e0a0c8150f79611e77d88d55a0f480229501/miniball-1.0.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "3d10f59adb32d667784d76a8f446dc86", "sha256": "bcaf02e7a65f250c3a49d0cf5faa591a2d1f342794e7cfe52928ac5bf2357984" }, "downloads": -1, "filename": "miniball-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3d10f59adb32d667784d76a8f446dc86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4635, "upload_time": "2019-07-15T15:00:35", "url": "https://files.pythonhosted.org/packages/18/7c/c68b25e0e29952a3f40c4ce3f22ecde4e0ba65acca99da84315787dbfe28/miniball-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b4f33421fcf0e8811da117314df8b2f", "sha256": "c99324df330ae3eb10631cc6be605c72d891fccda0902dbe0513329f95563822" }, "downloads": -1, "filename": "miniball-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4b4f33421fcf0e8811da117314df8b2f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*", "size": 4395, "upload_time": "2019-07-15T15:00:39", "url": "https://files.pythonhosted.org/packages/9b/37/312808589603aa52fd9914b890e583d82c9f6611e1d6a32aa30480a0e556/miniball-1.0.3.tar.gz" } ] }