This commit is contained in:
François Boulogne 2026-01-06 13:53:24 +01:00
parent 05ac337061
commit d8f447005e
2 changed files with 30 additions and 14 deletions

View file

@ -1 +1 @@
__version__ = '0.1.27'
__version__ = '0.1.28'

View file

@ -4,7 +4,7 @@ import pandas as pd
import pywt
import matplotlib.pyplot as plt
from joblib import Parallel, delayed
from scipy.fft import fft, fftfreq
from scipy.signal import find_peaks, hilbert, butter, filtfilt, correlate, sosfiltfilt
@ -578,20 +578,38 @@ def analyze_signal_wavelet(time, e_signal, s_signal, freq_rtol=0.01):
return res
def get_phases(e_time, e_filtered, e_frequencies, s_filtered, n_modes, callback=analyze_signal_wavelet):
def get_phases(e_time, e_filtered, s_filtered, n_modes, callback=analyze_signal_wavelet, n_jobs=-2):
"""
"""
res = []
for mod in range(n_modes):
def process_mode(mod, callback, e_time, e_filtered, s_filtered):
"""Fonction à exécuter en parallèle pour chaque mode"""
output = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
res.append({
'mode': mod,
'freq': output['freq_e'],
'phase': output['phase'],
'delay': output['delay']
})
return pd.DataFrame(res)
return {
'mode': mod,
'freq': output['freq_e'],
'phase': output['phase'],
'delay': output['delay']
}
results = Parallel(n_jobs=n_jobs)(
delayed(process_mode)(mod, callback, e_time, e_filtered, s_filtered)
for mod in range(n_modes)
)
return pd.DataFrame(results)
# res = []
#
# for mod in range(n_modes):
# output = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
# res.append({
# 'mode': mod,
# 'freq': output['freq_e'],
# 'phase': output['phase'],
# 'delay': output['delay']
# })
# return pd.DataFrame(res)
def plot_phases(e_time, e_filtered, e_frequencies, s_filtered, n_modes, df, output=None):
@ -601,8 +619,6 @@ def plot_phases(e_time, e_filtered, e_frequencies, s_filtered, n_modes, df, outp
fig, ax = plt.subplots(nrows=n_modes, ncols=2, figsize=(12, 2 * n_modes), gridspec_kw={'width_ratios': [3, 1]})
for mod in range(n_modes):
res = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
freq = df[df['mode'] == mod].get('freq')
phase = df[df['mode'] == mod].get('phase')
delay = df[df['mode'] == mod].get('delay')