Python module for conducting Operational Modal Analysis
Project description
pyOMA2
This is the new and updated version of pyOMA module, a Python module designed for conducting operational modal analysis. With this update, we've transformed pyOMA from a basic collection of functions into a more sophisticated module that fully leverages the capabilities of Python classes.
Key Features & Enhancements:
- Support for single and multi-setup measurements, which includes handling multiple acquisitions with mixed reference and roving sensors.
- Interactive plots for intuitive mode selection, users can now extract desired modes directly from algorithm-generated plots.
- Structure geometry definition, enabling 3D visualization of mode shapes once modal results are obtained.
- Uncertainty estimation for modal properties in Stochastic Subspace Identification (SSI) algorithms.
- Specialized clustering classes for Automatic OMA using SSI, streamlining modal parameter extraction.
- New OMAX (OMA with Exogenous Input) functionality for SSI, expanding the module’s capabilities to handle forced excitation scenarios.
Documentation
You can check the documentation at the following link:
https://pyoma.readthedocs.io/en/main/
Quick start
Install the library with pip:
pip install pyOMA-2
or with conda/mamba:
conda install pyOMA-2
You'll probably need to install tk for the GUI on your system, here some instructions:
Windows:
https://www.pythonguis.com/installation/install-tkinter-windows/
Linux:
https://www.pythonguis.com/installation/install-tkinter-linux/
Mac:
https://www.pythonguis.com/installation/install-tkinter-mac/
Docker (Recommended for isolated environment)
Run pyOMA2 in a container with all dependencies pre-installed - no local Python setup needed, just Docker.
Build the image
docker compose build
Run Jupyter Notebook
docker compose up jupyter
Then open http://localhost:8888 in your browser (no token required for local development).
Docker Limitations:
- Interactive Qt windows (
pyvistaqt) not available - usenotebook=Truefor 3D plots andsave_gif=Truefor animations - Authentication disabled for convenience - only use on trusted networks
Run Python shell
docker compose up pyoma2
Run a command in the container
docker compose run --rm pyoma2 python3 your_script.py
Enter interactive shell
docker compose run --rm pyoma2 /bin/bash
GUI Applications (Optional)
For 3D visualizations and interactive plots, enable X11 forwarding:
Linux:
xhost +local:docker
docker compose up pyoma2
macOS:
# Install XQuartz first: brew install --cask xquartz
xhost +localhost
docker compose up pyoma2
Windows/WSL2:
# Install VcXsrv or Xming, then:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
docker compose up pyoma2
Examples
To see how the module works please take a look at the jupyter notebook provided:
- Example1 - Getting started.ipynb
- Example2 - Real dataset.ipynb
- Example3 - Multisetup PoSER.ipynb
- Example4 - MultiSetup PreGER.ipynb
- Example5 - Clustering for Automatic OMA.ipynb
- Extra - Tips and Tricks 1.ipynb
Schematic organisation of the module showing inheritance between classes
How to Cite
If you use pyOMA2 in your research, please cite our JOSS paper:
BibTeX:
@article{Pasca2025,
doi = {10.21105/joss.07656},
url = {https://doi.org/10.21105/joss.07656},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {115},
pages = {7656},
author = {Pasca, Dag P. and Margoni, Diego Federico},
title = {pyOMA2: A Python module for conducting operational modal analysis},
journal = {Journal of Open Source Software}
}
APA:
Pasca, D. P., & Margoni, D. F. (2025). pyOMA2: A Python module for conducting operational modal analysis. Journal of Open Source Software, 10(115), 7656. https://doi.org/10.21105/joss.07656
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyoma_2-1.2.1.tar.gz.
File metadata
- Download URL: pyoma_2-1.2.1.tar.gz
- Upload date:
- Size: 198.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac3080445cf242673208b464c641d895a22dd7ab161fc9ede21d5588265e1061
|
|
| MD5 |
0d2715aeac0228f06a199afbb653edb2
|
|
| BLAKE2b-256 |
857dfb3aec225edbbd9f9e63db2e1b12a396c93194c6f0f4fb486469bb361208
|
File details
Details for the file pyoma_2-1.2.1-py3-none-any.whl.
File metadata
- Download URL: pyoma_2-1.2.1-py3-none-any.whl
- Upload date:
- Size: 134.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
489c275403fb3ba1ba742b47eccec4b3b56f5cf4ddb82dc31add1eb391d21460
|
|
| MD5 |
d2f6d01e612791ec009b9e431c78af21
|
|
| BLAKE2b-256 |
3dd768b67a2f7434a5c82ab6fd4f57ad4604110a0ec7aef611d78af9d7586dc2
|