GithubHelp home page GithubHelp logo

pyoma's Introduction

ATTENTION!!!

Dear users please check out our new release, pyOMA2.

The main novelties introduced by the new release are:

  • Comprehensive Code Revision: The underlying algorithms have undergone a thorough overhaul for more efficient and robust performance.
  • Specialized Class Structures: Includes specialized classes for handling both single-setup and multi-setup measurements, enhancing data management versatility.
  • Interactive Plotting Feature: An optional interactive plotting capability allows users to select desired modes directly from the algorithm's output plots, improving user interaction and mode selection.
  • Geometry Definition Option: Additional feature for optional geometry definition to enable plotting and animation of mode shapes, providing a comprehensive understanding of results post-analysis.

This repository will be discontinued when the final release of pyOMA2 will be out!

PyOMA

This software was created to perform output-only modal identification (Operational Modal Analysis, OMA).

OMA allows the experimental estimation of the modal parameters (natural frequencies, mode shapes, damping ratios) of a structure from measurements of the vibration response in operational condition.

PyOMA Team Presentation

youtube_video_PyOMAteam_presentation

What is PyOMA?

PyOMA is a python module that allows to perform OMA on ambient vibration measurments datasets.

PyOMA include the following algorithms:

  1. Frequency Domain Decomposition (FDD)

    1a. Original Frequency Domain Decomposition (FDD)

    2a. Enhanced Frequency Domain Decomposition (EFDD)

    3a. Frequency Spatial Domain Decomposition (FSDD)

  2. Stochastic Subspace Identification (SSI)

    2a. Covariance-driven Stochastic Subspace Identification (cov-SSI)

    2b. Data-driven Stochastic Subspace Identification (dat-SSI)

To better untersdand the workflow of the functions, see the workflow here.

Installing PyOMA

As a prerequisite to install PyOMA, you need to install Anaconda first. You should install a Python version greather equal 3.5 or the software may run in troubles.

To fully install PyOMA, you need to run the following commands (in the following order):

  • pip install pandas

  • pip install scipy

  • pip install matplotlib

  • pip install seaborn

  • pip install mplcursors

  • pip install Py-OMA

To import PyOMA in your workspace, simply type:

  • import PyOMA

Dependencies

Workflow

title

FDD:

1. run FDDsvp

	2.a run FDDmodEX to run original FDD
		
		and/or
		
	2.b run EFDDmodEX(method='EFDD') to run EFDD
		
		and/or
		
	2.c run EFDDmodEX(method='FSDD') to run FSDD

SSI

1.a run SSIcovStaDiag 
	
	2. run SSImodEX to run cov-SSI

		and/or

1.b run SSIdatStaDiag 
	
	2. run SSImodEX to run dat-SSI 

Function Description

A complete description of the functions available in PyOMA can be found in the page Function Description.

What is PyOMA_GUI? A brief software overview

PyOMA_GUI is a graphical user interface software developed in PyQt5, which implements in a single integrated tool the operational modal analysis of civil structures with output-only measurement data. This software utilises the aforementioned functionalities offered by the PyOMA python module. Therefore, PyOMA_GUI provides a remarkably user-friendly interface to improve the accessibility of the PyOMA module, ensuring widespread usage both for scientists, researchers, and even for applied civil and structural engineers. The main features PyOMA_GUI provides are listed below:

  • Importing data tab;
  • Definition of the geometry of the structure and the monitoring system (channels and degrees of freedom, DOFs);
  • Preprocessing of signals tool with detrending and decimation options;
  • Dynamic identification algorithms with visualization of the results (graphs, modal shapes);
  • Post-processing tabs and output exportation functionalities;

PyOMA_GUI general overview.

The executable file PyOMA_GUI.exe for windows is already available here.

A short manual to guide the user into an introductory example is available here.

Acknowledgements

The developers acknowledge the meaningful contribution of Professor Rocco Alaggio from Università degli Studi dell'Aquila, who encouraged the authors to study and develop these topics. Furthermore, the developers acknowledge the meaningful contribution of Professor Giuseppe Carlo Marano from Politecnico di Torino for promoting the Graphical User Interface programming and coordinating the team activities.

How to contact us

If you have any issue, please feel free to contact us at our official e-mail address:

[email protected]

How to cite

If you use this code, please don't forget to cite this work:

Dag Pasquale Pasca, Angelo Aloisio, Marco Martino Rosso et al., PyOMA and PyOMA_GUI: A Python module and software for Operational Modal Analysis. SoftwareX (2022) 101216, https://doi.org/10.1016/j.softx.2022.101216.

pyoma's People

Contributors

lollix91 avatar dagghe avatar marco-rosso-m avatar stsotirop avatar artiste-diseg-polito avatar ckesanapalli avatar

Stargazers

Manuel Barbagelata avatar Qun Yang avatar  avatar  avatar Ahmet Anil Dindar avatar  avatar rishabchoubey_ avatar Jeffrey Cheng avatar  avatar  avatar shzzhong avatar Deniz Ertuncay avatar Thijs Willems avatar  avatar Steven Doyle avatar Xuewen Yu avatar Jerry Chang avatar Gabriele Granello avatar  avatar Gunnstein T. Frøseth avatar Benjamin Maier avatar  avatar Rosario Sapienza avatar Cristian V. Miculaș avatar  avatar Dominik Strutz avatar  avatar  avatar Yang Zhang avatar Marko Radišić avatar Rodri avatar Fincato Saverio avatar Prateek Bhustali avatar  avatar Simone avatar Arturo Vargas avatar  avatar Guillermo Montero avatar Kamer Özdemir avatar  avatar Emanuel Tomé avatar  avatar Ahmet Furkan UGUR avatar  avatar Massimiliano avatar  avatar

Watchers

 avatar  avatar  avatar  avatar Massimiliano avatar  avatar  avatar AndBro avatar  avatar

pyoma's Issues

mode shapes acquired through cov-SSI

Hi there,
First of all thanks for this great package. I've been having trouble acquiring the correct mode shapes using cov-SSI. I received the correct results when I substituted the lines 550-557 with these:

    class auxclass(np.ndarray):
        """
        Create a simple class to improve code readability
        """
       
        def __new__(cls, np_array):

            return np.asarray(np_array).view(cls)
        
    N = ndat-2*br+1
    r = l = nch
    i = br

    Ypref = np.zeros((r*i,N))
    Yf    = np.zeros((l*i,N))
        
    for k in range(i):
        Ypref[k*r:k*r+r,:] = Yy[:r,k:k+N]
        Yf   [k*l:k*l+l,:] = Yy[: ,k+i:k+i+N]
        
    Ypref = Ypref/N**0.5
    Yf    = Yf   /N**0.5
    
    # Assembling the Toepliz matrix    
    Tb   = auxclass(Yf @ Ypref.T)

Could you please look into this?

Best regards,

select a folder

error: "please select another folder" although I select an empty folder.

Wrong value for the Order data from SSIdatStaDiag

Output of the PyOMA.SSIdatStaDiag funtion gives mathplotlib figure, and dictionary on the second place.

When the data from the dictionary is called, specifically the Order values, values are the half value of the correct ones. Accessing to the Order values is done with ssiDat[1]['All Poles']['Order'] (ssiDat is output of the previously mentioned function). It's the same also with Reduced Poles item.

PyOMA_GUI.exe WIN7 errors

Hello,

i have recently stumbled upon your project, which i find extremely interesting and decided to download the PyOMA_GUI.exe. I am getting the following error on Windows7 :
Error loading Python DLL ..._MEI150322\python310.dll
"FormatMessageW: Parameter is incorrect."
"LoadLibrary>PyInstaller:FormatMessageW failed."

How should i proceed to resolve this issue?

Thank you in advance,
Best regards.

Issues with PyOMA_v15

Dear @marco-rosso-m and @dagghe
Please, would you kindly update Example_ver_1.4 to 1.5. It does not work with the current version of the Frequency Domain Decomposition algorithms. Another issue that I've encountered was the cm argument in EFDDmodEX function. How should we use it? Also, at the end of the PyOMA_v15 code, we have:

Fi = np.array(Fi_E)
Results['Mode Shapes'] = Fi.T

whereas no Fi_E variable is defined!! we have Fi_E = [] in the script!
I really appreciate fixing these issues with the PyOMA file. Keep up the good work.

Best regards,
Ayubirad

Exdata() func

I am interested in the exdata() func of your code. Can you please give me some references (any kind of book or paper you followed) for how the state space representation can be solved for structural responses?

Error in EFDDmodEX

Hi there, I want to thank you for this great contribution. I've sent the problem I encountered using EFDD. As you can see I've used the provided example file. It seems the problem lies in the calculation of the Singular Vectors:

  File "c:\...\pyoma-master\example\example.py", line 57, in <module>
    Res_EFDD = oma.EFDDmodEX(FreQ, FDD[1], method='EFDD')

  File "C:\...\PyOMA-master\Example\pyOMA.py", line 1149, in EFDDmodEX
    meanFi = meanFi/meanFi[_idx6]

IndexError: invalid index to scalar variable.

PyOMA GUI Win11

Hello,

i am on windows 11, downloaded the latest version and tested the example. I cannot see responsiveness from the manual
interaction to input the Channel names and assign them to the corresponding nodes. Is there a middle passage i am missing?

some suggestions

Hi there,
If at all feasible, please consider the following suggestions for improving this brilliant package:

  1. The frequency domain procedures, all require the peak-picking means. Why not automate this procedure?
  2. Could you also add another optional method for calculating damping in EFDD? like by fitting an exponential function to the relative maxima of the recorded decay.
  3. A normalized averaged power spectral density (PSD) overlay on the stability diagram in the SSI procedures would make the choice of selecting the right frequencies rather easier, don't you think so?
  4. Is it possible to add some indicators like mode complexity factor (MCF) to help the user in selecting the physical modes? This value will be between 0 (Real Mode) and 1 (Imaginary Mode). Therefore, for a real mode complexity should always be close to 0.

Best regards,

no module error

If I use the example with Python 3.8.8, there comes: ModuleNotFoundError: No module named 'pyOMA'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.