Structuring and analytics of EMG data from MYO armbands. Work by IAESTE intern Markus Hoff Skudal, summer 2021.
Go to file
Skudalen 59dd1b8138 chore: run plot funcs and store plot, log,
and results in log-folder
2021-07-28 15:46:14 +02:00
__pycache__ chore: run plot funcs and store plot, log, 2021-07-28 15:46:14 +02:00
.idea fix: try to implement the NN correctly 2021-07-05 12:43:45 +02:00
.vscode chore: improve code quality 2021-07-06 16:33:35 +02:00
.DS_Store chore: run plot funcs and store plot, log, 2021-07-28 15:46:14 +02:00
.gitignore feat: add func to store predictions from test sets in csv 2021-07-14 17:36:00 +02:00
Handle_emg_data.py chore: run plot funcs and store plot, log, 2021-07-28 15:46:14 +02:00
mfcc_data_hard.json feat: save mfcc_data_hard and make a comparison 2021-07-20 15:02:57 +02:00
mfcc_data_soft.json feat: save mfcc_data_hard and make a comparison 2021-07-20 15:02:57 +02:00
mfcc_data.json fix: fix index bug in save mfcc to json 2021-07-09 17:19:56 +02:00
Neural_Network_Analysis.py chore: run plot funcs and store plot, log, 2021-07-28 15:46:14 +02:00
Present_data.py chore: run plot funcs and store plot, log, 2021-07-28 15:46:14 +02:00
README.md feat: save mfcc_data_hard and make a comparison 2021-07-20 15:02:57 +02:00
Signal_prep.py fix: change to right naming conventions 2021-07-02 10:26:05 +02:00
test_console_log.txt chore: run plot funcs and store plot, log, 2021-07-28 15:46:14 +02:00
Test_functions.py chore: moved presenting functions to Present_data.py 2021-06-25 16:09:51 +02:00

Analysis of Keystroke EMG data for identification

EMG data handling and Neural Network analysis

Scripts to handle CSV files composed by 2 * 8 EMG sensors(left & right) devided into sessions per subject. The raw data is organised in a CSV_handler object with Handle_emg_data.py. Processing of data can take the further form of:

  • Preprocessing with Signal_prep.py - FFT, MFCC, Wavelet db4
  • Storage for Neural Network analysis with NN_handler(Handle_emg_data.py) - combined EMG DataFrame, combined MFCCs DataFrame
  • Neural Network analysis in Neural_Network_Analysis.py - LSTM NN, etc.

Technologies used

  • Common libs: Numpy, Pandas, Pathlib, Sklearn, Scipy, Matplotlib, Tensorflow, Keras
  • Community libs: Python_speech_features, Pywt

Challanges in the module

  • The CSV handlig requires a specific file structure. Se "How to use it"
  • Preprocessing is still limited in Signal_prep.py

Credits for insporational code

  • Kapre: Keunwoochoi
  • Audio-Classification: seth814
  • DeepLearningForAudioWithPyhton: musikalkemist

Table of Contents

File and classes Description and help functions
Handle_emg_data.py:

* Data_container
* CSV_handler
* NN_handler
Handles, manipulates, and stores data for analysis.

* Data_container is a class that describes the data for each subject in the experiment.
* CSV_handler takes data from CSV files and places it in Data_container for each subject.
Use load_data() to load csv data into data containers and add the containers to the
CSV_handler's 'data_container_dict', indexed by subject number. Use get_data() to retrieve
specific data.
* NN_handler prepares data for further analysis in Neural Networks. This class has storage
for this data and/or can save it to a json file.
Signal_prep.py Does mapping to data and contains various functions. Among others, this contains wavelet,
MFCC, cepstrum and normalization.
Present_data.py Contains plot and case functions. Case functions combines many elements from the code and
presents some results described.
Neural_Network_Analysis.py Contains functions to load, build and execute analysis with Neural Networks. Main functions are
load_data_from_json(), build_model(), and main()

How to use it

  1. Clone the repo
  2. Place the data files in the working directory
  3. Place the data files within the data-folder (format: /data/<datatype>/<subject-folder+ID>/<session-folder>/<left/right-CSV-files>)
  4. Assuming NN analysis:
    1. Create a CSV_handler object
    2. Load data with load_data(CSV_handler, <datatype>)
    3. Create NN_handler object with CSV_handler as input
    4. Load MFCC data into the NN_handler with store_mfcc_samples()
    5. Run save_json_mfcc() to save samples in json
    6. Run Neural_Network_Analysis.py with desired config