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

bug fix in bin_fit + import optimization

parent b0ecd90d
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ Created on 13/07/2016
@author: MMPE
'''
import numpy as np
from wetb.signal.filters import replacer, frq_filters
from wetb.signal.filters import replacer
replace_by_nan = replacer.replace_by_nan
......@@ -62,7 +62,8 @@ def despike(data, spike_length, spike_finder=univeral_thresshold_finder, spike_r
if plt:
plt.plot(data, label='Input')
data = np.array(data).copy()
lp_data = low_pass(data, spike_length, 1)
from wetb.signal.filters import frq_filters
lp_data = frq_filters.low_pass(data, spike_length, 1)
hp_data = data - lp_data
hp_data = frq_filters.high_pass(data, spike_length*4, 1, order=2)
#spike_length, sample_frq/2, 1, order=1)
......
......@@ -4,13 +4,16 @@ Created on 10/01/2015
@author: mmpe
'''
import numpy as np
from wetb.signal.filters import cy_filters
def low_pass(input, delta_t, tau, method=1):
from wetb.signal.filters import cy_filters
if isinstance(tau, (int, float)):
return cy_filters.cy_low_pass_filter(input.astype(np.float64), delta_t, tau)
else:
return cy_filters.cy_dynamic_low_pass_filter(input.astype(np.float64), delta_t, tau, method)
def high_pass(input, delta_t, tau):
from wetb.signal.filters import cy_filters
return cy_filters.cy_high_pass_filter(input.astype(np.float64), delta_t, tau)
......@@ -77,7 +77,7 @@ def bin_fit(x,y, bins=10, kind='linear', bin_func=np.nanmean, bin_min_count=3, l
lower, upper = lower_upper
#Add value to min(x)
if bin_x_fit[0] > np.nanmin(x):
if bin_x_fit[0] > np.nanmin(x) or np.isnan(bin_y_fit[0]):
if lower =='extrapolate':
bin_y_fit = np.r_[bin_y_fit[0] - (bin_x_fit[0] - np.nanmin(x)) * (bin_y_fit[1] - bin_y_fit[0]) / (bin_x_fit[1] - bin_x_fit[0]), bin_y_fit]
......@@ -91,7 +91,7 @@ def bin_fit(x,y, bins=10, kind='linear', bin_func=np.nanmean, bin_min_count=3, l
raise NotImplementedError("Argument for handling lower observations, %s, not implemented"%lower)
#add value to max(x)
if bin_x_fit[-1] < np.nanmax(x):
if bin_x_fit[-1] < np.nanmax(x) or np.isnan(bin_y_fit[-1]):
if upper == 'extrapolate':
bin_y_fit = np.r_[bin_y_fit, bin_y_fit[-1] + (np.nanmax(x) - bin_x_fit[-1]) * (bin_y_fit[-1] - bin_y_fit[-2]) / (bin_x_fit[-1] - bin_x_fit[-2]) ]
bin_x_fit = np.r_[bin_x_fit, np.nanmax(x)]
......@@ -194,6 +194,7 @@ def _interpolate_fit(bin_x_fit, bin_y_fit, kind='linear'):
x = x[:].copy().astype(np.float)
x[x<bin_x_fit[0]] = np.nan
x[x>bin_x_fit[-1]] = np.nan
return interp1d(bin_x_fit, bin_y_fit, kind)(x[:])
m = ~(np.isnan(bin_x_fit)|np.isnan(bin_y_fit))
return interp1d(bin_x_fit[m], bin_y_fit[m], kind)(x[:])
return fit
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