One EEG preprocessing pipeline - EEG-fMRI paradigm
The preprocessing pipeline of EEG data from EEG-fMRI paradigm differs from that of regular EEG data, because they are mainly influenced by MRI artefacts. However, after removing the MRI artefacts at the first step, following ones would be the same as the regular pipeline.
Figure above: an example of raw EEG data with MRI artefacts - the very dense part. Only after removing the dominating artefacts could we go on with other preprocessing and analyses.
Environment requirement
- Matlab (R2015b).
- EEGLab toolbox (v13.6.5b). Plug-ins needed: BERGEN, FMRIB, AAR.
Testing data
Acquired using an Brain Products system with 64 scalp channels. Standard procedure to setup the EEG system: fs = 5000 Hz, low-pass hard ware filter at 250 Hz. Using SyncBox to sync the EEG and fMRI clocks.
Gathering continuous data for about 10-min.
Pipeline
- Removing gradient artefacts: using BERGEN plug-in. Sliding window length for artefact template = 31.
- Filtering: first high-pass at 0.5 Hz, then low-pass at 45 Hz - do NOT using band-pass filter, do them separately.
- Resample the data to fs = 500 Hz. Resample before QRS detection is beneficial (as far as I can see).
- Detect R-peaks, visually check incorrect ones and remove cardiac artefacts: using FMRIB plug-in (optimal basis set: first 3 PCs used). Using Edit -> Event values to delete the incorrect QRS events.
- Import channel locations: using '\dipfit2.3\standard_BESA\standard-10-5-cap385.elp'.
- Select the data points to be analysed - to save time.
- Remove ECG and bad channels (Must done before re-reference).
- Re-reference: average reference.
- Removing EOG (blinks) and EMG artefacts using AAR plug-in directly.
Note
- The data is a continuous data. For task data (i.e. you may epoch them first), baseline correction is needed.
- The AAR plugin is good to detect EOG and EMG artefacts, but sometimes they do not pick up ICs relating to residuals of R-peak artefacts.
- Considering what mentioned above, an alternative is using 'ICA + ADJUST plug-in' to replace AAR in step 9. This is a better strategy with enough experience on recognising artefact ICs.
- Removing power interference may be needed sometimes: 'Tools -> Filter the data -> Basic FIR filter -> Lower & Higher: both 50Hz, using Notch filter'.
- The steps and their order may vary among different groups, while the main parts remain unchanged.
- Inspired by 52Brain. Thanks a lot to the contributors.
One EEG preprocessing pipeline - EEG-fMRI paradigm的更多相关文章
- EEG preprocessing - A Trick Before Doing ICA
EEGLab maillist My ICs don't have high power in low frequency is b/c I do a small trick here. before ...
- EEG preprocess - re-reference EEG预处理 - 重参考
Source: https://blricrex.hypotheses.org/ressources/eeg/pre-processing-for-erps/re-referencing-eeg-da ...
- [Machine Learning with Python] My First Data Preprocessing Pipeline with Titanic Dataset
The Dataset was acquired from https://www.kaggle.com/c/titanic For data preprocessing, I firstly def ...
- Specific sleep staging features in EEG
Source: MedScape Overview NREM and REM occur in alternating cycles, each lasting approximately 90-10 ...
- EEG montage
Source: WikiPedia - Electroencephalography Since an EEG voltage signal represents a difference betwe ...
- Advice for applying Machine Learning
https://jmetzen.github.io/2015-01-29/ml_advice.html Advice for applying Machine Learning This post i ...
- Recover data from reference electrode via EEGLab 用EEGLab恢复参考电极数据
The data of scanning reference electrode will not show initially. Here is a summary of recovering it ...
- EEGLAB数据分析:预处理与后续处理
来源:http://blog.sina.com.cn/s/blog_13171a73d0102v4zx.html 数据预处理主要包括数据导入.电极定位.电极返回.滤波.去除伪迹.重建参考.分段.叠加平 ...
- 使用Flask部署机器学习模型
Introduction A lot of Machine Learning (ML) projects, amateur and professional, start with an aplomb ...
随机推荐
- 【夯实PHP基础系列】JQuery easyUI的使用
最近在做一个公司的后台项目中,接触到 JQuery easyUI前端框架,被她简洁的代码和简单有效的ajax交互所深深吸引. 体会有以下3个方面: 1)快速创建表格的能力: 后端程序,比如PHP只需要 ...
- ProxyPattern
代理模式是aop编程的基础,其主要作用是操作对象,并将你需要的新功能切入若干个你想要的切入点,静态代理模式比较简单,但是缺点比较大,这里就不上代码了,下面写上动态代理模式的代码(jdk方式,而不是采用 ...
- jquery给div的innerHTML赋值
$("#id").html()=""; //或者 $("#id").html("test");
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(二)鹰眼模块
讲解GIS功能模块实现之前,先大概说一下flexviewer的核心配置文件config.xml,系统额GIS功能widget菜单布局.系统的样式.地图资源等等都是在这里配置的,这里对flexviewe ...
- iOS AutoLayout的用法
添加约束 代码实现Autolayout的步骤 利用NSLayoutConstraint类创建具体的约束对象 添加约束对象到相应的view上 - (void)addConstraint:(NSLayou ...
- CRM基于.NET的增删改查
一.准备工作: 1.添加 microsoft.crm.sdk.proxy.dll和microsoft.xrm.sdk.dll 引用到项目中!并引用以下using! using Microsoft.Xr ...
- iOS多线程实现2-NSThread
NSThread是轻量级的多线程开发,OC语言编写,更加面向对象,使用起来也并不复杂,但是使用NSThread需要自己管理线程生命周期.在iOS开发中很少使用它来创建一个线程,但是经常使用它做一些延时 ...
- Android 四大组件之Activity(续2)
1.生命周期 关于生命周期,在详细讲解下: 上图是从android官网获取的生命周期. 正常的流程,很多文章都讨论过了,我们讨论几个特殊的情况. 1)OnResume->OnPause-> ...
- mysqldump: Got error: 1142: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'accounts' when using LOCK TABLES
AutoMySQLBackup备份时,出现mysqldump: Got error: 1142: SELECT, LOCK TABLES command denied to user 'root'@' ...