Skip to content

Research project on hand movement decoding from EEG signals using deep learning and signal processing algorithms.

Notifications You must be signed in to change notification settings

shantistewart/EEG-Hand-Movement-Decoding

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EEG Hand Movement Decoding

The main goal of this research project was to classify hand movements from raw EEG (electroencephalogram) signals, using machine learning and signal processing algorithms. The general idea used was to extract spectral features from the raw EEG signals (power spectral density) and use these features to train a convolutional neural network (CNN) for classification.

Required Python Libraries

  • TensorFlow
  • NumPy
  • Scikit-learn
  • Matplotlib

Repository Structure

  • MATLAB: MATLAB code to generate data files and data files.
  • auxiliary: auxiliary functionality.
    • plotting: visualization of raw signals and calculated features.
      • plot_features.py
      • RawPSD_class.py
    • unit_tests: unit tests.
      • average_PSD_test.py
      • example_generation_test.py
      • PCA_on_PSD_test.py
      • power_spectral_density_test.py
      • RawPSD_class_test.py
      • spectrogram_test.py
  • documentation: documentation of algorithms implemented.
    • Feature Calculation Algorithms.pdf
    • Research Report.pdf
  • models: end-to-end models for feature extraction and classification.
    • classifiers: classification models.
      • CNN: convolutional neural network implementation.
        • conv_neural_net.py
        • evaluate_CNN.py
        • hyperparam_search.py
        • run_CNN.py
      • example_generation.py
    • data_reading: Python code to read data files.
      • data_reader.py
    • feature_calculation: feature calculation algorithms.
      • average_PSD.py
      • feature_algorithms.py
      • PCA_on_PSD.py
      • power_spectral_density.py
      • spectrogram.py

Scripts (files that can be run)

  • run_CNN.py: trains and evaluates a CNN model for multiple subjects.
    • file path: models/classifiers/CNN/run_CNN.py
  • hyperparam_search.py: tunes hyperparameters of a CNN model across multiple subjects.
    • file path: models/classifiers/CNN/hyperparam_search.py
  • plot_features.py: plots raw EEG signals and several calculated features.
    • file path: auxiliary/plotting/plot_features.py
  • unit tests:
    • power_spectral_density_test.py: unit tests for functions in power_spectral_density.py.
      • file path: auxiliary/unit_tests/power_spectral_density_test.py
    • average_PSD_test.py: unit tests for functions in average_PSD.py.
      • file path: auxiliary/unit_tests/average_PSD_test.py
    • PCA_on_PSD_test.py: unit tests for functions in PCA_on_PSD.py.
      • file path: auxiliary/unit_tests/PCA_on_PSD_test.py
    • spectrogram_test.py: unit tests for functions in spectrogram.py.
      • file path: auxiliary/unit_tests/spectrogram_test.py
    • example_generation_test.py: unit tests for functions in example_generation.py.
      • file path: auxiliary/unit_tests/example_generation_test.py
    • RawPSD_class_test.py: unit tests for functions in RawPSD_class.py.
      • file path: auxiliary/unit_tests/RawPSD_class_test.py

Authors

  • Shanti Stewart -- B.S. student in Electrical and Computer Engineering at Oregon State University.
  • Patrick McGrath -- B.S. student in Electrical and Computer Engineering at Oregon State University.

About

Research project on hand movement decoding from EEG signals using deep learning and signal processing algorithms.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •