{ "info": { "author": "Eric S. Talbot", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "####\nFelt\n####\n\nFelt is a Python library for estimating path flows on networks where flows are\nnot directly observable. It is motivated by estimating vehicle flows on highway\nnetworks, but may be applied to other problems. \n\nQuick Start\n===========\n\nInstallation\n------------\n\n::\n\n pip install felt\n\nExample\n-------\n\nWe'd like to estimate path flows on a network. To start we build a model of the\nnetwork. The network has two links that merge together onto a single link, and\nthen diverge again to two links. \n\n>>> from felt import Network, Node, Way\n>>> network = Network(\n... [\n... Node(1, 0.0, 0.0),\n... Node(2, 1.0, 0.0),\n... Node(3, 2.0, 0.0),\n... Node(4, 3.0, 0.0),\n... Node(5, 0.0, 1.0),\n... Node(6, 3.0, 1.0)\n... ],\n... [\n... Way([1, 2, 3, 4], oneway=True),\n... Way([5, 2], oneway=True),\n... Way([3, 6], oneway=True)\n... ]\n... )\n\nNow we make a list of all the possible paths on this network. There are two\nsource nodes: 1 and 5; and there are two sink nodes: 4 and 6. Each source node\nis connected with a path to each other sink node, to make a total of four paths.\nOur goal is to estimate the flow on each of the four paths. \n\n>>> paths = [\n... network.shortest_path(1, 4),\n... network.shortest_path(1, 6),\n... network.shortest_path(5, 4),\n... network.shortest_path(5, 6)\n... ]\n>>> paths\n[Path([1, 2, 3, 4]), Path([1, 2, 3, 6]), Path([5, 2, 3, 4]), Path([5, 2, 3, 6])]\n\nTo help us with our estimation, we have movement flow observations for three\nmovements. You can think of movements as sub-sequences of paths, where each path\neither has that sub-sequence or not. The movement flow observations for the\nthree movements are 30, 70, and 40.\n\n>>> from felt import Movement\n>>> movements = [\n... Movement([..., 1, 2, 3, ...]),\n... Movement([..., 5, 2, 3, ...]),\n... Movement([..., 2, 3, 4, ...])\n... ]\n>>> movement_flows = [30, 70, 40]\n\nNow we can estimate the path flows from our movement flows. Our estimates are\n12, 18, 28 and 42.\n\n>>> from felt import estimate\n>>> path_flows = estimate(paths, movements, movement_flows)\n>>> print([round(v) for v in path_flows])\n[12, 18, 28, 42]\n\nDocumentation\n-------------\n\nhttps://felt.readthedocs.io/en/latest/index.html\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/ericstalbot/felt", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "felt", "package_url": "https://pypi.org/project/felt/", "platform": "", "project_url": "https://pypi.org/project/felt/", "project_urls": { "Homepage": "https://gitlab.com/ericstalbot/felt" }, "release_url": "https://pypi.org/project/felt/0.2/", "requires_dist": [ "pytest ; extra == 'dev'", "pytest-cov ; extra == 'dev'", "mypy ; extra == 'dev'", "pylint ; extra == 'dev'", "invoke ; extra == 'dev'", "wheel ; extra == 'dev'", "sphinx ; extra == 'dev'", "sphinx-rtd-theme ; extra == 'dev'", "twine ; extra == 'dev'" ], "requires_python": ">=3.7, <4", "summary": "Estimate flow on paths.", "version": "0.2" }, "last_serial": 5217092, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9ac594ebece916d8c9579182d3108e69", "sha256": "301b1b9962efcafea2fcd723d7f3b5212e9c7226bcbfea716c389d618fae2980" }, "downloads": -1, "filename": "felt-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9ac594ebece916d8c9579182d3108e69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <4", "size": 5664, "upload_time": "2019-04-28T02:22:16", "url": "https://files.pythonhosted.org/packages/fd/94/977ce9018412fe20df0f263dadc93e13c818d32e5ca92ee942e8f5993773/felt-0.1-py3-none-any.whl" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "817f8af8e40dfbd05e6aa2fe4269670b", "sha256": "9d1585ff0e416d9eab8a03c54c245c2c19f408a3c43a01d0462f908e99fa19f0" }, "downloads": -1, "filename": "felt-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "817f8af8e40dfbd05e6aa2fe4269670b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7, <4", "size": 9505, "upload_time": "2019-05-02T12:20:41", "url": "https://files.pythonhosted.org/packages/10/2d/952ecc06eed99b8e8e86e49c01103b98c557b0b52f7d5cf42e73d87966b2/felt-0.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "817f8af8e40dfbd05e6aa2fe4269670b", "sha256": "9d1585ff0e416d9eab8a03c54c245c2c19f408a3c43a01d0462f908e99fa19f0" }, "downloads": -1, "filename": "felt-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "817f8af8e40dfbd05e6aa2fe4269670b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7, <4", "size": 9505, "upload_time": "2019-05-02T12:20:41", "url": "https://files.pythonhosted.org/packages/10/2d/952ecc06eed99b8e8e86e49c01103b98c557b0b52f7d5cf42e73d87966b2/felt-0.2-py3-none-any.whl" } ] }