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

  1. Removing gradient artefacts: using BERGEN plug-in. Sliding window length for artefact template = 31.
  2. Filtering: first high-pass at 0.5 Hz, then low-pass at 45 Hz - do NOT using band-pass filter, do them separately.
  3. Resample the data to fs = 500 Hz. Resample before QRS detection is beneficial (as far as I can see).
  4. 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.
  5. Import channel locations: using '\dipfit2.3\standard_BESA\standard-10-5-cap385.elp'.
  6. Select the data points to be analysed - to save time.
  7. Remove ECG and bad channels (Must done before re-reference).
  8. Re-reference: average reference.
  9. 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的更多相关文章

  1. 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 ...

  2. EEG preprocess - re-reference EEG预处理 - 重参考

    Source: https://blricrex.hypotheses.org/ressources/eeg/pre-processing-for-erps/re-referencing-eeg-da ...

  3. [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 ...

  4. Specific sleep staging features in EEG

    Source: MedScape Overview NREM and REM occur in alternating cycles, each lasting approximately 90-10 ...

  5. EEG montage

    Source: WikiPedia - Electroencephalography Since an EEG voltage signal represents a difference betwe ...

  6. Advice for applying Machine Learning

    https://jmetzen.github.io/2015-01-29/ml_advice.html Advice for applying Machine Learning This post i ...

  7. 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 ...

  8. EEGLAB数据分析:预处理与后续处理

    来源:http://blog.sina.com.cn/s/blog_13171a73d0102v4zx.html 数据预处理主要包括数据导入.电极定位.电极返回.滤波.去除伪迹.重建参考.分段.叠加平 ...

  9. 使用Flask部署机器学习模型

    Introduction A lot of Machine Learning (ML) projects, amateur and professional, start with an aplomb ...

随机推荐

  1. UDS(ISO14229-2006) 汉译(No.4 术语和缩写)

    A_PCI                    Application layer Protocol Control Information应用层协议控制消息. A_PDU              ...

  2. Session中load/get方法的详细区别

    Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象.其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个O ...

  3. swift 之 纯代码创建 cell

    初学swift 但是网上只有很多swift用xib创建的cell,就算是有也不是我想要的.今天自己弄了一个不用xib纯代码写的,来上代码 博客地址: https://github.com/liguol ...

  4. PHP函数之自定义函数

    像数学中的函数一样,y=f(x)是函数基本的表达形式,x可看做是参数,y可看做是返回值,即函数定义就是一个被命名的.独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 自定义函数 函数的 ...

  5. android largeheap 的设定

    现在公司在做tv端的APP,我的任务是视频点播功能,在看公司原有代码的基础上看到在manifiest里面设置了largeheap,所以查阅了一下资料,作为笔记 http://blog.csdn.net ...

  6. 【工业串口和网络软件通讯平台(SuperIO)教程】九.重写通讯接口函数,实现特殊通讯方式

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    统一的IO接口 开发一套设备驱动同时具备串口和网络通讯能力,通讯接口在逻辑上是统一的,在此基础 ...

  7. jQueryMobile示例页面代码

    这是一个jQueryMobile示例页面 示例效果:http://hovertree.com/texiao/jquerymobile/ 可以在手机或者触屏浏览器查看效果. 以下是HTML代码: < ...

  8. DVWA安装,ALMP环境搭建以及php版本转换

    前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...

  9. JAVA模板方法设计模式(从现实生活角度理解代码原理)

    概述: 定义一个功能的框架(骨架),一部分功能是确定的,一部分功能是不确定的,先把确定的部分实现,把不确定的部分延迟到子类中实现. 实现该模式的关键步骤: 第一步:抽象类,实现模板方法,定义功能(确定 ...

  10. Linux0.11内核--进程调度分析之2.调度

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5596830.html ] 上一篇说到进程调度归根结底是调用timer_interrupt函数, ...