diff --git a/wetb/fatigue_tools/fatigue.py b/wetb/fatigue_tools/fatigue.py index 0aa87132fd3e5474d2cfda7b60c38fd8378ce0dd..85625df0f793e1c6254627bd8ef293c38b7f0f75 100644 --- a/wetb/fatigue_tools/fatigue.py +++ b/wetb/fatigue_tools/fatigue.py @@ -19,6 +19,7 @@ from __future__ import print_function from __future__ import unicode_literals from __future__ import absolute_import from future import standard_library +import warnings standard_library.install_aliases() import numpy as np from wetb.fatigue_tools.rainflowcounting import rainflowcount @@ -156,11 +157,12 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win if isinstance(ampl_bins, int): ampl_bins = np.linspace(0, 1, num=ampl_bins + 1) * ampls[weights>0].max() cycles, ampl_edges, mean_edges = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights) - - ampl_bin_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * ampls)[0] - ampl_bin_mean = np.nanmean(ampl_bin_sum / np.where(cycles,cycles,np.nan),1) - mean_bin_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * means)[0] - mean_bin_mean = np.nanmean(mean_bin_sum / np.where(cycles, cycles, np.nan), 1) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + ampl_bin_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * ampls)[0] + ampl_bin_mean = np.nanmean(ampl_bin_sum / np.where(cycles,cycles,np.nan),1) + mean_bin_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * means)[0] + mean_bin_mean = np.nanmean(mean_bin_sum / np.where(cycles, cycles, np.nan), 1) cycles = cycles / 2 # to get full cycles return cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges diff --git a/wetb/fatigue_tools/rainflowcounting/rainflowcount.py b/wetb/fatigue_tools/rainflowcounting/rainflowcount.py index bac7c262bbe9582c28961aaabea600b9fd6d9d6b..146cf9c07356b72fdc179ce6b0fb01997c247aa6 100644 --- a/wetb/fatigue_tools/rainflowcounting/rainflowcount.py +++ b/wetb/fatigue_tools/rainflowcounting/rainflowcount.py @@ -64,7 +64,8 @@ def rainflow_windap(signal, levels=255., thresshold=(255 / 50)): check_signal(signal) #type <double> is required by <find_extreme> and <rainflow> signal = signal.astype(np.double) - + if np.all(np.isnan(signal)): + return None offset = np.nanmin(signal) signal -= offset if np.nanmax(signal) > 0: