Coder Social home page Coder Social logo

eeg-gpt's Introduction

WARN: UNDER ACTIVE DEVELOPMENT

Intro

What is this?

This is a project to build a foundation model for EEG data. It is based on the NeuroGPT model by Wenhui Cui et al.

What is EEG?

EEG is short for Electroencephalography. It is a non-invasive method of measuring brain activity. It is used to detect brain signals that are not easily captured by other methods, such as seizures and emotional states.

Who is Neurosity?

Neurosity is a technology company that specializes in creating brain-computer interfaces. They have developed a device called the Crown, which is a wearable EEG headset that can measure brain activity. The data collected by the Crown can be used for a variety of applications, including mental health monitoring, cognitive enhancement, and controlling devices with your mind. Neurosity's mission is to empower individuals with the ability to understand and enhance their mental state.

About this Repo

Standardizing EEG

  1. The model allows any electrode found in the 10-10 or 10-20 system.
  2. The model expects 128.0 Hz sampling rate

Deploying

We've been running the model on A40s.

Downloading Training Data

We're using the TUH-EEG Corpus for training. See how to submit the request here.

Once you've gained a password from TUH you can naviagte to the data folder and mkdir tuh-eeg folder.

Something like this:

apt-get update
apt-get install -y rsync
rsync -auxvL --no-owner --no-group [email protected]:data/tuh_eeg/tuh_eeg/v2.0.1/ .

For long downloads, you can use a tool like rsync to download the files in parallel and tmux to keep the connection alive.

apt-get install -y tmux
tmux new-session -s download 

Learn more about how to exit and navigate tmux here.

By default, any edf files in the tuh-eeg folder should be converted to npy files in preprocessing.py.

Preprocessing

The preprocessing script (preprocess.py) converts CSV or EDF files to NumPy .npy files. It applies various preprocessing steps to the data, including notch filtering and bandpass filtering. Here are the available arguments for the preprocessing script:

python3 src/eeg/preprocess.py [arguments]

Arguments:

  • --input_directory: The directory containing the input files (CSV or EDF).
  • --output_directory: The directory where the processed .npy files will be saved.
  • --recording_sample_rate: The original sampling rate of the data (default: None).
  • --include_timestamp: Include a timestamp in the output file names (flag).
  • --notch_filter: The frequencies for the notch filter (e.g., 50 60 for both 50Hz and 60Hz).
  • --bandpass_filter: The lowcut and highcut frequencies for the bandpass filter (e.g., 1 48 for 1-48Hz).
  • --channel_locations: The channel locations (e.g., "CP3, C3, F5, PO3, PO4, F6, C4, CP4").
  • --tuh_eeg: Process TUH EEG files (flag).
  • --verbose: Enable verbose output (flag).
  • --cutoff_samples: The number of samples to cut off from the beginning and end of the data to account for filter ringing (default: 18).
  • --parallel: Process files in parallel (flag).

Example Usage:

For Crown CSV files:

python3 src/eeg/preprocess.py --input_directory data/sessions --output_directory data/npy_sessions --recording_sample_rate 256 --notch_filter 50 60 --bandpass_filter 1 48 --cutoff_samples 18

For TUH EEG files:

python3 src/eeg/preprocess.py --input_directory edf/ --output_directory data/npy_tuh_eeg --notch_filter 50 60 --bandpass_filter 1 48 --verbose --tuh_eeg --cutoff_samples 18

Based on

NeuroGPT

NeuroGPT by Wenhui Cui et al.

@misc{cui2024neurogpt,
      title={Neuro-GPT: Towards A Foundation Model for EEG},
      author={Wenhui Cui and Woojae Jeong and Philipp Thölke and Takfarinas Medani and Karim Jerbi and Anand A. Joshi and Richard M. Leahy},
      year={2024},
      eprint={2311.03764},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

Neurosity Foundational Model

JeremyNixon/neurosity)

@misc{neurosity_eeg_dataset,
  title={Neurosity EEG Dataset},
  author={Nixon, Jeremy and Keller, AJ},
  year={2024},
  url={https://github.com/JeremyNixon/neurosity}
}

eeg-gpt's People

Contributors

chuxel avatar andrewjaykeller avatar bamurtaugh avatar tonybaloney avatar danielmabadeje avatar egamma avatar orehga avatar microsoftopensource avatar alexr00 avatar ianhopkinson avatar msftgits avatar rahulrai-in avatar kieferrm avatar qubitron avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.