bad 通道

本教程主要介绍手动标记坏通道以及基于其他传感器的好信号重建"bad"通道。

导入工具库

mport os
from copy import deepcopy
import numpy as np
import mne
"""
加载本地文件
sample_audvis_raw.fif
如果本地默认位置没有该文件,
则从网上下载测试案例
"""
sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample','sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False)

标记坏频道/标记不良通道(marking bad channels)

有时个别通道出现故障,提供的数据中噪声过高而无法使用。
通过使用MNE-Python,可以很容易地跟踪分析流中的这些通道,而无需实际删除这些通道中的数据。

它具体实现是通过跟踪列表中的坏通道索引并在执行分析或绘图任务时查看该列表。坏通道列表存储在Info对象的'bads'字段中,该字段附加到Raw、Epochs和诱发对象。

# 查看 bad 通道
print(raw.info['bads'])

['MEG 2443', 'EEG 053']

从上面的打印中可以看到,从磁盘中加载的.fif文件中存在标记为"坏"的通道。
其中EEG 053就是一个坏的通道,这里可以看一下它和其他一些EEG通道一起有什么不好的地方。
可以使用标准plot()方法来实现,而不是逐个列出通道名称(['EEG 050','EEG 051',…]),
这里使用正则表达式来使用pick_channels_regexp()函数来选择050和059之间的所有EEG通道(.是通配符):

picks = mne.pick_channels_regexp(raw.ch_names, regexp='EEG 05.')
raw.plot(order=picks, n_channels=len(picks))

也可以对坏的MEG通道(MEG 2443)进行相同的操作。Neuromag系统(就像用来记录示例数据的系统)使用MEG通道号的最后一位数字来表示传感器类型,这里的正则表达式将选择所有以2开头、以3结尾的通道:

picks = mne.pick_channels_regexp(raw.ch_names, regexp='MEG 2..3')
raw.plot(order=picks, n_channels=len(picks))

说明:为了将标记为"bad"的通道与其他正常的通道区分出来,这里用浅灰色绘制"bad"通道。
这些图清楚地表明,EEG 053根本没有检测到头皮电位,而MEG 2443的内部噪声似乎比它的邻居要大得多——它的信号比其他MEG通道大几个数量级。

如果要更改标记为"bad"的频道,可以直接编辑raw.info['bads'];这是一个普通的Python列表,因此可以使用常见的列表方法来操作:

original_bads = deepcopy(raw.info['bads'])
raw.info['bads'].append('EEG 050')               # 添加单个通道
raw.info['bads'].extend(['EEG 051', 'EEG 052'])  # 添加多个通道
bad_chan = raw.info['bads'].pop(-1)  # 移除列表中的最后一项
raw.info['bads'] = original_bads     # 更改整个列表

也可以交互地在raw.plot()或epoch .plot()的plot窗口中切换通道是否标记为“bad”,方法是单击垂直轴上的通道名称(在raw.plot()窗口中,当然也可以通过单击plot区域中的通道跟踪来实现这一点)。每次切换通道时,bads字段都会立即更新,并在plot窗口关闭后保留其修改状态。

mne中的坏频道列表。Info对象的bads字段在跨MNE-Python代码库的几十个函数和方法中被自动考虑。这与函数或方法签名中的参数exclude='bads'一致。通常,这个exclude参数还接受一组通道名称或索引,因此如果希望包含坏的通道,可以通过传递exclude=来实现。

例如:当然可以通过单击垂直轴上的通道名称(在raw.plot()窗口中,也可以在raw.plot()或epochs.plot()的绘制窗口中以交互方式切换通道是否标记为“不良”。 可以通过单击绘图区域中的通道轨迹来执行此操作。每次切换通道时,bads字段都会立即更新,并且在关闭绘图窗口后将保留其修改后的状态。

在MNE-Python代码库中的数十种函数和方法中,会自动考虑mne.Info对象的bads字段中的不良通道列表,这与函数或方法签名中的参数exclude ='bads'一致地完成。 通常,此exclude参数还接受通道名称或索引的列表,因此,如果要包括不良通道,可以通过传递exclude = [](或其他一些要排除的通道列表)来实现。例如:

good_eeg = mne.pick_types(raw.info, meg=False, eeg=True)
all_eeg = mne.pick_types(raw.info, meg=False, eeg=True, exclude=[])
print(np.setdiff1d(all_eeg, good_eeg))
print(np.array(raw.ch_names)[np.setdiff1d(all_eeg, good_eeg)])
[367]
['EEG 053']

不用于商业行为,转载请联系后台

若有侵权,请后台留言,管理员即时删侵!

更多阅读

他们想把广告植入你的梦境

EEG伪影详解和过滤工具的汇总(二)

EEG伪影类型详解和过滤工具的汇总(一)

MNE中数据结构Epoch及其创建方法

机器学习算法随机森林判断睡眠类型

上海独创柔性脑机接口何以上榜年度AI“奥斯卡”大奖

利用脑机接口从鸟的脑电波中重现鸟唱歌声

投稿通道

如何让你的工作让更多人知晓和受益?

脑机接口社区就是这样一个连接学界、

企业界和爱好者的平台渠道。

社区鼓励高校实验室、企业或个人在我们平台上分享优质内容。

稿件要求

稿件系个人原创作品,若已在其他平台发表,请明确标注。

稿件一经录取,便提供稿费!

投稿通道

微信扫码,备注:投稿+姓名+单位

微信交流群,请扫码上方微信

(备注:姓名+单位+专业/领域行业)

QQ交流群:913607986

你的每一次在看,我都很在意!

脑电分析系列[MNE-Python-13]| bad通道介绍相关推荐

  1. 脑电分析系列[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型

    案例介绍 本案例通过对多导睡眠图(Polysomnography,PSG)数据进行睡眠阶段的分类来判断睡眠类型. 训练:对Alice的睡眠数据进行训练: 测试:利用训练结果对Bob的睡眠数据进行测试, ...

  2. 脑电分析系列[MNE-Python-21]| Python协方差矩阵处理脑电数据

    今天主要介绍一下MNE中如何用协方差矩阵来处理脑电数据的. MNE中的许多方法,包括源估计和一些分类算法,都需要根据记录进行协方差估计. 在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪 ...

  3. 脑电分析系列[MNE-Python-6]| Python读取.set文件和.locs文件

    本案例主要介绍如何读取eeglab示例文件.set以及.locs文件. .set文件记录的是采集的信息,主要内容包括通道数,事件数,开始时间与结束时间等. .locs文件记录的是电极位置信息. 知识点 ...

  4. 脑电分析系列[MNE-Python-2]| MNE中数据结构Raw及其用法简介(更新)

    Raw对象主要用来存储连续型数据,核心数据为n_channels和times,也包含Info对象. 下面可以通过几个案例来说明Raw对象和相关用法. Raw结构查看: # 引入python库 impo ...

  5. 脑电分析系列 | MNE-Python汇总

    1 脑电分析系列MNE-Python教程 [MNE-1]| MNE-Python详细安装与使用(更新) [MNE-2]| MNE中数据结构Raw及其用法简介(更新) [MNE-3]| MNE中数据结构 ...

  6. 脑电分析系列[MNE-Python-19]| 可视化Evoked数据

    在前面我们介绍过Evoked的数据结构以及如何创建Evoked对象: 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建 Evoked potential(EP)诱发 ...

  7. 脑电分析系列[MNE-Python-11]| 信号空间投影SSP 应用

    信号空间投影(SSP) 在前面一篇分享(脑电分析系列[MNE-Python-10]| 信号空间投影SSP数学原理)中提到,投影矩阵将根据您试图投射出的噪声种类而变化.信号空间投影(SSP)是一种通过比 ...

  8. 脑电分析系列 | eeglab汇总

    1 脑电分析系列eeglab教程 eeglab教程系列(1)-安装教程 eeglab教程系列(2)-加载.显示数据 eeglab教程系列(3)-绘制脑电头皮图 eeglab教程系列(4)-绘制通道光谱 ...

  9. 脑电分析工具MNE教程

    资料来源:脑电分析系列 | MNE-Python汇总 目录 1.安装与使用 2.数据结构Raw 3.Epoch 4.Evoked 5.案例 (1)导入工具库 (2)加载数据 (3)测试数据 (4)提取 ...

  10. 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法

    Epoch概念简介 相信很多人第一次接触epoch时,都会有疑惑,这个词在EEG中到底指的是什么. 下面将详细说明一下. 从连续的脑电图信号中提取一些特定时间窗口的信号,这些时间窗口可以称作为epoc ...

最新文章

  1. JAVA图片处理--缩放,切割,类型转换
  2. python一个月能学成嘛-Python 从入门到精通:一个月就够了!
  3. python篮球-基于Python/Java的人工智能篮球训练系统的制作方法
  4. centos mysql-5.5.20_centos 下安装mysql5.5.20出现的问题
  5. Ehab and the Expected XOR Problem
  6. MSSQL 发布订阅,实现读写分离
  7. 2022年全新美观的春节倒计时代码
  8. hibernate之多对多关联映射
  9. java cipher用法_java使用Cipher 执行RSA解密报错
  10. Python运算符+与+=的那些事
  11. ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧
  12. (免费领)Java大厂面试题:如何实现对象克隆?
  13. 三星 smarttv android,三星SmartView
  14. java 复制文本到剪贴板,使用Java将文本复制到剪贴板
  15. vnc远程桌面,vnc远程桌面使用教程图解
  16. Unable to launch WebDriverAgent because of xcodebuild failure: “iproxy exited with code ‘234‘“
  17. win10安装opencv,pycharm中import cv2失败
  18. ASP 模板引擎,ASP 模板类 (Taihom.Template.class)
  19. pv uv vv cv 的区别
  20. 用python在excel中做批量计算(包括单元格为空值时的处理情况)

热门文章

  1. Golang中的panic和recover(捕获异常)
  2. Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法
  3. Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题
  4. git remote添加其他SSH端口
  5. 如何在Linux上找到包含特定文本的所有文件?
  6. 【linux基于Postfix和Dovecot邮件系统的搭建】
  7. Docker 的优势
  8. storm0.9.0.1安装
  9. IQueryable和IQueryProvider初尝
  10. PHP 简单的数字过滤函数