Recent Releases of pyOMA2: A Python module for conducting operational modal analysis
pyOMA2: A Python module for conducting operational modal analysis - v1.2.0
[1.2.0] - 2025-09-09
This release includes all changes from beta releases 1.2.0b1, 1.2.0b2, 1.2.0b3, and 1.2.0b4.
[1.2.0b4] - 2025-06-18
Added
- Color scheme support for stabilization plots (
plot_stab()andplot_freqvsdamp()) to improve accessibility and readability get_pole_colors()function inplot.pyto manage color schemes for stable/unstable poles- Four color schemes available:
'default': Green/red colors (original scheme, maintained for backward compatibility)'classic': Blue/orange colors (colorblind-friendly alternative)'high_contrast': Black/gray colors (excellent for B&W printing)'viridis': Colors from viridis colormap (scientific publication friendly)
- Documentation section "Color Schemes for Stabilization Plots" in "Extra1 - Tips and tricks.rst"
- Documentation build instructions in CONTRIBUTING.md
Changed
- Enhanced
plot_stab()andcluster_plot()functions inplot.pyto acceptcolor_schemeparameter - Updated
plot_stab()andplot_freqvsdamp()methods in SSI and pLSCF algorithm classes to support color scheme selection - Improved docstrings in plotting functions to describe colorblind-friendly features
- Default plotting behavior maintains original green/red colors for backward compatibility
Fixed
- Accessibility issues in stabilization plots for users with color vision deficiencies
[1.2.0b3] - 2025-06-11
Changed
- Unified SSI algorithms class. With this change the user specifies which SSI algorithm to perform (i.e. "cov", "cov_R", "dat", "IOcov") in the RunParam class. In this way Clustering algorithms can be applied to every SSI algorithm.
- plot_stab() method of SSI class now accepts two new arguments to add a second optional axis with the plot of the singular values of the PSD matrix.
- SSI_fast() function (pyoma2.functions.ssi) now return also the G matrix (next state-output covariance matrix)
- refactor code and docstrings in ssi.py (algorithms), ssi.py (functions), plot.py, run_params.py
- example_data() function (pyoma2.functions.gen) has been improved and now returns also the input forces U
- refactor code in pyvista_plotter.py and mixin.py
Added
- "IOcov" method for build_hank() function. Allows to perform Input Output SSIcov
- U argument for inputs to SSIRunParams
- HCfreqlim() and syntspectr() functions to ssi.py functions file
- plotsilhouette() and spectracomparison() functions in plot.py functions file
- FuzzyCMeansClustering class and FCMeans() function in clus.py functions file
- estspectrum() and plotsSyVSmSy() methods for SSI class
- dynamic coloring of mode shape in animate_mode() method based on points position
Fixed
- bug in SSI_poles where normalisation to unity was applied before the covariance estimation
- bug in selfromplot.py where the step run_parameter for ssi was not considered
Removed
- aoma.py file
- AutoSSIRunParams class
- AutoSSIResult class
- AutoSSIMPEParams class
[1.2.0b2] - 2025-02-13
- fix tests
[1.2.0b1] - 2025-02-12
Added
- Extra1 example jupyter notebook
- Example5 jupyter notebook for clustering
- clustering.py function file
- aoma.py for AutoSSI class
- AutoSSIRunParams class, AutoSSIMPEParams class and AutoSSIResult class
- Step1, Step2, Step3 and Clustering classes
- documentation files for clustering and examples
Changed
- runparams have been split in runparams and mpe_params
all dependencies are now mandatory (pyvista and openpyxl)
security dependencies patch
Added
scikit-learndeps
- Python
Published by dfm88 9 months ago
pyOMA2: A Python module for conducting operational modal analysis - v1.1.2
[1.1.2] - 2025-06-18
Added
- Color scheme support for stabilization plots (
plot_stab()andplot_freqvsdamp()) to improve accessibility and readability get_pole_colors()function inplot.pyto manage color schemes for stable/unstable poles- Four color schemes available:
'default': Green/red colors (original scheme, maintained for backward compatibility)'classic': Blue/orange colors (colorblind-friendly alternative)'high_contrast': Black/gray colors (excellent for B&W printing)'viridis': Colors from viridis colormap (scientific publication friendly)
- Documentation section "Color Schemes for Stabilization Plots" in "Extra1 - Tips and tricks.rst"
- Documentation build instructions in CONTRIBUTING.md
Changed
- Enhanced
plot_stab()andcluster_plot()functions inplot.pyto acceptcolor_schemeparameter - Updated
plot_stab()andplot_freqvsdamp()methods in SSI and pLSCF algorithm classes to support color scheme selection - Improved docstrings in plotting functions to describe colorblind-friendly features
- Default plotting behavior maintains original green/red colors for backward compatibility
Fixed
- Accessibility issues in stabilization plots for users with color vision deficiencies
- Python
Published by dfm88 12 months ago
pyOMA2: A Python module for conducting operational modal analysis - v1.2.0b4
[1.2.0b4] - 2025-06-18
Added
- Color scheme support for stabilization plots (
plot_stab()andplot_freqvsdamp()) to improve accessibility and readability get_pole_colors()function inplot.pyto manage color schemes for stable/unstable poles- Four color schemes available:
'default': Green/red colors (original scheme, maintained for backward compatibility)'classic': Blue/orange colors (colorblind-friendly alternative)'high_contrast': Black/gray colors (excellent for B&W printing)'viridis': Colors from viridis colormap (scientific publication friendly)
- Documentation section "Color Schemes for Stabilization Plots" in "Extra1 - Tips and tricks.rst"
- Documentation build instructions in CONTRIBUTING.md
Changed
- Enhanced
plot_stab()andcluster_plot()functions inplot.pyto acceptcolor_schemeparameter - Updated
plot_stab()andplot_freqvsdamp()methods in SSI and pLSCF algorithm classes to support color scheme selection - Improved docstrings in plotting functions to describe colorblind-friendly features
- Default plotting behavior maintains original green/red colors for backward compatibility
Fixed
- Accessibility issues in stabilization plots for users with color vision deficiencies
- Python
Published by dfm88 12 months ago
pyOMA2: A Python module for conducting operational modal analysis -
Changed
- Unified SSI algorithms class. With this change the user specifies which SSI algorithm to perform (i.e. "cov", "cov_R", "dat", "IOcov") in the RunParam class. In this way Clustering algorithms can be applied to every SSI algorithm.
- plot_stab() method of SSI class now accepts two new arguments to add a second optional axis with the plot of the singular values of the PSD matrix.
- SSI_fast() function (pyoma2.functions.ssi) now return also the G matrix (next state-output covariance matrix)
- refactor code and docstrings in ssi.py (algorithms), ssi.py (functions), plot.py, run_params.py
- example_data() function (pyoma2.functions.gen) has been improved and now returns also the input forces U
- refactor code in pyvista_plotter.py and mixin.py
Added
- "IOcov" method for build_hank() function. Allows to perform Input Output SSIcov
- U argument for inputs to SSIRunParams
- HCfreqlim() and syntspectr() functions to ssi.py functions file
- plotsilhouette() and spectracomparison() functions in plot.py functions file
- FuzzyCMeansClustering class and FCMeans() function in clus.py functions file
- estspectrum() and plotsSyVSmSy() methods for SSI class
- dynamic coloring of mode shape in animate_mode() method based on points position
Fixed
- bug in SSI_poles where normalisation to unity was applied before the covariance estimation
- bug in selfromplot.py where the step run_parameter for ssi was not considered
Removed
- aoma.py file
- AutoSSIRunParams class
- AutoSSIResult class
- AutoSSIMPEParams class
- Python
Published by dfm88 12 months ago
pyOMA2: A Python module for conducting operational modal analysis - v1.2.0b2
[1.2.0b2] - 2025-02-13
- fix tests
- Python
Published by dfm88 over 1 year ago
pyOMA2: A Python module for conducting operational modal analysis - v1.2.0b1
Added
- Extra1 example jupyter notebook
- Example5 jupyter notebook for clustering
- clustering.py function file
- aoma.py for AutoSSI class
- AutoSSIRunParams class, AutoSSIMPEParams class and AutoSSIResult class
- Step1, Step2, Step3 and Clustering classes
- documentation files for clustering and examples
Changed
- runparams have been split in runparams and mpe_params
all dependencies are now mandatory (pyvista and openpyxl)
security dependencies patch
- Python
Published by dfm88 over 1 year ago
pyOMA2: A Python module for conducting operational modal analysis - v1.1.1
[1.1.1] - 2025-01-24
- fix cluster_plt parameter name to Xi
- Python
Published by dfm88 over 1 year ago
pyOMA2: A Python module for conducting operational modal analysis - v1.1.0
[1.1.0] - 2025-01-24
Fixed
- uncertainty calculations for SSI algorithm
- animation problem in pyvista
- small fix (moved ax.grid()) in plt_data
- updated docs
Changed
- Renamed
anim_mode_g2toanim_mode_geo2inGeometryMixinclass - Updated hierarchy for results and run_params classes
- Renamed
plot_cluster()method toplot_freqvsdamp() - SSI functions and classes re-organization:
cov_mmmethod renamed tocov- removed
ac2mpfunction - Hard criteria on MPC and MPD splitted
- HC on damping and on complex conjugate included into
SSI_polesfunction - order for runparam renamed to `orderin`
- Renamed uncertanties component from
xxx_covtoxxx_std
- updated tests
Added
- pre commit in github workflow
- clustering plotting functions to plot.py
- Python
Published by dfm88 over 1 year ago
pyOMA2: A Python module for conducting operational modal analysis - v1.0.0
[1.0.0] - 2024-09-12
BREAKING CHANGES
This version introduces a new project structure and a new way to handle the algorithms. A script is available here https://gist.github.com/dfm88/2bd2a08bb8b5837103dd074033bd7710 to help running the migration to new version.
Added
pyvistaoptional dependency for 3D plots- file
src/pyoma2/support/mpl_plotter.pyto handle matplotlib plots - file
src/pyoma2/support/pyvista_plotter.pyto handle pyvista plots - file
src/pyoma2/test_data/3SL/Geo1.xlsx - file
src/pyoma2/test_data/3SL/Geo2.xlsx - file
src/pyoma2/test_data/5dof/Geo1.xlsx - file
src/pyoma2/test_data/5dof/Geo2.xlsx - file
src/pyoma2/test_data/Geometry/htc_geo2.xlsx - file
src/pyoma2/test_data/Template_Geometry2.xlsx - file
src/pyoma2/test_data/palisaden/Geo1.xlsx - file
src/pyoma2/test_data/palisaden/Geo2.xlsx - platform specific installation in github workflow and requirements extraction in pre-commit
Changed
- tests to support new project structure
OMA.pyremovedinplacemethod fromSingleSetupandMultiSetup_PreGERclasses, add a copy of data on init with the possibility torollbackthem- moved
plot_mode_g1andplot_mode_g2andanim_mode_g2methods fromSingleSetuptoBaseSetupclass - function
pyoma2/functions/fdd.py::SDOF_bellandMSnow have custom logic for algorithm methodsFSDDandEFDD - function
pyoma2/functions/plscf.py::pLSCF_polesnow return an additional element in the tuple - function
pyoma2/functions/plscf.py::ac2mp_polynow return an additional element in the tuple moved all geometry related methods to the
pyoma2/support/geometry/mixin.pyfile where the following method are availabledef_geo1,def_geo2,_def_geo_by_file,def_geo1_by_file,def_geo2_by_file,plot_geo1,plot_geo2,plot_geo2_mpl,plot_mode_geo1,plot_mode_geo2,plot_mode_geo2_mpl,anim_mode_geo2and available toBaseSetupclass andMultiSetup_PoSERclass. The proxy to these method were removed fromBaseAlgorithmclass and moved to the mixin classGeometryMixinand so proxied by theSetupclasses that implement the geometry mixin.Library re-organization:
- file
pyoma2/OMA.pysplit inpyoma2/setuppackage in the following files: base.py: here we moved the following classesBaseSetupsingle.py: here we moved the following classesSingleSetupmulti.py: here we moved the following classesMultiSetup_PreGER,MultiSetup_PoSER- file
pyoma2/support/utils/logging_handler.pymoved topyoma2/support/utils/logging_handler.py - file
pyoma2/utils/typing.pymoved topyoma2/support/utils/typing.py - package
pyoma2/algorithmrenamed topyoma2/algorithms - file
pyoma2/algorithm/data/geometry.pymoved topyoma2/support/geometry.py - file
pyoma2/plot/Sel_from_plot.pymoved topyoma2/support/Sel_from_plot.py - variable
pyoma2/algorithms/data/result.py::SSIResult.xi_polesrenamed topyoma2/algorithms/data/result.py::SSIResult.Xi_poles - variable
pyoma2/algorithms/data/result.py::xi_poles.xi_polesrenamed topyoma2/algorithms/data/result.py::xi_poles.Xi_poles - variable
pyoma2/algorithms/data/run_params.py::EFDDRunParams.methodrenamed topyoma2/algorithms/data/run_params.py::EFDDRunParams.method_hank - class
pyoma2/algorithms/fdd.py::FDD_algorenamed topyoma2/algorithms/fdd.py::FDD - class
pyoma2/algorithms/fdd.py::EFDD_algorenamed topyoma2/algorithms/fdd.py::EFDD - class
pyoma2/algorithms/fdd.py::FSDD_algorenamed topyoma2/algorithms/fdd.py::FSDD - class
pyoma2/algorithms/fdd.py::FDD_algo_MSrenamed topyoma2/algorithms/fdd.py::FDD_MS - class
pyoma2/algorithms/fdd.py::EFDD_algo_MSrenamed topyoma2/algorithms/fdd.py::EFDD_MS - method
pyoma2/algorithms/fdd.py::EFDD.plot_FITrenamed topyoma2/algorithms/fdd.py::EFDD.plot_EFDDfit - function
pyoma2/functions/fdd.py::SD_Estrenamed topyoma2/functions/fdd.py::SD_est - function
pyoma2/functions/plscf.py::pLSCF_Polesrenamed topyoma2/functions/plscf.py::pLSCF_poles - function
pyoma2/functions/plscf.py::rmfd2ACrenamed topyoma2/functions/plscf.py::rmfd2ac - function
pyoma2/functions/plscf.py::AC2MP_polyrenamed topyoma2/functions/plscf.py::ac2mp_poly - function
pyoma2/functions/plscf.py::pLSCF_MPErenamed topyoma2/functions/plscf.py::pLSCF_mpe - function
pyoma2/functions/ssi.py::BuildHankrenamed topyoma2/functions/ssi.py::build_hank - function
pyoma2/functions/ssi.py::AC2MPrenamed topyoma2/functions/ssi.py::ac2mp - function
pyoma2/functions/ssi.py::SSI_FASTrenamed topyoma2/functions/ssi.py::SSI_fast - function
pyoma2/functions/ssi.py::SSI_POLESrenamed topyoma2/functions/ssi.py::SSI_poles - function
pyoma2/functions/ssi.py::SSI_MulSetrenamed topyoma2/functions/ssi.py::SSI_multi_setup - function
pyoma2/functions/ssi.py::SSI_MPErenamed topyoma2/functions/ssi.py::SSI_mpe - file
pyoma2/functions/FDD_funct.pyrenamed topyoma2/functions/fdd.py - file
pyoma2/functions/plot_funct.pyrenamed topyoma2/functions/plot.py - file
pyoma2/functions/Gen_funct.pyrenamed topyoma2/functions/gen.py - file
pyoma2/functions/SSI_funct.pyrenamed topyoma2/functions/ssi.py - method
pyoma2/algorithms/base.py::BaseAlgorithm.MPErenamed topyoma2/algorithms/base.py::BaseAlgorithm.mpe - method
pyoma2/algorithms/base.py::BaseAlgorithm.mpe_fromPlotrenamed topyoma2/algorithms/base.py::BaseAlgorithm.mpe_from_plot
- file
Fixed
- python 3.12 support (akaszynsk)
Removed
- file
src/pyoma2/plot/anim_mode.pynow handled by pyvista - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/BG_lines.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/BG_nodes.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/geom.xlsx - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/pts_coord.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_coord.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_dir.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_lines.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_map.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_sign.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/BG_lines.txt' - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/BG_nodes.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/geom_pali.xlsx - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/pts_coord.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_dir.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_lines.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_map.txt - file
https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_sign.txt - function
pyoma2/functions/ssi.py::Lab_stab_SSI - function
pyoma2/functions/gen.py::lab_stab - support in testing for
python3.8andmacosdue tovtkdependency that is not compatible with platform using during tests action - File for example are now retrieved from the online repo https://github.com/dagghe/pyOMA-test-data/tree/main/test_data and removed from the repo
- Python
Published by dfm88 over 1 year ago
pyOMA2: A Python module for conducting operational modal analysis - v0.6.0
Fixed
- python 3.12 support (akaszynsk)
Added
- tox.ini file to run tests locally on multiple python versions
- Python
Published by dfm88 over 1 year ago
pyOMA2: A Python module for conducting operational modal analysis - v0.5.2
[0.5.2] - 2024-05-21
Fixed
- type hints 3.8 compatibility
- Python
Published by dfm88 about 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.5.1
[0.5.1] - 2024-04-16
Fixed
multi_setup_posertests- bug "SSI_Poles orders issue #11"
- various minor fixes
Added
- python 3.12 support
- MPC and MPD criteria on stabilisation diagram for ssi and plscf
- colormap to mode shape animation
- method to save class to file
- Python
Published by dagghe about 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.5.0
[0.5.0] - 2024-04-09
Added
- issue, feature, question templates
Changed
pre-commitdefault formatter toruffOMA.pymoveddecimate_data,detrend_data,filter_datato BaseSetup and addinplaceoption default to false
Fixed
mpeinFDDalgorithm
Added
- tests
- workflow for tests on push and pull request
- Python
Published by dfm88 about 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.4.1
[0.4.1] - 2024-03-05
Added
pytest-covto qa dependencies- first tests
Changed
- evaluation types on BaseAlgorithm excluding itself
- more readable error when defining new algorithms
_pre_runon algorithms is now called from setup classes
Fixed
plscf.pymodule name https://github.com/dagghe/pyOMA2/issues/5
- Python
Published by dfm88 about 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.4.0
[0.4.0] - 2024-02-29
Added
plscfmodule for polymaxplot_STFT()to plot the Short Time Fourier Transform magnitude of a channel (time-frequency plot)filter_data()method to apply a Butterworth filter to the dataset- origin and reference axes (xyz) in modeshape plots and animations
Fixed
- axis argument for
detrend_data()anddecimate_data()methods - minor fixes to
plot_data()method
Changed
- revised
plot_ch_info()method to assess quality of data Stab_plot()andCluster_plot()functions have been revised so thatplot_cluster()plot_STDiag()methods work for both ssi and plscf
- Python
Published by dagghe over 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.3.2
[0.3.2] - 2024-02-17
Fixed
- link to documentation in toml file
- pyOMA version in the requirements for documentation build
- small fixes in documentation
Removed
- MAC function from SSIfunct module (restored import from Genfunct)
- Python
Published by dagghe over 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.3.1
[0.3.1] - 2024-02-17
Added
- docstring to all classes and functions
- option to save gif figure from animation of the mode shape
- documentation
- logo
Removed
- old example files under main
- util.py as it was not used
Changed
- the
freqlimargument in all the plot function has been changed to a tuple, so to set both an upper and a lower limit to the x (frequency) axis - moved info.svg under docs/img folder
- moved examples notebooks in Examples folder
Fixed
- docstring fix for OMA.py
- default ax value to 0 for
detrend_data()anddecimate_data()methods - links to moved items
- Python
Published by dagghe over 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.3.0
[0.3.0] - 2024-02-02
Added
- methods:
plot_data(),plot_ch_info(),detrend_data(),decimate_data()to Multisetup preGER class - info.svg chart to README
- Multisetup PoSER and PreGER examples notebook
- several docstring to functions and classes
Removed
- channels name from
plot_mode_g1()method
Changed
- default ax value to 0 for
detrend_data()anddecimate_data()methods - name to single setup example notebook
- minor reorganisation of
pLSCF_funct.py - updated README.md with link to the example notebooks
- add
PYOMA_DISABLE_MATPLOTLIB_LOGGINGenv variable to disable matplotlib logging, default to True
Fixed
- error to
plot_geo2()method for both SS and MS (WARNING posx,posy) - restored functions removed by mistake from
Gen_funct.py
Full Changelog: https://github.com/dagghe/pyOMA2/compare/v0.2.0...v0.3.0
- Python
Published by dfm88 over 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.2.0
[0.2.0] - 2024-01-30
Fixed
- plot size
- small fixes in
OMA.pyandplot_func.py
Added
- methods to plot channels info
- docstring on
SelFormPlotclass - jupyter notebook for
SingleSetup
- Python
Published by dfm88 over 2 years ago
pyOMA2: A Python module for conducting operational modal analysis - v0.1.0
alpha
- Python
Published by dfm88 over 2 years ago