README 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # Braille BCI experiment EEG experiment
  2. ## Brief experiment description
  3. 10 blind and 10 sighted subjects were using tactile P300 BCI, implemented with Alva 640 comfort Braille display.
  4. 4 fingers on each hand were placed on separate Braille cells, serving as stimuli. Each stimulus was activated 10 times in random order. Participant's task was to count activations of target cell.
  5. For blind subjects, Braille proficiency was assessed with the reading test before the experiment.
  6. The experiment included BCI sessions with large (8 dots) and small (1 dot) stimuli.
  7. The present analysis is focused on the comparison of BCI performance for large and small stimuli in blind and sighted individuals.
  8. For more details, see our preprint at ############
  9. Complete analysis is available at https://github.com/eegdude/erp_analysis/tree/brlbci
  10. The scripts are designed to work with contents of sourcedata folder
  11. ## Sourcedata description
  12. Per-record markup is provided in sourcedata. Per-epoch markup is calculated at preprocessing step.
  13. Various stimuli parameters for each epoch are descriped in events.tsv files
  14. ### Per-record markup
  15. |column name |description
  16. |---|---|
  17. | user| user id
  18. | folder| folder with a record inside the user folder
  19. | reg| BCI mode. 'large' for large stimuli, 'small' for small | stimuli
  20. | targets| list of target stimuli for all learning and stimuli selection cycles
  21. | fingers| which finger corresponds to specific stimuli code.<br> right hand 0 - pinky, 1 - ring, 2 - middle, 3 - index<br>left hand 4 - index, 5 - middle, 6 - ring, 7 - pinky
  22. | ecg_r_peak_direction| 1 if R-peak is up, -1 if R-peak is down, 0 or 2 if no ECG
  23. | leading_hand| 'r' if right, 'l' if left
  24. | ignore_events_id| list of events to not include into analysis
  25. | reading_finger| list of fingers used for Braille reading
  26. | blind| 1 if blind, 0 if sighted
  27. | order| index of the record in the experiment. Failed sessions that have not made it into the dataset are counted.
  28. | blindness_age| age of complete vision loss
  29. | reading_time| time of reading Braille text of standard informed consent
  30. | braille_display_user| 1 if the subject uses Braille display in daily life
  31. | daily_braille_time| self-reported daily Braille usage, hours
  32. | age| user's age
  33. | music| 1 if the subject has musical experience (except vocal), 0 if not
  34. | remaining_vision| 1 if the user has residual vision, 0 if not
  35. | sex| male or female
  36. | blind_years| years passed from total vision loss
  37. | congenitaly_blind| 1 if congenital blindness, 0 if acquired
  38. ### Per-epoch markup
  39. The preprocessed dataset has some added columns, which are calculated during the preprocessing stage.
  40. |column name |description
  41. |---|---|
  42. | id| unique epoch id
  43. | event| epoch event (activated stimuli id)
  44. | target| id of current target stimuli
  45. | is_target| 1 if epoch is target, 0 if not
  46. | session_id| stimuli selection cycle index inside experiment
  47. | epoch_id| epoch index inside stimuli selection cycle (from 0 to 79)
  48. | ms_after_r| milliseconds after R-peak
  49. | ms_before_r| milliseconds before next R-peak
  50. ### Sourcedata folder structure
  51. ```
  52. \
  53. └── markup.csv # metadata for all records
  54. └── user
  55. └── record
  56. └── _data_$MODE__play_$TIME.npy # Raw EEG data
  57. └── _events_$MODE__play_$TIME.npy # BCI events
  58. └── _photocell_$MODE__play_$TIME.npy # sync events
  59. └── Rpeaks.npy # preprocessed R-peaks, if availible
  60. ```
  61. users are numbered from 6 to 26
  62. $MODE can be 'large' for large stimuli and 'small' for small stimuli
  63. ### Preprocessed data folder structure
  64. ```
  65. \
  66. └── markup.csv # metadata for all epochs, created at preprocessing stage
  67. └── 0.pickle # pickle files, corresponding to single epochs
  68. ...
  69. └── $N.pickle
  70. ```