热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PythonEEG工具库MNE中文教程(13)“bad“通道介绍

目录标记坏频道标记不良通道(markingbadchannels)本分享为脑机学习者Rose整理发表于公众号:脑机接口社区.QQ交流群:90329019


目录

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

本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195

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

导入工具库

import 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’]

参考
Python-EEG工具库MNE中文教程(13)-"bad"通道介绍
脑机学习者Rose笔记分享,QQ交流群:903290195
更多分享,请关注公众号


推荐阅读
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
author-avatar
MYJIE2502897603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有