{ "info": { "author": "Baruch Tabanpour", "author_email": "baruch@tabanpour.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Information Analysis" ], "description": "sinkhorn_knopp\n--------\n\n[![Build Status](https://travis-ci.org/btaba/sinkhorn_knopp.svg?branch=master)](https://travis-ci.org/btaba/sinkhorn_knopp)\n\n\nTo convert non-negative square matrices with total support into doubly stochastic matrices. \n\n```python\n >> import numpy as np\n >> from sinkhorn_knopp import sinkhorn_knopp as skp\n >> sk = skp.SinkhornKnopp()\n >> P = [[.011, .15], [1.71, .1]]\n >> P_ds = sk.fit(P)\n >> print P_ds\n [[ 0.06102561 0.93897439]\n [ 0.93809928 0.06190072]]\n >> print np.sum(P_ds, axis=0)\n [ 0.99912489 1.00087511]\n >> print np.sum(P_ds, axis=1)\n [ 1., 1.]\n```\n\nSee http://msp.org/pjm/1967/21-2/pjm-v21-n2-p14-s.pdf for reference.\n\n## Install\n\nEither:\n\n```sh\npip install sinkhorn_knopp\n```\n\nor\n\n```sh\ngit clone https://github.com/btaba/sinkhorn_knopp\ncd sinkhorn_knopp\npython setup.py install\n```\n\n## Uninstall\n\nDepending on the above, either:\n\n```sh\npip uninstall sinkhorn_knopp\n```\n\nor \n\n```sh\ncd sinkhorn_knopp\npython setup.py install --record files.txt\ncat files.txt | xargs rm -rf\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/btaba/sinkhorn_knopp", "keywords": "sinkhorn-knopp,doubly stochastic matrix", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "sinkhorn_knopp", "package_url": "https://pypi.org/project/sinkhorn_knopp/", "platform": "", "project_url": "https://pypi.org/project/sinkhorn_knopp/", "project_urls": { "Homepage": "https://github.com/btaba/sinkhorn_knopp" }, "release_url": "https://pypi.org/project/sinkhorn_knopp/0.2/", "requires_dist": [ "numpy (>=1)" ], "requires_python": "", "summary": "Sinkhorn-Knopp Algorithm", "version": "0.2" }, "last_serial": 3722221, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "c09eb0f5e183a9ae2944aed17a03bbdc", "sha256": "5b45c4cb78828ea94a3f769231c8885fc99fffcd44d7545d8c4ceb6021bab3af" }, "downloads": -1, "filename": "sinkhorn_knopp-0.1.tar.gz", "has_sig": false, "md5_digest": "c09eb0f5e183a9ae2944aed17a03bbdc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3909, "upload_time": "2016-04-03T15:53:41", "url": "https://files.pythonhosted.org/packages/a2/8d/3fc2a5e2ee87bef196020275e78ffd5e9d705adf4cce52b8e171e91f8444/sinkhorn_knopp-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "15022af4c6dc151e48033698c7d90811", "sha256": "d40b3ad2848aecdf60b021ca0179ae64ce5fad87d39eab1b6e679a0a8f8eb96b" }, "downloads": -1, "filename": "sinkhorn_knopp-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "15022af4c6dc151e48033698c7d90811", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5235, "upload_time": "2018-03-31T14:19:50", "url": "https://files.pythonhosted.org/packages/4a/10/e53ddd706975d98b25c84e721e6a506297992a51f75bffca4b6f159aefa8/sinkhorn_knopp-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4de7791cfddda136ddc7f950e7cc057b", "sha256": "6fbfb658c1d85320071f2f893b25eef853cf5d2dd9bd8d2c9af880c52c356040" }, "downloads": -1, "filename": "sinkhorn_knopp-0.2.tar.gz", "has_sig": false, "md5_digest": "4de7791cfddda136ddc7f950e7cc057b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4127, "upload_time": "2018-03-31T14:19:51", "url": "https://files.pythonhosted.org/packages/a7/fb/f1654100121230fb127bad6063ded3031c44b242293553f5c89d8154365e/sinkhorn_knopp-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "15022af4c6dc151e48033698c7d90811", "sha256": "d40b3ad2848aecdf60b021ca0179ae64ce5fad87d39eab1b6e679a0a8f8eb96b" }, "downloads": -1, "filename": "sinkhorn_knopp-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "15022af4c6dc151e48033698c7d90811", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5235, "upload_time": "2018-03-31T14:19:50", "url": "https://files.pythonhosted.org/packages/4a/10/e53ddd706975d98b25c84e721e6a506297992a51f75bffca4b6f159aefa8/sinkhorn_knopp-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4de7791cfddda136ddc7f950e7cc057b", "sha256": "6fbfb658c1d85320071f2f893b25eef853cf5d2dd9bd8d2c9af880c52c356040" }, "downloads": -1, "filename": "sinkhorn_knopp-0.2.tar.gz", "has_sig": false, "md5_digest": "4de7791cfddda136ddc7f950e7cc057b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4127, "upload_time": "2018-03-31T14:19:51", "url": "https://files.pythonhosted.org/packages/a7/fb/f1654100121230fb127bad6063ded3031c44b242293553f5c89d8154365e/sinkhorn_knopp-0.2.tar.gz" } ] }