Skip to main content

Modalyzer: Operational Modal Analysis (OMA) toolkit in Python (EFDD, SSI, PolyMAX, ITD).

Project description

Modalyzer

Open‑source Python library for Operational Modal Analysis (OMA) and system identification.
Modalyzer provides multiple algorithms — EFDD/FDD, SSI (cov/data), ITD, and PolyMAX — along with helpers for preprocessing, stabilization diagrams, and drawing mode shapes for common structures.

Status: research code under active revision, shared to accompany an open‑source paper. Interfaces may still evolve.


Key Features

  • Preprocessing: detrend, band‑pass filter, decimate, channel removal, and auto‑sync across channels.
  • Frequency Domain Decomposition (EFDD/FDD): PSD SVD, manual peak picking, complex mode shapes, SDOF autocorrelation damping.
  • SSI (cov & data variants): state‑space estimation and pole stabilization.
  • ITD: fast coarse extraction of poles and damping.
  • PolyMAX / p‑LSCF: accurate poles and mode shapes and a stabilization diagram.
  • Plots: stabilization diagrams, MAC, and structure‑specific mode‑shape drawings (Farrar 4‑story frame, bridges, etc.).

Installation

Modalyzer is currently distributed as source. You can install it in editable mode:

# Clone your (test) repository then install locally
git clone https://github.com/<your-username>/modalyzer-test.git
cd modalyzer-test
python -m venv .venv
# Windows PowerShell:
. .venv\\Scripts\\Activate.ps1
pip install -U pip
pip install -e .  # optional; or just run with PYTHONPATH

If you don't have a setup.py/pyproject.toml yet, you can still use it as a plain package by keeping this repo root on your PYTHONPATH or by running examples from the repo root.

Dependencies

The modules use: numpy, pandas, matplotlib, scipy, torch, and optionally plotly. Install them with:

pip install numpy pandas matplotlib scipy torch plotly

Repository Layout

modalyzer/
├─ src/modalyzer/
│  ├─ Preprocess.py         # preprocess(), choose_modes(), results_table(), etc.
│  ├─ EFDD.py               # FDD_SVD_Diagram(), FDD_ModeShape(), FDD_Damping(), ...
│  ├─ SSI.py                # SSI_COV(), SSI_DATA(), modal_parameters(), Stable_Poles(), stabilization_diagram()
│  ├─ ITD.py                # ITD_alg(), helpers for correlation & poles
│  ├─ PolyMAX.py            # PolyMAX(), independent_mode_shape(), stabilization_diagram(), ...
│  └─ ModeShape.py          # draw_mode_shapes(), draw_MAC_diagram(), structure‑specific plotters
├─ tests/
│  └─ test_basic.py
├─ README.md
├─ LICENSE
└─ AUTHORS.md

Tip: Most core functions accept both numpy arrays and pandas DataFrames; when matrices are in sensor‑by‑time or time‑by‑sensor shape, some functions auto‑transpose to [channels, samples] internally.


Citing

If this library helps your research, please cite the Modalyzer paper (details will be added once it is published). You can also star the repository to support the project.

A CITATION.cff will be added after publication.


License

This project is licensed under the terms in LICENSE (e.g., BSD‑3‑Clause or MIT depending on your choice).


Contributing

Pull requests and issues are welcome. If you plan significant changes, please open an issue to discuss the proposal first.

  • Run tests with pytest (to be expanded).
  • Follow PEP8/black where possible.
  • Please include small reproducible examples when reporting bugs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modalyzer-1.2.1.tar.gz (12.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modalyzer-1.2.1-py3-none-any.whl (67.0 kB view details)

Uploaded Python 3

File details

Details for the file modalyzer-1.2.1.tar.gz.

File metadata

  • Download URL: modalyzer-1.2.1.tar.gz
  • Upload date:
  • Size: 12.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for modalyzer-1.2.1.tar.gz
Algorithm Hash digest
SHA256 fa4c3d7cf233edaa58cda9284b813e6751514f3f0834b86ec9826ba5e14a4b7d
MD5 55feef91e9d42c0ae6803d690df5fa3f
BLAKE2b-256 33f3ae8d433c958ce45ec626c9e74870b2453d261f936474e2ff34cd811425dd

See more details on using hashes here.

File details

Details for the file modalyzer-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: modalyzer-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 67.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for modalyzer-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1aade106cd1b52c869b29e585322fc9f03e5838f38e19dbce93c494a80abe5b
MD5 887003b4902f7575725e01737581068d
BLAKE2b-256 12b58c76262a58d64ad8f6f44555f9fa1781097735b391218a90f73e5c1efebe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page