Skip to main content

Rainflow

Test rainflow

rainflow is a Python implementation of the ASTM E1049-85 rainflow cycle counting algorythm for fatigue analysis.

Installation

rainflow is available on PyPI:

pip install rainflow

and on conda-forge:

conda install rainflow --channel conda-forge

Usage

See release notes in CHANGELOG.md.

Let's generate a sample time series. Here we simply generate a list of floats but rainflow works with any sequence of numbers, including numpy arrays and pandas Series.

from math import sin, cos

time = [4.0 * i / 200 for i in range(200 + 1)]
signal = [0.2 + 0.5 * sin(t) + 0.2 * cos(10*t) + 0.2 * sin(4*t) for t in time]

Function count_cycles returns a sorted list of ranges and the corresponding number of cycles:

import rainflow

rainflow.count_cycles(signal)
# Output
[(0.04258965150708488, 0.5),
 (0.10973439445727551, 1.0),
 (0.11294628078612906, 0.5),
 (0.2057106991158965, 1.0),
 (0.21467990941625242, 1.0),
 (0.4388985979776988, 1.0),
 (0.48305748051348263, 0.5),
 (0.5286423866535466, 0.5),
 (0.7809330293159786, 0.5),
 (1.4343610172143002, 0.5)]

Cycle ranges can be binned or rounded to a specified number of digits using optional arguments binsize, nbins or ndigits:

rainflow.count_cycles(signal, binsize=0.5)
# Output
[(0.5, 5.5), (1.0, 1.0), (1.5, 0.5)]

rainflow.count_cycles(signal, ndigits=1)
# Output
[(0.0, 0.5),
 (0.1, 1.5),
 (0.2, 2.0),
 (0.4, 1.0),
 (0.5, 1.0),
 (0.8, 0.5),
 (1.4, 0.5)]

Full information about each cycle, including mean value, can be obtained using the extract_cycles function:

for rng, mean, count, i_start, i_end in rainflow.extract_cycles(signal): 
    print(rng, mean, count, i_start, i_end) 
# Output             
0.04258965150708488 0.4212948257535425 0.5 0 3
0.11294628078612906 0.38611651111402034 0.5 3 13
...
0.4388985979776988 0.18268137509849586 1.0 142 158
1.4343610172143002 0.3478109852897205 0.5 94 200

Running tests

pip install .[dev]
pytest

Metadata

Release files for rainflow 3.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rainflow 3.2.0
File Size Uploaded
rainflow-3.2.0.tar.gz 4.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rainflow 3.2.0
File Interpreter ABI Platform
rainflow-3.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.5 kB

Release files / rainflow-3.2.0.tar.gz

Download URL rainflow-3.2.0.tar.gz
Size 4.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a78f7cd0acab11ccb80567a5c5db9f3a619dee8ac89a5fc861685fe5ffe827fd
BLAKE2b-256 checksum
How to use checksums
d45957218a5eba4772d1422fe67d37aa3840f80b7bb2b360153d25484f2d32af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / rainflow-3.2.0-py3-none-any.whl

Download URL rainflow-3.2.0-py3-none-any.whl
Size 4.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb6c254aa1a16a9e658ff3f39c6e5a77650d6c4e8304146169b36516d1f01660
BLAKE2b-256 checksum
How to use checksums
3ec8a6d626326cec5eb7c2f8f0646607e90a24d862b64976fc8f111bdb30aa2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

3.2.0 This release

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

1 release file

2.2.0

1 release file

2.1.2

1 release file

2.1.1

1 release file

2.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page