Sign up ladisk / pyuff Public Notifications Star 35 Fork 28 Code Issues 4 Pull requests Actions Projects Wiki Security Insights master Go to file Code Latest commit Git stats 138 Files Type data docs pyuff tests .gitignore .travis.yml LICENSE README.rst pyuff_Showcase.ipynb requirements.txt setup.py README.rst pyuff Universal File Format read and write This module defines an UFF class to manipulate with the UFF (Universal File Format) files. Read from and write of data-set types 15, 55, 58, 58b, 82, 151, 164, 2411, 2412, 2414, 2420 are supported. Check out the documentation. To install the package, run: pip install pyuff Showcase To analyse UFF file we first load the uff module and example file: import pyuff uff_file = pyuff.UFF('data/beam.uff') To check which datasets are written in the file use: uff_file.get_set_types() Reading from the UFF file To load all datasets from the UFF file to data object use: data = uff_file.read_sets() The first dataset 58 contains following keys: data[4].keys() Most important keys are x: x-axis and data: y-axis that define the stored response: plt.semilogy(data[4]['x'], np.abs(data[4]['data'])) plt.xlabel('Frequency [Hz]') plt.ylabel('FRF Magnitude [dB m/N]') plt.xlim([0,1000]) plt.show() Writing measurement data to UFF file Loading the accelerance data: measurement_point_1 = np.genfromtxt('data/meas_point_1.txt', dtype=complex) measurement_point_2 = np.genfromtxt('data/meas_point_2.txt', dtype=complex) measurement_point_3 = np.genfromtxt('data/meas_point_3.txt', dtype=complex) measurement_point_1[0] = np.nan*(1+1.j) measurement = [measurement_point_1, measurement_point_2, measurement_point_3] Creating the UFF file where we add dataset 58 for measurement consisting of the dictionary-like keys containing the measurement data and the information about the measurement: for i in range(3): print('Adding point {:}'.format(i + 1)) response_node = 1 response_direction = 1 reference_node = i + 1 reference_direction = 1 acceleration_complex = measurement[i] frequency = np.arange(0, 1001) name = 'TestCase' data = {'type':58, 'func_type': 4, 'rsp_node': response_node, 'rsp_dir': response_direction, 'ref_dir': reference_direction, 'ref_node': reference_node, 'data': acceleration_complex, 'x': frequency, 'id1': 'id1', 'rsp_ent_name': name, 'ref_ent_name': name, 'abscissa_spacing':1, 'abscissa_spec_data_type':18, 'ordinate_spec_data_type':12, 'orddenom_spec_data_type':13} uffwrite = pyuff.UFF('./data/measurement.uff') uffwrite.write_set(data,'add') Or we can use support function prepare_58 to prepare the dictionary for creating the UFF file. Functions for other datasets can be found in supported datasets. for i in range(3): print('Adding point {:}'.format(i + 1)) response_node = 1 response_direction = 1 reference_node = i + 1 reference_direction = 1 acceleration_complex = measurement[i] frequency = np.arange(0, 1001) name = 'TestCase' pyuff.prepare_58(func_type=4, rsp_node=response_node, rsp_dir=response_direction, ref_dir=reference_direction, ref_node=reference_node, data=acceleration_complex, x=frequency, id1='id1', rsp_ent_name=name, ref_ent_name=name, abscissa_spacing=1, abscissa_spec_data_type=18, ordinate_spec_data_type=12, orddenom_spec_data_type=13) to test the pyuff Showcase.ipynb online. About This module defines an UFF class to manipulate with the UFF (Universal File Format) files. Resources Readme License View license Releases No releases published Packages No packages published Contributors 10 Languages Python 57.2% Jupyter Notebook 42.8% © 2021 GitHub, Inc. Terms Privacy Security Status Docs Contact GitHub Pricing API Training Blog About