Merge pull request #94 from kylemath/korymath-rewrite

Update README.md
Esse commit está contido em:
Kyle Mathewson
2020-01-03 12:21:59 -07:00
commit de GitHub
+149 -112
Ver Arquivo
@@ -1,112 +1,14 @@
# EEGEdu
EEGEdu is an educational website to learn about working with electroencephalogram (EEG) data. It is a teaching tool that allows for students to quickly interact with their own brain waves.
`EEGEdu` is an interactive educational website to learn about working with electroencephalogram (EEG) data. It is a teaching tool that allows for students to interact with their own brain waves.
It is an interactive web page that you interact with multiple demonstrations of working with EEG data. It is partially inspired by [EEG101](https://github.com/NeuroTechX/eeg-101) but it is strictly web-based. This allows students to interact with EEG brain data without having to install any software.
`EEGEdu` has been inspired by multiple works that came before. It is inspired by [EEG101](https://github.com/NeuroTechX/eeg-101), but `EEGEdu` is web-based. Being web-based allows students to interact with EEG brain data without having to install any software. Others have used [Neurotech EEG-notebooks in python](https://github.com/NeuroTechX/eeg-notebooks) for data collection and analysis with [muse-lsl](https://github.com/alexandrebarachant/muse-lsl). These software support the Interaxon MUSE headset but require a bluetooth low-energey (BLE) dongle to work with common operating systems (e.g. Windows or Mac OSX). These tools also required the editing `pyglatt` code to connect to Muse headsets. Thus, previous software are cumbersome and serve as a barrier to entry for many students learning about EEG. `EEGEdu` aims to provide students with an accesible introduction to working with their own brain waves.
This is a useful set of tools that has been inspired by multiple works that came before. Previously, others in the field have been using [Neurotech EEG-notebooks in python](https://github.com/NeuroTechX/eeg-notebooks) for data collection and analysis with [muse-lsl](https://github.com/alexandrebarachant/muse-lsl). These software support the Interaxon MUSE headset but required a bluetooth low-energey (BLE) dongle to work with Windows of Mac systems. It also required the editing of some pyglatt code to connect properly. These software are cumbersome, and serve as a barrier to entry for many students learning about EEG.
Visit [https://eegedu.com/](https://eegedu.com/]) for the live website.
# Installation for Development
If you are interested in developing EEGEdu, here are some instructions to get you started.
Note: Currently EEGEdu development requires a Mac OSX operating system.
To start, you will need to install [Homebrew](https://brew.sh) and [yarn](https://yarnpkg.com/lang/en/docs/install/#mac-stable). These are easy one-line installations for Mac users:
```sh
# Install homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Install yarn
# NOTE: this will also install Node.js if it is not already installed.
brew install yarn
# Node.js must be version 10.x for Muse interaction
# Thus, if you are getting version issues, install n and switch versions
# sudo npm install -g n
# sudo n 10.16.0
```
Then, in terminal, clone the git repo and enter the folder:
```sh
git clone https://github.com/kylemath/EEGEdu
cd EEGEdu
```
You then need to install the required packages for EEGEdu
```sh
yarn install
```
## Local Development Environment
Then, you can run the *Development Environment* of EEGEdu:
```sh
yarn start dev
```
If it is working correctly, the EEGEdu application will open in a browser window at http://localhost:3000.
## Local Production Environment
To start the *Local Production Environment*, you can use the following commands:
```sh
yarn cache clean
yarn run build
serve -s build
```
## Deployment
[EEGEdu](https://eegedu.com) is running on [Firebase](https://firebase.google.com/) and deployment happens automagically using GitHub post-commit hooks, or [Actions](https://github.com/kylemath/EEGEdu/actions), as they are commonly called. You can see how the application is build and deployed by [inspecting the workflow](https://github.com/kylemath/EEGEdu/blob/master/.github/workflows/workflow.yml).
Currently this is not working and we are deploying locally with firebase
```sh
firebase deploy
```
after settings up one time with
```sh
firebase login
```
browser opens and login to accoun
then
```sh
firebase init
```
options: Hosting Sites only
public directory: build
single-page app: No
Overwrite - No
Overwrite - No
after first installing with
```sh
sudo brew install firebase
sudo yarn global add firebase-tools
sudo yarn global add firebase
```
# Contributing
The guide for contributors can be found [here](https://github.com/kylemath/EEGEdu/blob/master/CONTRIBUTING.md). It covers everything you need to know to start contributing to EEGEdu.
# Development Roadmap
We are aiming to include chances for students to interact with EEG-based brain signals. So we might break down a curriculum into 10 lessons as follows:
`EEGEdu` is served live at [https://eegedu.com/](https://eegedu.com). This website is served from the software in this repository. So, all you need to do to try the system out is head to [EEGEdu](https://eegedu.com/).
# EEGEdu Curriculum
EEGEdu provides an step-by-step incremental tutorial for students to interact with EEG-based brain signals. So, we break down the curriculum into 10 lessons as follows:
1. Connect + hardware
Biophysics + signal viewing
@@ -120,19 +22,154 @@ Biophysics + signal viewing
9. Neurofeedback p5js demos
10. BCI trainer
# References
# Installation for Development
* https://github.com/urish/muse-js - based toolbox for interacting with muse
* https://github.com/NeuroJS/angular-muse - demo with streaming data in Angular, record button,
* https://github.com/tanvach/muse-fft - starting point react demo
* https://github.com/neurosity/eeg-pipes - easy pipable operations on eeg data from muse-js
* https://reactjs.org/ - React for web development
* https://www.chartjs.org/docs/latest/ - interactive charts
* https://github.com/urish/muse-lsl - maybe useful to stream to LSL
If you are interested in developing EEGEdu, here are some instructions to get the software running on your system. *Note*: Currently EEGEdu development requires a Mac OSX operating system.
To start, you will need to install [Homebrew](https://brew.sh) and [yarn](https://yarnpkg.com/lang/en/docs/install/#mac-stable). These are easy to install with the following Terminal / `bash` commands:
```sh
## Install homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
## Install yarn
# NOTE: this will also install Node.js if it is not already installed.
brew install yarn
# NOTE: Node.js must be version 10.x for Muse interaction
# Thus, if you are getting version issues, install n, with the following command:
# sudo npm install -g n
# Then, you can switch to version 10.x with the following command:
# sudo n 10.16.0
```
Then, in Terminal/`bash`, clone this Git repository and change directory into the newly cloned folder:
```sh
git clone https://github.com/kylemath/EEGEdu
cd EEGEdu
```
Then, you can install the required `yarn` packages for EEGEdu:
```sh
yarn install
```
## Local Development Environment
Then, you can run the *Local Development Environment* of EEGEdu:
```sh
yarn start dev
```
If it is working correctly, the EEGEdu application will automatically open in a browser window at http://localhost:3000.
## Local Production Environment
To start the *Local Production Environment*, you can use the following commands:
```sh
yarn cache clean
yarn run build
serve -s build
```
## Local Testing of Changes
1. Install any new packages `yarn install`
1. Start the *Local Development Environment* `yarn start dev`
1. Look for errors in terminal log
1. Open's browser to http://localhost:3000
1. Open Javascript console
1. Look for errors in console
1. Connect Mock data stream by clicking Connect button
1. Run through the `checkFunction` below with Mock data.
1. Disconnect Mock data stream
1. Turn on Interaxon Muse headband
1. Connect Muse data stream
1. Repeat the `checkFunction` below with Muse data.
```sh
# Pseudocode for checking EEGEdu functionality
checkFunction = {
view raw data
change sliders
make sure data changes and no errors
click spectra
move sliders
make sure changes
click bands
move sliders
make sure changes
}
```
## Deployment
[EEGEdu](https://eegedu.com) is running on [Firebase](https://firebase.google.com/) and deployment happens automagically using GitHub post-commit hooks, or [Actions](https://github.com/kylemath/EEGEdu/actions), as they are commonly called. You can see how the application is build and deployed by [inspecting the workflow](https://github.com/kylemath/EEGEdu/blob/master/.github/workflows/workflow.yml).
Currently this automagic deployment is not working, so we can deploy to firebase manually:
First, install the Firebase deployment tools:
```sh
sudo brew install firebase
sudo yarn global add firebase-tools
sudo yarn global add firebase
```
The first deployment requires login and initialization once:
```sh
firebase login
```
Browser opens, and login to Google account authorized for Firebase deployment:
```sh
firebase init
```
* options: Hosting Sites only
* public directory: build
* single-page app: No
* Overwrite - No
* Overwrite - No
Then, deployment to Firebase happens with the following commands:
```sh
# clean the local cache to ensure most recent version is served
yarn cache clean
# build the latest version of the site
yarn run build
# deploy the latest version to firebase
firebase deploy
```
# References and Related Tools
* [Muse 2016 EEG Headset JavaScript Library (using Web Bluetooth)](https://github.com/urish/muse-js)
* [Muse 2016 + Web Bluetooth demo app in Angular](https://github.com/NeuroJS/angular-muse)
* [Explore Muse headband data in frequency domain](https://github.com/tanvach/muse-fft)
* [Pipeable RxJS operators for working with EEG data in Node and the Browser](https://github.com/neurosity/eeg-pipes)
* [React, A JavaScript library for building user interfaces](https://reactjs.org/)
* [Simple yet flexible JavaScript charting for designers & developers](https://www.chartjs.org/docs/latest/)
* [Muse 2016 EEG Headset LSL (NodeJS)](https://github.com/urish/muse-lsl)
* [Electroencephalogram (EEG) Recording Protocol for Cognitive and Affective
Human Neuroscience Research](https://static1.squarespace.com/static/5abefa62d274cb16de90e935/t/5df7db5956ec9170a9b402e1/1576524637645/Electrode_Application_Protocol_Final_Compressed.pdf)
# Contributing
The guide for contributors can be found [here](https://github.com/kylemath/EEGEdu/blob/master/CONTRIBUTING.md). It covers everything you need to know to start contributing to EEGEdu.
# Credits
`EEGEdu` - An Interactive Electrophysiology Tutorial with the Interaxon Muse brought to you by Mathewson Sons
`EEGEdu` - An Interactive Electrophysiology Tutorial with the Interaxon Muse brought to you by Mathewson Sons.
# License