Skip to main content

Python package for system identification of linear time-invariant systems.

The package is written from a structural engineering perspective. However, the identification methods are applicable to linear time-invariant systems, and the implementation may also be used in other domains.

The primary focus of this package is to provide funtionality to identify models of linear time-invariant systems.

Additionally, the package has a class for stabilization diagrams for selecting modes interactively, a spatial module for establishing a spatial model of a structure and converting a mode shape vector to a deformation array for a higher order 3D mesh and a class for plotting and animating mode shapes on spatial models with matplotlib. Below is an animation of the first horizontal bending mode of the railway bridge at Hell, identified and animated by strid alone:

hell_animation

Installation

Either download the repository to your computer and install, e.g. by pip

pip install .

or install directly from github

pip install git+https://github.com/gunnstein/strid.git

or install directly from the python package index

pip install strid

Usage

The code example below shows how the modes of a combined deterministic-stochastic system can be obtained from measurements of the input u and the output y.

# ..
# Assume that the measured input u and output y and sampling rate is available
#
# First, import the strid module
import strid

# Then instanciate the appropriate subspace identification (SID) object
csid = strid.CombinedDeterministicStochasticSID(u, y, fs)

# If we know the model order we can now perform the SID and obtain the
# state space system matrices. For instance, we can  20 block rows and
# a model order of 100 as shown below
A, B, C, D = csid.perform(100, 20, estimate_B_and_D=True)

# Most often, we do not know the model order, and instead we overestimate
# model order and pick the physical modes with the help of a stabilization
# diagram. Strid also includes a stabilization diagram and functionality to
# pick modes directly from the plot.
# First, we must estimate modes for a range of different model orders
modes = dict()
for order in range(5, 150, 1):
    A, C = csid.perform(order, 20)
    modes[order] = strid.Mode.find_modes_from_ss(A, C, csid.fs)

# Then we can create and plot a stabilization diagram (see image below)
stabdiag = strid.StabilizationDiagram()
stabdiag.plot(modes)

# And we can use the mouse to pick the stable poles from
# the diagram and then access the picked modes with the
# `picked_modes` property of the StabilizationDiagram instance.
picked_modes = stabdiag.picked_modes

stab_plot

Additional examples are found in the examples folder.

Support

Please open an issue for support.

Contributing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

Metadata

Release files for strid 0.4.3

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

Source distribution (sdist)

Source distribution for strid 0.4.3
File Size Uploaded
strid-0.4.3.tar.gz 35.1 kB Details

Built distribution (wheel)

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

Total release size: 72.0 kB

Release files / strid-0.4.3.tar.gz

Download URL strid-0.4.3.tar.gz
Size 35.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8a2394c3306306db5a579a244d59e20c8636693c6bbe075917c8a9b5466fccb6
BLAKE2b-256 checksum
How to use checksums
1c45975811284b4b42ea38e6d71b0736d8c94df3ba6c2acfc891b600d2ef8f37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release files / strid-0.4.3-py3-none-any.whl

Download URL strid-0.4.3-py3-none-any.whl
Size 36.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f81c9d26d0a4b30fb0527f45e0582b18c3f57fa0121ea751c7e923dc4f799cec
BLAKE2b-256 checksum
How to use checksums
f0a88cf369f7831945ebc660a271b967017b0f18c8136459427d8d02a7511472
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.4.3 This release

2 release files

0.4.2

2 release files

0.4.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.3

2 release files

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