热门标签 | 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
更多分享,请关注公众号


推荐阅读
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文探讨了仅对图像文件的内容进行加密的方法,而不加密整个文件。通过这种方式,可以保护图像中的敏感信息,同时保持文件的其他部分不受影响。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 本文介绍了如何在iOS应用中自定义导航栏按钮,包括使用普通按钮和图片生成导航条专用按钮的方法。同时,探讨了在不同版本的iOS系统中实现多按钮布局的技术方案。 ... [详细]
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社区 版权所有