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 ...
随机推荐
- hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
原文地址:http://blog.csdn.net/qiaqia609/article/details/9456489 hibernate.cfg.xml -标准的XML文件的起始行,version= ...
- ABP之动态WebAPI(二)
HttpControllerDescriptor与HttpActionDescriptor HttpControllerDescriptor封装了某个HttpController类型的元数据,我们可以 ...
- CSS学习
标签选择器,标签名{},作用于所有此标签. 类选择器, .class{},在标签内定义class="",属图形结构. ID选择器,#ID{}, 在标签内定义id="&qu ...
- 【一次面试】再谈javascript中的继承
前言 面向对象编程是每次面试必问的知识点,而前端js如何实现继承每次命中率高达80% 这不,近两天我们面试时候,同事就问道面试者此问题,但是,不论之前自己做的回答,还是面试者的回答,基本都不太令人满意 ...
- iOS下Audio自动播放(Autoplay)音乐
前几天做了一个H5活动页面,产品要求初始化播放音乐,因晓得H5 Audio标签支持Autoplay就没在意. 完了在手机上测试,发现手机上打开页面死活就是不会自动播放,点击播放按钮才可以播放,很是纠结 ...
- Web API初探
前几天有位同事说web api中的接口参数为对象的时候不好接收,具体什么方式我忘记了,虽然本人以前并没有接触过这方面的知识,但是据说和MVC差不多的,今天小小的研究一下,我想应该是可以的. 直接新建一 ...
- 设置statusBarStyle
设置状态栏的样式, typedef NS_ENUM(NSInteger, UIStatusBarStyle) { UIStatusBarStyleDefault ...
- 处理Xcode 警告
除了代码中我们手动加入的 #Waring 标示 所产生的警告,我们都应该重视.下面是一些警告的处理. 1,方法过期,或 使用新的api 替换方案 multipartFormRequestWithM ...
- c#中抽象类(abstract)和接口(interface)的相同点与区别
相同点: 1.都可以被继承 2.都不能被实例化 3.都可以包含方法声明 4.派生类必须实现未实现的方法 区别: 1.抽象基类可以定义字段.属性.方法实现.接口只能定义属性.索引器.事件.和方法声明,不 ...
- git操作命令
参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 git 分布式版本控制系统. ...