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 ...
随机推荐
- Linux-网络连接-(VMware与CentOS)
VMware虚拟机中安装CentOS,进行网络连接,分为两步,内网连接,与外网连接. 前提: 当你正确安装VMware后,网络适配器会增加2个新的网卡:(可在设备管理器->网络适配器中查看) 第 ...
- json中含有Unicode的处理办法 C#
public static class StringExtension { #region unicode 字符转义 /// <summary> /// 转换输入字符串中的任何转义字符.如 ...
- (原) 2.3 Curator使用
本文为原创文章,转载请注明出处,谢谢 Curator使用 1.jar包引入,演示版本为2.6.0,非maven项目,可以下载jar包导入到项目中 <dependency> <grou ...
- XML序列化和反序列化
上篇总结了下JSON的序列化和反序列化,博园中大牛给了很多牛叉的评论,学习了不少. 不过在上篇中忘了把json序列化和反序列化的另外一种方式写上去了,这里做个简单的补充: Json篇:http://w ...
- ul ol di三者区别
1.ul是无序列表,也就是说没有排列限制可以随意加li: <ul> <li>可以随意放置</li> <li>可以随意放置</li> < ...
- Promise和$.Deferred总结
语法对比: Promise .then(f).catch(f)是.then(f,f)的语法糖 .all([A,B,C])等最慢的 .race([A,B,C])最快的 $.Deferred .d ...
- JS学习笔记10之Math对象
-->Math对象 常用属性和方法-->使用Math对象制作相应的效果 Math对象用于执行数学任务 一.Math对象的属性: 二.Math对象的方法: 三.常用属性和方法: Math.P ...
- 第一个web框架tornado
简介 tornado,是我学到的第一个web框架是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google ...
- AFNetworking的理解
AFNetworking的理解 使用方法 1. 新建的工程中导入AFNetworking3.0中的(AFNetworking 和UIKit+AFNetworking两个文件夹) 2. 在用到AFNet ...
- compileDebugJavaWithJavac
学习笔记 compileDebugJavaWithJavac,缺少插件,在module app gradle文件最上面添加一段 apply plugin: 'me.tatarka.retrolambd ...