{ "info": { "author": "Piotr Janiszewski", "author_email": "i.am.like.me@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Rainflow\n========\n\n[![Test rainflow](https://github.com/iamlikeme/rainflow/actions/workflows/tests.yml/badge.svg)](https://github.com/iamlikeme/rainflow/actions/workflows/tests.yml)\n\n`rainflow` is a Python implementation of the ASTM E1049-85 rainflow cycle counting\nalgorythm for fatigue analysis. Supports both Python 2 and 3.\n\nInstallation\n------------\n\n`rainflow` is available [on PyPI](https://pypi.org/project/rainflow/):\n\n```\npip install rainflow\n```\n\nand [on conda-forge](https://github.com/conda-forge/rainflow-feedstock):\n\n```\nconda install rainflow --channel conda-forge\n```\n\nUsage\n-----\n\nSee release notes in [`CHANGELOG.md`](CHANGELOG.md).\n\nLet's generate a sample time series.\nHere we simply generate a list of floats but `rainflow` works\nwith any sequence of numbers, including numpy arrays and pandas Series.\n\n```python\nfrom math import sin, cos\n\ntime = [4.0 * i / 200 for i in range(200 + 1)]\nsignal = [0.2 + 0.5 * sin(t) + 0.2 * cos(10*t) + 0.2 * sin(4*t) for t in time]\n```\n\nFunction `count_cycles` returns a sorted list of ranges and the corresponding\nnumber of cycles:\n\n```python\nimport rainflow\n\nrainflow.count_cycles(signal)\n# Output\n[(0.04258965150708488, 0.5),\n (0.10973439445727551, 1.0),\n (0.11294628078612906, 0.5),\n (0.2057106991158965, 1.0),\n (0.21467990941625242, 1.0),\n (0.4388985979776988, 1.0),\n (0.48305748051348263, 0.5),\n (0.5286423866535466, 0.5),\n (0.7809330293159786, 0.5),\n (1.4343610172143002, 0.5)]\n```\n\nCycle ranges can be binned or rounded to a specified number of digits\nusing optional arguments *binsize*, *nbins* or *ndigits*:\n\n```python\nrainflow.count_cycles(signal, binsize=0.5)\n# Output\n[(0.5, 5.5), (1.0, 1.0), (1.5, 0.5)]\n\nrainflow.count_cycles(signal, ndigits=1)\n# Output\n[(0.0, 0.5),\n (0.1, 1.5),\n (0.2, 2.0),\n (0.4, 1.0),\n (0.5, 1.0),\n (0.8, 0.5),\n (1.4, 0.5)]\n```\n\nFull information about each cycle, including mean value, can be obtained\nusing the `extract_cycles` function:\n\n```python\nfor rng, mean, count, i_start, i_end in rainflow.extract_cycles(signal): \n print(rng, mean, count, i_start, i_end) \n# Output \n0.04258965150708488 0.4212948257535425 0.5 0 3\n0.11294628078612906 0.38611651111402034 0.5 3 13\n...\n0.4388985979776988 0.18268137509849586 1.0 142 158\n1.4343610172143002 0.3478109852897205 0.5 94 200\n```\n\nRunning tests\n-------------\n\n```\npip install .[dev]\npytest\n```\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/iamlikeme/rainflow", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rainflow", "package_url": "https://pypi.org/project/rainflow/", "platform": "", "project_url": "https://pypi.org/project/rainflow/", "project_urls": { "Homepage": "https://github.com/iamlikeme/rainflow", "Repository": "https://github.com/iamlikeme/rainflow" }, "release_url": "https://pypi.org/project/rainflow/3.1.1/", "requires_dist": [ "importlib_metadata; python_version < \"3.8\"" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "Implementation of ASTM E1049-85 rainflow cycle counting algorithm", "version": "3.1.1", "yanked": false, "yanked_reason": null }, "last_serial": 12422874, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "f57edde1bcd59fafc3aa006bde8d5d1e", "sha256": "c26914815635b0023cb255a7799a09d367a62de04fdd25a82ef5f40887a89ab1" }, "downloads": -1, "filename": "rainflow-2.0.0.tar.gz", "has_sig": false, "md5_digest": "f57edde1bcd59fafc3aa006bde8d5d1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2873, "upload_time": "2018-02-25T15:10:09", "upload_time_iso_8601": "2018-02-25T15:10:09.097958Z", "url": "https://files.pythonhosted.org/packages/3d/16/5c45075ff38acc26298faec54b2af4c7168ce39e6d36b31218578b4a6734/rainflow-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "fb1be2864de3671d56d06f57f1b5c6fa", "sha256": "e3f528c87b0fec9ccb78bab98208d144372ebfeb91867e0ad1e76e7cea49ceb3" }, "downloads": -1, "filename": "rainflow-2.1.1.tar.gz", "has_sig": false, "md5_digest": "fb1be2864de3671d56d06f57f1b5c6fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15881, "upload_time": "2018-04-17T20:06:15", "upload_time_iso_8601": "2018-04-17T20:06:15.316276Z", "url": "https://files.pythonhosted.org/packages/01/59/a2a002ab1a9169af75c0136bfe165cf26366dec02efd4ec9dbb5ce2c4451/rainflow-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "a7de1a74a6b5c66011f207ea59848d71", "sha256": "96a4752d699b2034dd5d117aa31d3b29002ed8133cc31747e155f8f474065bf6" }, "downloads": -1, "filename": "rainflow-2.1.2.tar.gz", "has_sig": false, "md5_digest": "a7de1a74a6b5c66011f207ea59848d71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4414, "upload_time": "2018-06-14T20:03:45", "upload_time_iso_8601": "2018-06-14T20:03:45.496453Z", "url": "https://files.pythonhosted.org/packages/95/e8/ef5a56c597284e2e0f2b8a498d271a8af53451787bb9bfe8019aaf8fc80c/rainflow-2.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "848e3230709259e7bd1edb09ac372990", "sha256": "9237ae1dd8e588becf4a99687bfd5fc10f98a61d412e0e1000a4d0e0fa0f1838" }, "downloads": -1, "filename": "rainflow-2.2.0.tar.gz", "has_sig": false, "md5_digest": "848e3230709259e7bd1edb09ac372990", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5984, "upload_time": "2019-10-24T19:57:44", "upload_time_iso_8601": "2019-10-24T19:57:44.352438Z", "url": "https://files.pythonhosted.org/packages/af/6a/0df5d9834c921426fae958f0d4b12132ed0e0888f60613dd925753b420bd/rainflow-2.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "ff7f199de611913b01607ec51dfc7f3b", "sha256": "c6662ba9555d6421d14fcdf71107555d22a87486a54354f65e0368ae12a28022" }, "downloads": -1, "filename": "rainflow-3.0.0.tar.gz", "has_sig": false, "md5_digest": "ff7f199de611913b01607ec51dfc7f3b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 5908, "upload_time": "2020-04-20T19:41:29", "upload_time_iso_8601": "2020-04-20T19:41:29.378575Z", "url": "https://files.pythonhosted.org/packages/82/40/a7c674e534d4b364ee2e7e5cfc1a5118c8628434d239dbeab232c2cd5bb0/rainflow-3.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "08415f7a65da97097798841f5d377d3d", "sha256": "2c7ee8b0d36d32073aefc701f18b283534981152d0f64dab2162a64ba5a98bc3" }, "downloads": -1, "filename": "rainflow-3.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "08415f7a65da97097798841f5d377d3d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 5126, "upload_time": "2020-11-18T20:16:16", "upload_time_iso_8601": "2020-11-18T20:16:16.251967Z", "url": "https://files.pythonhosted.org/packages/e4/82/bb9bda34b1e2ea11885063a7b0328cbc9070bd237dadc78bbbaecab2405b/rainflow-3.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "54e63dc39e5192b427e2b66021793728", "sha256": "26b24f66dd8591dfd88566000a9b80a64a967e2ffa2825261b2b7db37aacd2da" }, "downloads": -1, "filename": "rainflow-3.0.1.tar.gz", "has_sig": false, "md5_digest": "54e63dc39e5192b427e2b66021793728", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 6170, "upload_time": "2020-11-18T20:16:17", "upload_time_iso_8601": "2020-11-18T20:16:17.370031Z", "url": "https://files.pythonhosted.org/packages/d1/73/ee4bef60b6232d91d0ed76791fee38ba59bbf968116c6721203fc0e16d9c/rainflow-3.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "cb2a763c7f5a4e1541c2289825aec521", "sha256": "d9a17a35a4851852135a4ea71e8b08ef1dae2d281e1652856db479cc791f06d3" }, "downloads": -1, "filename": "rainflow-3.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cb2a763c7f5a4e1541c2289825aec521", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4933, "upload_time": "2021-11-16T15:30:29", "upload_time_iso_8601": "2021-11-16T15:30:29.955249Z", "url": "https://files.pythonhosted.org/packages/70/ca/7a320cae6307f6f141db7d70063b547178b9b3726177962c8ceac2e4c3c8/rainflow-3.1.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "35b572146871fb072ce8897d44034d50", "sha256": "05233b1737c5dc3ba487beadfe9095f5fb8705a35f0572cdff70768945d2dda0" }, "downloads": -1, "filename": "rainflow-3.1.0.tar.gz", "has_sig": false, "md5_digest": "35b572146871fb072ce8897d44034d50", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 5094, "upload_time": "2021-11-16T15:30:31", "upload_time_iso_8601": "2021-11-16T15:30:31.421934Z", "url": "https://files.pythonhosted.org/packages/1e/ff/4aa73847cf65005f1c3136dc4e644e2b48ce0d3746d1c659f84b64251f90/rainflow-3.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "4a0c6824675aaae5e48eba0d5e08f721", "sha256": "bba95874fbf0eebc7752789db058854b4bba2ec35acd219327b86471599a9265" }, "downloads": -1, "filename": "rainflow-3.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4a0c6824675aaae5e48eba0d5e08f721", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 5059, "upload_time": "2021-12-28T13:55:37", "upload_time_iso_8601": "2021-12-28T13:55:37.374170Z", "url": "https://files.pythonhosted.org/packages/d7/da/5d0533f783b6550d717ad6f15a8861f317c7621eb72bd1db670eab8faf7b/rainflow-3.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4d3ff4ea2b88eaa2eb2da22535931f8f", "sha256": "8e0db67711bee5025420fa0bee0410239ffb7dae88e221b55891ca323fb2512e" }, "downloads": -1, "filename": "rainflow-3.1.1.tar.gz", "has_sig": false, "md5_digest": "4d3ff4ea2b88eaa2eb2da22535931f8f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 5214, "upload_time": "2021-12-28T13:55:38", "upload_time_iso_8601": "2021-12-28T13:55:38.695582Z", "url": "https://files.pythonhosted.org/packages/c8/ff/06f976f64918a8fa1768ba86bf5a6000ff601b409711ffa52daec531bf23/rainflow-3.1.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4a0c6824675aaae5e48eba0d5e08f721", "sha256": "bba95874fbf0eebc7752789db058854b4bba2ec35acd219327b86471599a9265" }, "downloads": -1, "filename": "rainflow-3.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4a0c6824675aaae5e48eba0d5e08f721", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 5059, "upload_time": "2021-12-28T13:55:37", "upload_time_iso_8601": "2021-12-28T13:55:37.374170Z", "url": "https://files.pythonhosted.org/packages/d7/da/5d0533f783b6550d717ad6f15a8861f317c7621eb72bd1db670eab8faf7b/rainflow-3.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4d3ff4ea2b88eaa2eb2da22535931f8f", "sha256": "8e0db67711bee5025420fa0bee0410239ffb7dae88e221b55891ca323fb2512e" }, "downloads": -1, "filename": "rainflow-3.1.1.tar.gz", "has_sig": false, "md5_digest": "4d3ff4ea2b88eaa2eb2da22535931f8f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 5214, "upload_time": "2021-12-28T13:55:38", "upload_time_iso_8601": "2021-12-28T13:55:38.695582Z", "url": "https://files.pythonhosted.org/packages/c8/ff/06f976f64918a8fa1768ba86bf5a6000ff601b409711ffa52daec531bf23/rainflow-3.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }