Giter Club home page Giter Club logo

simultaneous_eeg-nirs's Introduction

Simultaneous acquisition of EEG and NIRS during cognitive tasks for an open access dataset

Tutorial for data processing for Simultaneous acquisition of EEG and NIRS during cognitive tasks for an open access dataset

The authors would be grateful if published reports of research using this code (or a modified version, maintaining a significant portion of the original code) would cite the following article:

Shin, Jaeyoung, et al. "Simultaneous acquisition of EEG and NIRS during cognitive tasks for an open access dataset", Scientific data , February 2018.

Caution

Figures and Results may be different from those shown in Shin et al. (2017) because:

  1. some visulization options are different.
  2. EOG-rejection is not performed.

Data processing was performed using MATLAB 2013b. Please use MATLAB 2013b or older version.

Please download BBCI toolbox (https://github.com/bbci/bbci_public). The MATLAB scripts were written based on the BBCI toolbox (ver. 03 Nov. 2017). You may run into some errors if you use later version of BBCI toolbox or MATLAB. We do not guarantee that MATLAB scripts works properly in later version of MATLAB and BBCI toolbox.

  • For NIRS data conversion, please download 'proc_BeerLambert.m' here and overwrite it to the corresponding subfolder in BBCI toolbox.
  • For the use of customized values of 'CLim', please download 'visutil_getCommonRange.m' here and overwrite it to the corresponding subfolder in BBCI toolbox.
  • Please download 'plot_scalpEvolutionPlusChannel.m' here and overwrite it to the corresponding subfolder in BBCI toolbox.

Basic Data Structures

This document is from https://github.com/bbci/bbci_public/blob/master/doc/ToolboxData.markdown and partly modified. For more details, visit BBCI toolbox.

Table of Contents

  • cnt - Data structure holding the continuous signals
  • mrk - Marker structure defining certain events
  • mnt - Montage structure defining the electrode layout for scalp and grid plots

cnt - Continuous signals (EEG)

The structure holding continuous (i.e., not epoched) EEG signals is denoted by cnt.

cnt is a structure with the following fields:
.clab channel labels (CELL {1 #channels}) there may be additional information in other fields, but these are all optional
.fs sampling rate [samples per second]
.title task type: 'MI' - motor imagery / 'MA' - mental arithmetic
.T length of cnt.x
.yUnit unit of cnt.x
.x multichannel signals (DOUBLE [T #channels])

mrk - Event markers (EEG)

The structure holding marker (or event) information is denoted by mrk. Using this structure you can segment continuous EEG signals into epochs by the function proc_segmentation.

mrk is a structure with the following fields:
.time defines the time points of events in msec (DOUBLE [1 #events])
.event.desc structure of further information; each field of mrk.event provides information that is specified for each event, given in arrays that index the events in their first dimension. This is required such that functions like mrk_selectEvents can work properly on those variables.
.y class labels (DOUBLE [#classes #events])
.className class names (CELL {1 #classes})

mnt - The electrode montage (EEG)

The electrode montage structure, denoted by mnt, holds the information of the spatial arrangement of the electrodes on the scalp (for plotting scalp topographies) and the arrangement of subplot axes for multi-channel plots.

mnt is a structure with the following fields:
.x x-position of the electrode for scalp maps (DOUBLE [1 +channels])
.y y-position of the electrode for scalp maps (DOUBLE [1 +channels])
.pos_3d       3D coordinate (DOUBLE [3 #channels])
.clab channel labels (CELL {1 #channels})
            | **further optional fields are required for multichannel plots:**

.box | positions of subplot axes for multichannel plots (DOUBLE [2 #channels] or [2 #channels+1]; the first row holds the horizontal, and the second row the vertical positions. The optional last column specifies the position of the legend .box_sz | size of subplot axes for multichannel plots (DOUBLE [2 #channels] or [2 #nchannels+1]), corresponding to .box. The first row holds the width, the second row the height .scale_box | position of subplot for the scale (DOUBLE [2 1]) .scale_box_sz | size of subplot for the scale (DOUBLE [2 1])

cnt - Continuous signals (NIRS)

The structure holding continuous (i.e., not epoched) NIRS signals is denoted by cnt.

cnt is a structure with the following fields:
.fs sampling rate [samples per second]
nSources the number of sources
nDetectors the number of detectors
multiplexing the number of device used for data recording
.clab channel labels (CELL {1 #channels}) there may be additional information in other fields, but these are all optional
.x multichannel signals (DOUBLE [T #channels])
.wavelengths wavelengths of near-infrared light (Double [1 #wavelengths])
.signal type of signal
.title task type: 'MI' - motor imagery / 'MA' - mental arithmetic
.yUnit unit of cnt.x

mrk - Event markers (NIRS)

The structure holding marker (or event) information is denoted by mrk. Using this structure you can segment continuous NIRS signals into epochs by the function proc_segmentation.

The structure is same as above.

mnt - The electrode montage (NIRS)

The NIRS montage structure, denoted by mnt, holds the information of the spatial arrangement of sources, detectors, and physiological channels on the scalp (for plotting scalp topographies) and the arrangement of subplot axes for multi-channel plots.

mnt is a structure with the following fields:
.source holds the informaiton of the spatial arrangement of sources and channel labels
.detector holds the informaiton of the spatial arrangement of sources and channels labels
.x x-position of the physiological channel for scalp maps (DOUBLE [1 +channels])
.y y-position of the physiological channel for scalp maps (DOUBLE [1 +channels])
.pos_3d   3D coordinate (DOUBLE [3 #channels])
.clab channel labels (CELL {1 #channels}). e.g.) source : AF7, detector : Fp1 -> clab : AF7Fp1
sd source - detector pair (Double [#channels 2])
       | **further optional fields are required for multichannel plots:**

.box | positions of subplot axes for multichannel plots (DOUBLE [2 #channels] or [2 #channels+1]; the first row holds the horizontal, and the second row the vertical positions. The optional last column specifies the position of the legend .box_sz | size of subplot axes for multichannel plots (DOUBLE [2 #channels] or [2 #nchannels+1]), corresponding to .box. The first row holds the width, the second row the height .scale_box | position of subplot for the scale (DOUBLE [2 1]) .scale_box_sz | size of subplot for the scale (DOUBLE [2 1])

simultaneous_eeg-nirs's People

Contributors

jaeyoungshin avatar

Stargazers

 avatar  avatar  avatar wsl2000 avatar  avatar  avatar  avatar  avatar YuxuanYao avatar HyeJin avatar Noa Mintz avatar  avatar Shreya Kapoor avatar Jiaming Chen avatar  avatar Elakiya avatar Wiktor avatar Aung Aung Phyo Wai avatar Emiliano Díez avatar  avatar Ryan Greenhalgh avatar Michael D. Nunez avatar Johann Benerradi avatar yueying Z avatar Glenn 'devalias' Grant avatar  avatar DaiYang avatar Mark D. Yousef avatar  avatar Venkata Suresh Rayudu avatar  avatar Eryk Walczak avatar Renato Rodrigues avatar Daniel Borek avatar Zhishan Hu avatar  avatar

Watchers

Leon Wang avatar  avatar

simultaneous_eeg-nirs's Issues

What is the LDAmapping?

Dear Experts

Unrecognized function or variable 'LDAmapping'.

Error in Dataset_C_meta_classification (line 192)
map_train.deoxy.x = LDAmapping(C.deoxy, fv_train.deoxy.x, 'meta');

Any help or suggestion is much appreciated

Dataset lack some file

when i use MNE to processthe fNIR signal dataset,the software need a probeinfo.mat file for input.I seek it in your paper but nothing find.Do you have such a file.Thank you so much ,my email is [email protected]

Mrk.time()

Is this time of one trial?
Namely Mrk.time(1,1) is 81840 whats is this ???

the LDAmapping represtent what?

Dear mater
I need your help. I hope you can tell me the function:LDAmapping how to use the result ,which got from the function train_RLDAshrink.

mrk_defineClasses

i work on Dataset_B_ERP_classification.m
but i have error.
Unrecognized function or variable 'mrk_defineClasses'.

Error in Dataset_B_ERP_classification (line 65)
mrk_dsr= mrk_defineClasses(mrk_dsr, stimDef.eeg);

how can i fix?

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.