EEG-ExPy icon indicating copy to clipboard operation
EEG-ExPy copied to clipboard

Merge changes to the device abstraction ("EEG") class from my repo

Open ErikBjare opened this issue 3 years ago • 7 comments

My stuff is in: https://github.com/ErikBjare/thesis/blob/master/src/eegwatch/devices/

Includes a bunch of minor changes, including:

  • Added type annotations
  • Support for recording Muse PPG/ACC/GYRO streams

TODO

  • [ ] start/stop is different for Brainflow vs Muse devices, this should maybe be refactored, but at least be documented.
  • [ ] I've ran the black formatter on all my code, so merging would be easiest after similar formatting has been applied on the eeg-notebooks project (like in #30)
  • [ ] Needs a way to enable PPG/ACC/GYRO streams (without hardcoding)

ErikBjare avatar Dec 03 '20 15:12 ErikBjare

@ErikBjare it appears to me that you have completed this or is there still more work to be done?

JadinTredup avatar Dec 15 '20 18:12 JadinTredup

@JadinTredup Nope, never got around to making a PR.

I've made some pretty major changes, and working on a few more, almost to the point where I'm not sure if it makes sense to upstream it. But if it's of interest I'll consider it: https://github.com/ErikBjare/thesis/tree/master/src/eegwatch/devices

ErikBjare avatar Dec 23 '20 12:12 ErikBjare

@ErikBjare - what's your thoughts. Do you think these changes should be added or is divergence too great?

JohnGriffiths avatar Mar 19 '21 14:03 JohnGriffiths

@JohnGriffiths I'm not sure, I'd love it if you had a look at it and told me what you think.

Code is here: https://github.com/ErikBjare/thesis/tree/master/src/eegwatch/devices

Basically I created an abstract class EEGDevice that is implemented by the classes MuseDevice and BrainflowDevice. It simplifies a lot of the code imo, no more if statements to check if using one type of device or another, for example.

I also implemented a check method (only for MuseDevice so far) which does a very basic signal check (old method, not the newer one I linked you recently) and returns the list of bad channels, but that probably doesn't belong in the class (at least not in its current state).

Edit: Oh, and it also uses the bleak backend in muse-lsl by default (not yet merged upstream in muse-lsl afaik).

ErikBjare avatar Apr 11 '21 16:04 ErikBjare

@ErikBjare I am going to look this over today. Thank you so much for doing this. One of my biggest take aways from my internship development-wise has been implementing classes like this and so I was intending to do this at some point.

JadinTredup avatar Apr 11 '21 19:04 JadinTredup

@JohnGriffiths I like this a lot and think it improves our flexibility/scalability in the future. If you're okay with it I say we set up another branch and work on merging this.

JadinTredup avatar Apr 11 '21 19:04 JadinTredup

@JadinTredup Branch set up in #92, comments welcome!

ErikBjare avatar Apr 13 '21 12:04 ErikBjare