From 5aa40ce1fc882fab16b15a4022e4ecf30bcc4f9c Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Mon, 22 May 2017 14:05:04 +0200
Subject: [PATCH] small updates

---
 wetb/fatigue_tools/fatigue.py   | 19 ++++++-------------
 wetb/signal/__init__.py         |  3 ++-
 wetb/signal/filters/_despike.py |  4 ++--
 wetb/wind/__init__.py           |  2 +-
 4 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/wetb/fatigue_tools/fatigue.py b/wetb/fatigue_tools/fatigue.py
index e98aaf7..0aa8713 100644
--- a/wetb/fatigue_tools/fatigue.py
+++ b/wetb/fatigue_tools/fatigue.py
@@ -14,13 +14,11 @@ or
 - 'rainflow_astm' (based on the c-implementation by Adam Nieslony found at the MATLAB Central File Exchange
                    http://www.mathworks.com/matlabcentral/fileexchange/3026)
 '''
-from __future__ import absolute_import
 from __future__ import division
 from __future__ import print_function
 from __future__ import unicode_literals
-
+from __future__ import absolute_import
 from future import standard_library
-
 standard_library.install_aliases()
 import numpy as np
 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
     eq_loads : array-like
         List of lists of equivalent loads for the corresponding equivalent number(s) and Wohler exponents
     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
         mean amplitude of the bins
     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
     if 0:  #to be similar to windap
         ampl_bin_mean = (ampl_bin_edges[:-1] + ampl_bin_edges[1:]) / 2
     cycles, ampl_bin_mean = cycles.flatten(), ampl_bin_mean.flatten()
-    mask = cycles>0
-    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)]
+    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)]
     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
     >>> 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)])
     """
-    if len(signals)==0:
-        print ("here")
+
     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
     else:
@@ -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)
 
     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]
-    import warnings
-    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)
+    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/signal/__init__.py b/wetb/signal/__init__.py
index 42d8da6..57d5e28 100644
--- a/wetb/signal/__init__.py
+++ b/wetb/signal/__init__.py
@@ -3,7 +3,8 @@ d = None
 d = dir()
 
 from .interpolation import interpolate
-
+from .fit import *
+from .fix import *
 
 __all__ = [m for m in set(dir()) - set(d)]
 
diff --git a/wetb/signal/filters/_despike.py b/wetb/signal/filters/_despike.py
index bdeb845..0a23195 100644
--- a/wetb/signal/filters/_despike.py
+++ b/wetb/signal/filters/_despike.py
@@ -33,8 +33,8 @@ def thresshold_finder(data, thresshold, plt=None):
 def univeral_thresshold_finder(data, variation='mad', plt=None):
 
     ## Three variation measures in decreasing order of sensitivity to outliers
-    variation = {'std': np.sqrt(np.mean((data - np.mean(data)) ** 2)),  # standard deviation
-                 'abs': np.mean(np.abs(data - np.mean(data))),  # mean abs deviation
+    variation = {'std': np.nanstd(data),  # standard deviation
+                 'abs': np.nanmean(np.abs(data - np.nanmean(data))),  # mean abs deviation
                  'mad': nanmedian(np.abs(data - nanmedian(data)))  # median abs deviation (mad)
                  }.get(variation, variation)
 
diff --git a/wetb/wind/__init__.py b/wetb/wind/__init__.py
index ae17e9a..36e41c9 100644
--- a/wetb/wind/__init__.py
+++ b/wetb/wind/__init__.py
@@ -1 +1 @@
-from .turbulence import *
\ No newline at end of file
+from .turbulence import *
-- 
GitLab