fix: add minor changes

This commit is contained in:
Skudalen 2021-06-28 09:59:01 +02:00
parent f1ba1e93a8
commit e7087b04c7
9 changed files with 60 additions and 24 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
Exp20201205_2myo_hard** Exp20201205_2myo_hard**
Exp20201205_2myo_soft** Exp20201205_2myo_soft**
Documents Documents
python_speech_features

View File

@ -9,20 +9,20 @@ def plot_df(df:DataFrame):
plt.show() plt.show()
# Plots ndarrays after transformations # Plots ndarrays after transformations
def plot_arrays(N, y): def plot_arrays(N, N_name, y, y_name):
plt.plot(N, np.abs(y)) plt.plot(N, np.abs(y))
plt.show() plt.show()
def plot_compare_two_df(df_old, df_new): def plot_compare_two_df(df_old, old_name, df_new, new_name):
x = get_xory_from_df('x', df_old) x = get_xory_from_df('x', df_old)
y1 = get_xory_from_df('y', df_old) y1 = get_xory_from_df('y', df_old)
y2 = get_xory_from_df('y', df_new) y2 = get_xory_from_df('y', df_new)
figure, axis = plt.subplots(1, 2) figure, axis = plt.subplots(1, 2)
axis[0].plot(x, y1) axis[0].plot(x, y1)
axis[0].set_title('Original data') axis[0].set_title(old_name)
axis[1].plot(x, y2) axis[1].plot(x, y2)
axis[1].set_title('Analyzed data') axis[1].set_title(new_name)
plt.show() plt.show()
@ -46,6 +46,19 @@ def get_data(csv_handler:CSV_handler, subject_nr, which_arm, session, emg_nr):
data_frame = csv_handler.get_df_from_data_dict(subject_nr, which_arm, session, emg_nr) data_frame = csv_handler.get_df_from_data_dict(subject_nr, which_arm, session, emg_nr)
return data_frame return data_frame
#Takes in handler and detailes to denoise. Returns arrays and df
def denoice_dataset(handler:Handler.CSV_handler, subject_nr, which_arm, round, emg_nr):
df = handler.get_df_from_data_dict(subject_nr, which_arm, round, emg_nr)
N = get_xory_from_df('x', df)
N_trans, cA, cD = wavelet_db4(df)
cA_filt, cD_filt = soft_threshold_filter(cA, cD)
y_values = inverse_wavelet(df, cA_filt, cD_filt)
df_new = Handler.make_df_from_xandy(N, y_values, emg_nr)
return df_new
# MAIN: # MAIN:
@ -55,13 +68,13 @@ def main():
load_data(csv_handler, 'hard') load_data(csv_handler, 'hard')
data_frame = get_data(csv_handler, 1, 'left', 1, 1) data_frame = get_data(csv_handler, 1, 'left', 1, 1)
N_trans, cA, cD = wavelet_db4_denoising(data_frame) N_trans, cA, cD = wavelet_db4(data_frame)
data_frame_freq = make_df_from_xandy(N_trans, cA, 1) data_frame_freq = make_df_from_xandy(N_trans, cA, 1)
cA_filt, cD_filt = soft_threshold_filter(cA, cD, 0.6) cA_filt, cD_filt = soft_threshold_filter(cA, cD)
data_frame_freq_filt = make_df_from_xandy(N_trans, cA_filt, 1) data_frame_freq_filt = make_df_from_xandy(N_trans, cD_filt, 1)
plot_compare_two_df(data_frame_freq, data_frame_freq_filt) plot_compare_two_df(data_frame_freq, 'Original data', data_frame_freq_filt, 'Analyzed data')
return None return None

View File

@ -4,6 +4,7 @@ import pandas
from pandas.core.frame import DataFrame from pandas.core.frame import DataFrame
from scipy.fft import fft, fftfreq from scipy.fft import fft, fftfreq
import pywt import pywt
import pyhton_speech_features as psf
#from scipy.signal import wavelets #from scipy.signal import wavelets
#import pyyawt #import pyyawt
@ -35,7 +36,7 @@ def fft_of_df(df:DataFrame):
return N_trans, y_f return N_trans, y_f
# Removes noise with db4 wavelet function # Removes noise with db4 wavelet function
def wavelet_db4_denoising(df:DataFrame): def wavelet_db4(df:DataFrame):
y_values = get_xory_from_df('y', df) y_values = get_xory_from_df('y', df)
#y_values = normalize_wave(y_values) #y_values = normalize_wave(y_values)
wavelet = pywt.Wavelet('db4') wavelet = pywt.Wavelet('db4')
@ -51,10 +52,10 @@ def sure_threshold_filter(cA, cD):
return cA_filt, cD_filt return cA_filt, cD_filt
''' '''
# soft filtering of wavelet trans with the 40% lowest removed # soft filtering of wavelet trans with the a 1/2 std filter
def soft_threshold_filter(cA, cD, threshold): def soft_threshold_filter(cA, cD):
cA_filt = pywt.threshold(cA, threshold * cA.max()) cA_filt = pywt.threshold(cA, np.std(cA)/2)
cD_filt = cD cD_filt = pywt.threshold(cD, np.std(cD)/2)
return cA_filt, cD_filt return cA_filt, cD_filt
# Inverse dwt for brining denoise signal back to the time domainfi # Inverse dwt for brining denoise signal back to the time domainfi
@ -70,16 +71,16 @@ def inverse_wavelet(df, cA_filt, cD_filt):
old_len = len(get_xory_from_df('y', df)) old_len = len(get_xory_from_df('y', df))
return y_new_values return y_new_values
# Takes in handler and detailes to denoise. Returns arrays and df def cepstrum(df:DataFrame):
def denoice_dataset(handler:Handler.CSV_handler, subject_nr, which_arm, round, emg_nr, threshold):
df = handler.get_df_from_data_dict(subject_nr, which_arm, round, emg_nr)
N = get_xory_from_df('x', df) N = get_xory_from_df('x', df)
N_trans, cA, cD = wavelet_db4_denoising(df) y = get_xory_from_df('y', df)
cA_filt, cD_filt = soft_threshold_filter(cA, cD, threshold)
y_values = inverse_wavelet(df, cA_filt, cD_filt)
return None
df_new = Handler.make_df_from_xandy(N, y_values, emg_nr)
return df_new
'''
def mfcc(df:DataFrame):
N = get_xory_from_df('x', df)
y = get_xory_from_df('y', df)
spf.mfcc(y, )
'''

View File

@ -0,0 +1,10 @@
Metadata-Version: 1.0
Name: python-speech-features
Version: 0.6.1
Summary: Python Speech Feature extraction
Home-page: https://github.com/jameslyons/python_speech_features
Author: James Lyons
Author-email: james.lyons0@gmail.com
License: MIT
Description: UNKNOWN
Platform: UNKNOWN

View File

@ -0,0 +1,7 @@
python_speech_features/example.py
python_speech_features/setup.py
python_speech_features.egg-info/PKG-INFO
python_speech_features.egg-info/SOURCES.txt
python_speech_features.egg-info/dependency_links.txt
python_speech_features.egg-info/requires.txt
python_speech_features.egg-info/top_level.txt

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,2 @@
numpy
scipy

View File

@ -0,0 +1 @@
python_speech_features