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 pywt
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from joblib import Parallel, delayed
from scipy.fft import fft, fftfreq from scipy.fft import fft, fftfreq
from scipy.signal import find_peaks, hilbert, butter, filtfilt, correlate, sosfiltfilt 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 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) output = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
res.append({ return {
'mode': mod, 'mode': mod,
'freq': output['freq_e'], 'freq': output['freq_e'],
'phase': output['phase'], 'phase': output['phase'],
'delay': output['delay'] 'delay': output['delay']
}) }
return pd.DataFrame(res)
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): 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]}) 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): 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') freq = df[df['mode'] == mod].get('freq')
phase = df[df['mode'] == mod].get('phase') phase = df[df['mode'] == mod].get('phase')
delay = df[df['mode'] == mod].get('delay') delay = df[df['mode'] == mod].get('delay')