Skip to content
Snippets Groups Projects
Commit 5aa40ce1 authored by Mads M. Pedersen's avatar Mads M. Pedersen
Browse files

small updates

parent f3a49064
No related branches found
No related tags found
No related merge requests found
...@@ -14,13 +14,11 @@ or ...@@ -14,13 +14,11 @@ or
- 'rainflow_astm' (based on the c-implementation by Adam Nieslony found at the MATLAB Central File Exchange - 'rainflow_astm' (based on the c-implementation by Adam Nieslony found at the MATLAB Central File Exchange
http://www.mathworks.com/matlabcentral/fileexchange/3026) http://www.mathworks.com/matlabcentral/fileexchange/3026)
''' '''
from __future__ import absolute_import
from __future__ import division from __future__ import division
from __future__ import print_function from __future__ import print_function
from __future__ import unicode_literals from __future__ import unicode_literals
from __future__ import absolute_import
from future import standard_library from future import standard_library
standard_library.install_aliases() standard_library.install_aliases()
import numpy as np import numpy as np
from wetb.fatigue_tools.rainflowcounting import rainflowcount from wetb.fatigue_tools.rainflowcounting import rainflowcount
...@@ -96,7 +94,7 @@ def eq_load_and_cycles(signals, no_bins=46, m=[3, 4, 6, 8, 10, 12], neq=[10 ** 6 ...@@ -96,7 +94,7 @@ def eq_load_and_cycles(signals, no_bins=46, m=[3, 4, 6, 8, 10, 12], neq=[10 ** 6
eq_loads : array-like eq_loads : array-like
List of lists of equivalent loads for the corresponding equivalent number(s) and Wohler exponents List of lists of equivalent loads for the corresponding equivalent number(s) and Wohler exponents
cycles : array_like cycles : array_like
2d array with shape = (no_ampl_bins, no_mean_bins) 2d array with shape = (no_ampl_bins, 1)
ampl_bin_mean : array_like ampl_bin_mean : array_like
mean amplitude of the bins mean amplitude of the bins
ampl_bin_edges ampl_bin_edges
...@@ -106,8 +104,7 @@ def eq_load_and_cycles(signals, no_bins=46, m=[3, 4, 6, 8, 10, 12], neq=[10 ** 6 ...@@ -106,8 +104,7 @@ def eq_load_and_cycles(signals, no_bins=46, m=[3, 4, 6, 8, 10, 12], neq=[10 ** 6
if 0: #to be similar to windap if 0: #to be similar to windap
ampl_bin_mean = (ampl_bin_edges[:-1] + ampl_bin_edges[1:]) / 2 ampl_bin_mean = (ampl_bin_edges[:-1] + ampl_bin_edges[1:]) / 2
cycles, ampl_bin_mean = cycles.flatten(), ampl_bin_mean.flatten() cycles, ampl_bin_mean = cycles.flatten(), ampl_bin_mean.flatten()
mask = cycles>0 eq_loads = [[((np.nansum(cycles * ampl_bin_mean ** _m) / _neq) ** (1. / _m)) for _m in np.atleast_1d(m)] for _neq in np.atleast_1d(neq)]
eq_loads = [[((np.sum(cycles[mask] * ampl_bin_mean[mask] ** _m) / _neq) ** (1. / _m)) for _m in np.atleast_1d(m)] for _neq in np.atleast_1d(neq)]
return eq_loads, cycles, ampl_bin_mean, ampl_bin_edges return eq_loads, cycles, ampl_bin_mean, ampl_bin_edges
...@@ -150,8 +147,7 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win ...@@ -150,8 +147,7 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win
>>> cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges = cycle_matrix(signal) >>> cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges = cycle_matrix(signal)
>>> cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges = cycle_matrix([(.4, signal), (.6,signal)]) >>> cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges = cycle_matrix([(.4, signal), (.6,signal)])
""" """
if len(signals)==0:
print ("here")
if isinstance(signals[0], tuple): if isinstance(signals[0], tuple):
weights, ampls, means = np.array([(np.zeros_like(ampl)+weight,ampl,mean) for weight, signal in signals for ampl,mean in rainflow_func(signal[:]).T], dtype=np.float64).T weights, ampls, means = np.array([(np.zeros_like(ampl)+weight,ampl,mean) for weight, signal in signals for ampl,mean in rainflow_func(signal[:]).T], dtype=np.float64).T
else: else:
...@@ -162,12 +158,9 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win ...@@ -162,12 +158,9 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win
cycles, ampl_edges, mean_edges = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights) 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_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_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * means)[0]
import warnings mean_bin_mean = np.nanmean(mean_bin_sum / np.where(cycles, cycles, np.nan), 1)
with warnings.catch_warnings():
warnings.simplefilter("ignore", category=RuntimeWarning)
ampl_bin_mean = np.nanmean(ampl_bin_sum / np.where(cycles,cycles,np.nan),1)
mean_bin_mean = np.nanmean(mean_bin_sum / np.where(cycles, cycles, np.nan), 1)
cycles = cycles / 2 # to get full cycles cycles = cycles / 2 # to get full cycles
return cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges return cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges
......
...@@ -3,7 +3,8 @@ d = None ...@@ -3,7 +3,8 @@ d = None
d = dir() d = dir()
from .interpolation import interpolate from .interpolation import interpolate
from .fit import *
from .fix import *
__all__ = [m for m in set(dir()) - set(d)] __all__ = [m for m in set(dir()) - set(d)]
......
...@@ -33,8 +33,8 @@ def thresshold_finder(data, thresshold, plt=None): ...@@ -33,8 +33,8 @@ def thresshold_finder(data, thresshold, plt=None):
def univeral_thresshold_finder(data, variation='mad', plt=None): def univeral_thresshold_finder(data, variation='mad', plt=None):
## Three variation measures in decreasing order of sensitivity to outliers ## Three variation measures in decreasing order of sensitivity to outliers
variation = {'std': np.sqrt(np.mean((data - np.mean(data)) ** 2)), # standard deviation variation = {'std': np.nanstd(data), # standard deviation
'abs': np.mean(np.abs(data - np.mean(data))), # mean abs deviation 'abs': np.nanmean(np.abs(data - np.nanmean(data))), # mean abs deviation
'mad': nanmedian(np.abs(data - nanmedian(data))) # median abs deviation (mad) 'mad': nanmedian(np.abs(data - nanmedian(data))) # median abs deviation (mad)
}.get(variation, variation) }.get(variation, variation)
......
from .turbulence import * from .turbulence import *
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment