Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'p_' + str(p) for p in percentiles_list]
- if iqr and 25 in percentiles_list and 75 in percentiles_list:
- names.append('iqr')
- if amplitude and 1 in percentiles_list and 99 in percentiles_list:
- names.append('perc_amp')
- if len(x) == 0:
- values = [0 for i in range(len(names))]
- return values, names
- if len(percentiles_list) > 0 and all([0 < q < 100 for q in percentiles_list]):
- values = list(np.percentile(x, percentiles_list))
- else:
- values = []
- if iqr:
- q1 = percentiles_list.index(25)
- q3 = percentiles_list.index(75)
- values.append(values[q3] - values[q1])
- if amplitude and 1 in percentiles_list and 99 in percentiles_list:
- q1 = percentiles_list.index(1)
- q3 = percentiles_list.index(99)
- values.append(values[q3] - values[q1])
- return values, names
- def stats_calculate_all(x):
- stats_all_names = ['len', 'min', 'max', 'range', 'mean', 'hmean', 'gmean', 'var', 'std', 'skew', 'kurtosis',
- 'median', 'mode', 'energy', 'energy_sample', 'snr']
- xnp = np.array(x)
- n = len(x)
- if n == 0:
- values = [0 for i in range(len(stats_all_names))]
- return values, stats_all_names
- values = []
- # vmin = float(min(xnp))
- # if vmin < 1:
- # offset = 1 + abs(vmin)
- # else:
- # offset = 0
- # vmax = float(max(xnp))
- # vrange = vmax - vmin
- vmean = float(np.mean(xnp))
- vstd = float(np.std(xnp))
- # venergy = float(sum(np.array(xnp) ** 2))
- # venergy_sample = venergy / n
- # snr = 0.0
- if vstd != 0:
- snr = vmean / vstd
- # values.append(vmin)
- # values.append(vmax)
- # values.append(vrange)
- values.append(vmean)
- # values.append(float(sp.hmean(xnp + offset)))
- # values.append(float(sp.gmean(xnp + offset)))
- # values.append(vstd ** 2)
- values.append(vstd)
- # values.append(sp.skew(xnp))
- #values.append(sp.kurtosis(xnp))
- values.append(np.median(xnp))
- # vmode = sp.mode(xnp)
- # vmode = float(vmode[0][0])
- # values.append(vmode)
- # values.append(venergy)
- # values.append(venergy_sample)
- # values.append(snr)
- return values, stats_all_names
- if __name__ == "__main__":
- x = np.array(X_data)
- w_long = input()
- w_short = input()
- shift = 20
- for i in range(max(w_long, w_short), len(X_data), 20):
- results = []
- for j in range(0, len(x[0, :])):
- s, stat_names = stats_calculate_all(x[i-w_short:i,j])
- s1, stat_names2 = stats_calculate_all(x[i - w_long:i, j])
- results.append([s1[0], s1[2], s1[1], s[0], s[2], s[1], s1[0]-s[0]])
- if s1[0] > s[0]:
- results.append(1)
- else:
- results.append(-1)
- print (i, ['%.2f'% elem for elem in results])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement