{ "info": { "author": "Niels Jeppesen", "author_email": "niejep@dtu.dk", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: C++", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Image Recognition", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "# Thin wrapper for Maxflow\nThin Python wrapper for a modified version of the Maxflow algorithm by Yuri Boykov and Vladimir Kolmogorov. The original source code by Vladimir Kolmogorov availbable at http://pub.ist.ac.at/~vnk/software.html. This wrapper uses a modified version with support for larger graphs and slightly lower memory usage. See [submodule repository](https://github.com/Skielex/maxflow) for more details.\n\n## Maxflow vs. QPBO\nA more advanced alternative to the Maxflow algorithm is (quadratic pseudo-Boolean optimization) [QPBO](https://github.com/Skielex/thinqpbo), which also uses *s-t* graph cut. Unlike Maxflow, it allows for non-submodular energy terms, which Maxflow doesn't (unless you construct the graph in a specific way, which is what QPBO does). Amongst other things, this allows QPBO to solve optimization problems with exclusions terms, which can be very usefull. QPBO uses more memory and is slightly slower than Maxflow.\n\n## Installation\nInstall package using `pip install thinmaxflow` or clone this repository (including [submodule](https://github.com/Skielex/maxflow)). Building the package requires Cython.\n\n## Graph types\nCurrently, there are four different types of graphs: `GraphInt`, `GraphShort`, `GraphFloat` and `GraphDouble`. The only difference is the underlying datatypes used for the edge capacities in the graph. For stability, it is recommended to use `GraphInt` for integer capacities and `GraphDouble` for floating point capacities. However, in some cases, it maybe be favourable to use `GraphShort` or `GraphFloat` to reduce memory consumption.\n\n## Tiny example\n```python\nimport thinmaxflow as tf\n\n# Create graph object.\ngraph = tf.GraphInt()\n\n# Number of nodes to add.\nnodes_to_add = 2\n\n# Add two nodes.\nfirst_node_id = graph.add_node(nodes_to_add)\n\n# Add edges.\ngraph.add_tweights(0, 5, 0) # s --5-> n(0)\ngraph.add_tweights(0, 0, 1) # n(0) --1-> t\ngraph.add_tweights(1, 0, 3) # n(1) --3-> t\ngraph.add_edge(0, 1, 2, 1) # n(0) --2-> n(1)\n # n(1) --1-> n(0)\n\n# Find maxflow/cut graph.\nflow = graph.maxflow()\n\nfor n in range(nodes_to_add):\n segment = graph.what_segment(n)\n print('Node %d belongs to segment %d.' % (n, segment))\n# Node 0 belongs to segment 0.\n# Node 1 belongs to segment 1.\n\nprint('Maximum flow: %s' % flow)\n# Maximum flow: 3\n```\n\n## License\nAs the Maxflow implementation is distributed under the GPLv3 license, so is this package.\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Skielex/thinmaxflow", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "thinmaxflow", "package_url": "https://pypi.org/project/thinmaxflow/", "platform": "", "project_url": "https://pypi.org/project/thinmaxflow/", "project_urls": { "Homepage": "https://github.com/Skielex/thinmaxflow" }, "release_url": "https://pypi.org/project/thinmaxflow/0.1.4/", "requires_dist": null, "requires_python": "", "summary": "A thin Maxflow wrapper for Python", "version": "0.1.4" }, "last_serial": 5512921, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ebae1ae03038d4e8b8d61d5a2e18dd3d", "sha256": "8fbbd5b9a7768da1d5998f16a17cc0c1595b3adbcf97ea7e43b24f0f677f6226" }, "downloads": -1, "filename": "thinmaxflow-0.1.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "ebae1ae03038d4e8b8d61d5a2e18dd3d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 51133, "upload_time": "2018-11-28T16:28:22", "url": "https://files.pythonhosted.org/packages/4d/f3/6c8e4a2cb0489e26210886ed0c008385e52e5f12c0f263fdaac87c58b5d8/thinmaxflow-0.1.0-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "45c2cd171de9cb3bbcd5c59a167f048e", "sha256": "941f0cbaeaa826e308d34c6f380e15a83c4c10df13cf03014609498f44ddc32e" }, "downloads": -1, "filename": "thinmaxflow-0.1.0.tar.gz", "has_sig": false, "md5_digest": "45c2cd171de9cb3bbcd5c59a167f048e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51377, "upload_time": "2018-11-28T16:28:24", "url": "https://files.pythonhosted.org/packages/a1/db/70bb618382edfed7625649546d3b24f4586d51fea8539a1c6f37c9c8e36c/thinmaxflow-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "1743cf0e1ce9faa6cc13cbc7f5078afc", "sha256": "e98cb92991217f755e1032097e00909e16361d4ad7c9e39ac75a39e0bc822cde" }, "downloads": -1, "filename": "thinmaxflow-0.1.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "1743cf0e1ce9faa6cc13cbc7f5078afc", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 51422, "upload_time": "2018-12-08T15:56:37", "url": "https://files.pythonhosted.org/packages/17/ac/6ed5a91c2c2cb93c5cf5674f80cb8fd0e99833b0eb017c093dab7ea5f601/thinmaxflow-0.1.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "9e847974d34b34e7389b1f679879ef90", "sha256": "c766bcb2fb3d744fed07aea6049ab0f954c051194531f63ef25747bced8f68cf" }, "downloads": -1, "filename": "thinmaxflow-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9e847974d34b34e7389b1f679879ef90", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89239, "upload_time": "2018-12-08T15:56:39", "url": "https://files.pythonhosted.org/packages/f1/ee/1b035f50c52a4dfd7411210974efab2b98943f0526c5acdb5be706fc5711/thinmaxflow-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "294bb457592dfa31662f2d5758787aa2", "sha256": "9abde6b943a18d2632828ea28b8d6cf779e178722deba55a108382a63aede487" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "294bb457592dfa31662f2d5758787aa2", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 57033, "upload_time": "2018-12-13T17:39:35", "url": "https://files.pythonhosted.org/packages/9c/4e/abd0ab71ee6a67e7fc6547220859844a4034ecf27cdacdfebe74a093feb7/thinmaxflow-0.1.2-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "437eda5df31fa70e585a96841184e1ba", "sha256": "cdd2f37e596fb909c2129d35825a776bf4ee75ce646a98f829c1123d863d6d83" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp34-cp34m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "437eda5df31fa70e585a96841184e1ba", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": null, "size": 57470, "upload_time": "2018-12-13T17:39:37", "url": "https://files.pythonhosted.org/packages/9d/61/aad326a0db546fa644270d1e2ec3bd4fc30d66dd967a1e91929f3c1db478/thinmaxflow-0.1.2-cp34-cp34m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "3412240cf8f940173b8e5861090062a0", "sha256": "aab032be0847476983f5f60c00afcd00f72a3137e33ff03fa3b2007a2a538515" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp35-cp35m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "3412240cf8f940173b8e5861090062a0", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 57902, "upload_time": "2018-12-13T17:39:38", "url": "https://files.pythonhosted.org/packages/b7/39/0efbf6dd643cb9b6183119ac2e34adf07da5040c86d6726d881345bb23dd/thinmaxflow-0.1.2-cp35-cp35m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "80348f2218e50c1c19630745dedc302b", "sha256": "3a1f8049eab3194c8a4d973df09a7ed9fab694205439e1cd73b3c0e8bbe305e7" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp35-cp35m-win_amd64.whl", "has_sig": false, "md5_digest": "80348f2218e50c1c19630745dedc302b", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 50558, "upload_time": "2018-12-13T17:39:40", "url": "https://files.pythonhosted.org/packages/1e/05/516faa8a2b6ac8c22569c094e9c45c5bedad484b2e6722c91e6c2585fcbd/thinmaxflow-0.1.2-cp35-cp35m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "c9df5ead0b2d8846ce2a25a04f9036af", "sha256": "1cb845658aa51dded7205817334eae48673d0759674e4b4c61fff208b35141fc" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp36-cp36m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "c9df5ead0b2d8846ce2a25a04f9036af", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 45802, "upload_time": "2018-12-13T17:39:42", "url": "https://files.pythonhosted.org/packages/32/d8/74e123cbb935d2d3862f505aaf88b8f86fbcc15c29d5122cb2c08108e57a/thinmaxflow-0.1.2-cp36-cp36m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "8aa456384bdf4bd8bcbedbc80a8dc6d2", "sha256": "f83e1dcc18ccd5afb0531e65a9e5afafe8ef7e19ae7ab978bb2cd118026c9df9" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "8aa456384bdf4bd8bcbedbc80a8dc6d2", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 52143, "upload_time": "2018-12-13T17:39:44", "url": "https://files.pythonhosted.org/packages/f6/09/9aac0d09727d263b824fd10d7d94030fe938f687f847f2bc125aa23dd4d9/thinmaxflow-0.1.2-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "b0d71254d05b20ffe87414d29335fca7", "sha256": "619a806869f2f6fd6847462d03944d46ee246691aeb833cddb4de4b58f783ba5" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "b0d71254d05b20ffe87414d29335fca7", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 57945, "upload_time": "2018-12-13T17:39:45", "url": "https://files.pythonhosted.org/packages/77/17/a867c1d18c61a118252a3bcbe8d0e676267f601a16ec824c0e554937ab27/thinmaxflow-0.1.2-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "714621ccda5c5d3448f1632bee18524d", "sha256": "b0033409a1934531d4458b4954f0bfab7c24c86e8eda48b1045c7447906acf83" }, "downloads": -1, "filename": "thinmaxflow-0.1.2-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "714621ccda5c5d3448f1632bee18524d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 51992, "upload_time": "2018-12-13T17:39:47", "url": "https://files.pythonhosted.org/packages/84/96/16880e46c74b7eaa9a929c49fe6bdb27d4634e687b36ba277d49e2cea8f6/thinmaxflow-0.1.2-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "3eb73880b76a8b9b3d39c4ac7674d16f", "sha256": "4736cd040e1078b96d79a28f6564d59f4c9d20738a18297f2cbf764f5b69759e" }, "downloads": -1, "filename": "thinmaxflow-0.1.2.tar.gz", "has_sig": false, "md5_digest": "3eb73880b76a8b9b3d39c4ac7674d16f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89388, "upload_time": "2018-12-13T17:39:48", "url": "https://files.pythonhosted.org/packages/ed/6a/5c67bbfd8430d3ecdfd719f4619f79269f355b1edff782ea94b141772f38/thinmaxflow-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "1bb538907e13d42423d2cdeef93786d6", "sha256": "dcdc88707884669645a738a25cede1646703a399990224056ef400d9cb58d251" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "1bb538907e13d42423d2cdeef93786d6", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 59115, "upload_time": "2019-07-10T16:21:04", "url": "https://files.pythonhosted.org/packages/ae/67/7b23e86bcd8923e2b01cf6f0bb7531d604966b87ca0386be45d4776d75a4/thinmaxflow-0.1.4-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "641ff8e37ad846c06a8af4138ecee603", "sha256": "1a0ba06f74d2678f1d97496ec8864a95d323322c705f41acf9a1682b1f45ea58" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp36-cp36m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "641ff8e37ad846c06a8af4138ecee603", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 60311, "upload_time": "2019-07-10T16:21:06", "url": "https://files.pythonhosted.org/packages/d3/f7/1a796b01ac93f83a002735ad50efd948bc4d9055af8c6ca6edd618f8a613/thinmaxflow-0.1.4-cp36-cp36m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "40fe9df3b59babf0160f8b59ab126dc7", "sha256": "ae6f3acaea9dee3c4e6f9d6dae895132f9a57468bf062a212bb1176bfa0c8ae4" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "40fe9df3b59babf0160f8b59ab126dc7", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 63122, "upload_time": "2019-07-10T16:21:08", "url": "https://files.pythonhosted.org/packages/0f/64/1d7ae0f8a2770b3eef1558d3e2db91fa2999123e307f0b410778e0d085b3/thinmaxflow-0.1.4-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "3d281be6e90958b6d45973ef6e16f7d7", "sha256": "c725b1e9447efb389ddddcc457fd58558dfd7945833d6809b60ec46b4ebfc5cb" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "3d281be6e90958b6d45973ef6e16f7d7", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 60159, "upload_time": "2019-07-10T16:21:09", "url": "https://files.pythonhosted.org/packages/95/85/8c32c1cc9d5eb7099a459e4c5fed80ef5562ab3038ef1aa9fb6c6d25e2b8/thinmaxflow-0.1.4-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "5c56360a68f91042c3f72181625b257d", "sha256": "221cedfe4c677842ed11f3b31f60776df8c06ed13d8c2831e9cad0ef2510fb9f" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "5c56360a68f91042c3f72181625b257d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 62932, "upload_time": "2019-07-10T16:21:11", "url": "https://files.pythonhosted.org/packages/0a/e8/e994c73d22a5118be493d491eb8e22b282b56c8ca5b0a57f2e97342c6884/thinmaxflow-0.1.4-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "0ee4e0eb5d5f47d60ae6905e5ecfdb0a", "sha256": "cbd7ca8e884fe9e0c3ebfb836b9ed5aaaf6b9abad69405358508953910c2c682" }, "downloads": -1, "filename": "thinmaxflow-0.1.4.tar.gz", "has_sig": false, "md5_digest": "0ee4e0eb5d5f47d60ae6905e5ecfdb0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89292, "upload_time": "2019-07-10T16:21:13", "url": "https://files.pythonhosted.org/packages/c7/fe/c454e3f6d9e8a379a608bf0a4d2cd8559d7c41a344e721c80bf7addc2c60/thinmaxflow-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1bb538907e13d42423d2cdeef93786d6", "sha256": "dcdc88707884669645a738a25cede1646703a399990224056ef400d9cb58d251" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "1bb538907e13d42423d2cdeef93786d6", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 59115, "upload_time": "2019-07-10T16:21:04", "url": "https://files.pythonhosted.org/packages/ae/67/7b23e86bcd8923e2b01cf6f0bb7531d604966b87ca0386be45d4776d75a4/thinmaxflow-0.1.4-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "641ff8e37ad846c06a8af4138ecee603", "sha256": "1a0ba06f74d2678f1d97496ec8864a95d323322c705f41acf9a1682b1f45ea58" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp36-cp36m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "641ff8e37ad846c06a8af4138ecee603", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 60311, "upload_time": "2019-07-10T16:21:06", "url": "https://files.pythonhosted.org/packages/d3/f7/1a796b01ac93f83a002735ad50efd948bc4d9055af8c6ca6edd618f8a613/thinmaxflow-0.1.4-cp36-cp36m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "40fe9df3b59babf0160f8b59ab126dc7", "sha256": "ae6f3acaea9dee3c4e6f9d6dae895132f9a57468bf062a212bb1176bfa0c8ae4" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "40fe9df3b59babf0160f8b59ab126dc7", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 63122, "upload_time": "2019-07-10T16:21:08", "url": "https://files.pythonhosted.org/packages/0f/64/1d7ae0f8a2770b3eef1558d3e2db91fa2999123e307f0b410778e0d085b3/thinmaxflow-0.1.4-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "3d281be6e90958b6d45973ef6e16f7d7", "sha256": "c725b1e9447efb389ddddcc457fd58558dfd7945833d6809b60ec46b4ebfc5cb" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "3d281be6e90958b6d45973ef6e16f7d7", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 60159, "upload_time": "2019-07-10T16:21:09", "url": "https://files.pythonhosted.org/packages/95/85/8c32c1cc9d5eb7099a459e4c5fed80ef5562ab3038ef1aa9fb6c6d25e2b8/thinmaxflow-0.1.4-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "5c56360a68f91042c3f72181625b257d", "sha256": "221cedfe4c677842ed11f3b31f60776df8c06ed13d8c2831e9cad0ef2510fb9f" }, "downloads": -1, "filename": "thinmaxflow-0.1.4-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "5c56360a68f91042c3f72181625b257d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 62932, "upload_time": "2019-07-10T16:21:11", "url": "https://files.pythonhosted.org/packages/0a/e8/e994c73d22a5118be493d491eb8e22b282b56c8ca5b0a57f2e97342c6884/thinmaxflow-0.1.4-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "0ee4e0eb5d5f47d60ae6905e5ecfdb0a", "sha256": "cbd7ca8e884fe9e0c3ebfb836b9ed5aaaf6b9abad69405358508953910c2c682" }, "downloads": -1, "filename": "thinmaxflow-0.1.4.tar.gz", "has_sig": false, "md5_digest": "0ee4e0eb5d5f47d60ae6905e5ecfdb0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89292, "upload_time": "2019-07-10T16:21:13", "url": "https://files.pythonhosted.org/packages/c7/fe/c454e3f6d9e8a379a608bf0a4d2cd8559d7c41a344e721c80bf7addc2c60/thinmaxflow-0.1.4.tar.gz" } ] }