脑机接口信号基本操作回顾

2023/1/2 -1/3脑机接口学习内容一览:

这一篇博客主要是对自己这几个星期学习脑机接口基本操作情况的总结,对刚进入这个领域、感觉有些迷茫的同学来说可能会有一定的参考价值。


这项工作主要考验自己对脑电信号基本处理流程的熟悉程度,在写代码的同时也发现了自己较多的不足,有些bug也未能完美处理。但是相对于一个星期前一知半解的状态明显有着很大的进步。


 典型的 M/EEG 工作流程

import mne
import matplotlib.pyplot as plt
import numpy as np"""
第一步:导入数据集,定位通道数据
通过mne.io.read_raw_eeglab来读取.set文件
得到原始数据对象
p.s.此数据集为eeglab的自带数据集
在此文件中已经包含各个脑电通道的位置,故在此不读入.locs文件
"""
raw = mne.io.read_raw_eeglab("secdata.set", preload=True, uint16_codec=None)
# 提取0~20s的数据
tmin, tmax = 0, 20
raw.crop(tmin, tmax).load_data()
print(raw.info)'''
第二步:删除无用通道的数据
在采集数据的过程中,有可能会记录一些后期并不需要用到的通道信息,这时候我们就可以将它们剔除掉,不必纳入后续的分析中。
比如双侧乳突点。又比如眼电通道的数据。
在使用eeglab来对数据进行预处理的时候,可以通过ICA的方式来去除眼电成分
而这种方式可以不需要眼电通道数据的参与就可以进行。
在此我们将不需要用到的通道列入bads中
这里将两个眼电信号通道加入bads
'''
raw.info['bads'].extend(['EOG1', 'EOG2'])"""
绘制从第5s开始,5s时间窗口长的原始数据start:指定开始绘制的时间
duration:要绘制的时间窗口从该图中可以看出每个通道的数据波动情况
可以通过设置duration的大小来放大或缩小这个有点类似于eeglab中,放大缩小功能。
这里相同大小的窗口显示更短时间的数据,相当于eeglab中的选中数据进行放大,
反之,即缩小。
"""
raw.plot(start=5, duration=5)
plt.show()"""
打印通道名
p.s.标记为bads后的通道仍可见,但在各种操作中bads通道不对整体产生影响
"""
print('all the channels are\n', raw.info['ch_names'])# 绘制电极位置
raw.plot_sensors("3d")
plt.show()"""
绘制通道位置图,并对应位置上显示通道名称
在此文件中已经包含各个脑电通道的位置,故在此不读入.locs文件
"""
layout_from_raw = mne.channels.make_eeg_layout(raw.info)
layout_from_raw.plot()
plt.show()'''
第三步:重参考
与中文教程不同。这里我们参照文档中事件相关电位的处理过程,先进行重参考
这里我们选择平均参考
'''
raw.set_eeg_reference('average', projection=True)'''
第四步:滤波
因为这个数据集似乎是记录观察者看到不同形状的图形的反应
为了去除电源线噪声,我们做一个凹陷滤波
我们暂且假设他的alpha波比较活跃,故做一个9-13hz的带通滤波
为了去除漂移现象,再做一个1hz的高通滤波
为了使操作更加直观,我们可以使用subplots函数将几张图对比来看
'''
fmin, fmax = 9, 13
fig, ax = plt.subplots(1, 4, figsize=(16, 4))
raw.compute_psd(method='welch', average=False).plot(axes=ax[0])
raw.notch_filter(60)
raw.compute_psd(method='welch', average=False).plot(axes=ax[1])
raw.filter(fmin, fmax)
raw.compute_psd(method='welch', average=False).plot(axes=ax[2])
raw.filter(1., None)
raw.compute_psd(method='welch', average=False).plot(axes=ax[3])for ax, title in zip(ax[:4], ['native', '60hz filter', '9hz-13hz pass', '1hz high pass']):ax.set_title(title)
plt.show()'''
第四步:根据事件分段,提取epochs
在这个set数据集中暂且只有annotation而没有events事件
故我们需要考虑将注释转化为我们需要的事件
即Consider using mne.events_from_annotations to convert these to events.
'''
# 打印注释信息,发现存在5个rt注释,8个square注释
print(raw.annotations)
# 将rt改名为事件1,square改名为事件2
dictionary = {'rt': 1, 'square': 2}
events, event_id = mne.events_from_annotations(raw, event_id=dictionary)
print(events, '\n', event_id)'''
创建epochs对象
这里我们用事件来创造epoch对象
取事件前0.2s至事件后1s创建,并且将事件前0.2秒至事件发生的0s作为基线校正
print可以看见epoch共包含5个rt事件,8个square事件
'''
epochs = mne.Epochs(raw, events, event_id, tmin=-0.2, tmax=1,baseline=(None, 0), preload=True)
print(epochs.info)'''
通过epochs平均叠加得到evoked对象,然后进行绘图
(不知道为什么线条那么乱,可能是前面的操作有问题?)
'''
see_rt = epochs['rt'].average()
see_square = epochs['square'].average()
f, axs = plt.subplots(1, 2, figsize=(10, 4))
_ = f.suptitle('rt & square events in eeg', fontsize=20)
_ = see_rt.plot(axes=axs[0], show=False, time_unit='s')
_ = see_square.plot(axes=axs[1], show=False, time_unit='s')
plt.show()'''
第五步:时频域分析
这里使用小波变换做时频域分析
'''
# 时频分析
freqs = np.logspace(*np.log10([9, 13]), num=10)
n_cycles = freqs/2.
power, itc = mne.time_frequency.tfr_morlet(epochs, freqs=freqs, n_cycles=n_cycles, use_fft=True)# 时频结果绘制
power.plot(picks=['O1'], baseline=(None, 0), mode='logratio', title='auto')  # 枕叶导联的power结果
power.plot_topo(baseline=(-0.5, 0), mode='logratio', title='Average power')  # 绘制power拓扑图

参考文献:

脑电时频分析

用MNE包进行Python脑电数据处理

脑电数据处理分析教程汇总(eeglab, mne-python)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36814.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《考试脑科学》

给大家推荐《考试脑科学》这本书。 作者介绍:池谷裕二,日本东京大学药学系研究科教授,脑科学研究者。1970年生于日本静冈县,1998年取得日本东京大学药学博士学位,2002年起担任美国哥伦比亚大学客座研究员。专业为神经…

正经聊一聊脑机接口的发展现状|脑科学开放日

杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 众所周知,睡眠是维持生命的必需品。 先前的研究已经表明,睡眠不足会导致许多严重的疾病,比如…… 好,不要说了。 srds(虽然但是),说了那么多次&a…

017利用颅内和头皮脑电图进行癫痫预测的卷积神经网络2018

Convolutional neural networks for seizure prediction using intracranial and scalp electroencephalogram ABSTRACT 癫痫发作预测作为改善耐药癫痫和强直性癫痫患者生活的最具挑战性的预测数据分析工作之一,越来越受到关注。许多杰出的研究报告了在提供合理的间…

003基于神经网络的癫痫脑电信号检测与分类

Neural Network Based Epileptic EEG Detection and Classification ABSTRACT 及时诊断对挽救癫痫患者的生命至关重要。在过去的几年里,有很多治疗癫痫的方法。这些治疗需要使用抗癫痫药物,但对控制癫痫发作频率无效。需要通过手术切除受影响的区域。 …

脑机接口科普0010——研究脑机接口的大学和机构

本文禁止转载!!!! 之前脑机接口科普0003——Hans Berger_sgmcy的博客-CSDN博客介绍了,德国的精神病学教授,Hans Berger ,在耶拿大学工作研究记录了EEG脑电图。 本文就介绍一下,目前…

chatgpt赋能python:Python如何屏蔽鼠标输入

Python如何屏蔽鼠标输入 介绍 在进行Python编程时,我们经常需要在程序中进行键盘输入操作,但是有些情况下需要屏蔽鼠标输入,以避免产生干扰。本文将介绍Python如何屏蔽鼠标输入的方法。 屏蔽鼠标输入的方法 Python提供了多种方法屏蔽鼠标…

某211本科程序员:我才不想去大厂!我当外包18k,大厂才22k,面试难,绩效费心血,外包混混不爽吗?

现在的年轻人都摆烂到什么程度了呢? 一位211本科毕业的前端程序员发帖称“自己对大厂毫无感觉”“不想去大厂”,因为找工作时外包18k,大厂才22k,面试难太多,还有绩效费心血,在外包混混不爽吗? …

如何使用multipart/form-data格式上传文件

------------------------------------------------------------------大家好,我是许飞,微软拼音的开发实习生。在网络编程中,经常用到从服务器上“下载”一些数据,有时却要向服务器“上传”数据。曾在一个原型中使用了“multipart/form-data”格式向Web服务器上传文件,这…

http post 使用multipart/form-data 格式数据 上传文件(图片)

由于工作上的需求,这两天对接了个php的接口,上传文件必须使用固定格式,下面看下需要上传的格式,从图片中可以看出,多个图片数据是使用boundary分割的,并且在每个数据体内(即从分割符到下一个分割…

一文搞懂如何利用multipart/form-data实现文件的上传与下载

1. Form简介 **Form**(中文译为表单)[1],是HTML标记语言中的重要语法元素。一个Form不仅包含正常的文本内容、标记等,还包含被称为控件的特殊元素。用户通常通过修改控件(比如:输入文本、选择菜单项等)来“完成”表单&…

多文件上传、单文件上传、图片上传(支持word、pdf、excel、.jpg、txt等文件上传)

1. 图片上传 >>>>>>>>>>>>>>>>>>>> 效果图 >>>>>>>>>>>>>>>>>>>> js 实现 <!doctype html> <html lang"en"><head>…

我为什么放弃了 LangChain?

如果你关注了过去几个月中人工智能的爆炸式发展&#xff0c;那你大概率听说过 LangChain。 简单来说&#xff0c;LangChain 是一个 Python 和 JavaScript 库&#xff0c;由 Harrison Chase 开发&#xff0c;用于连接 OpenAI 的 GPT API&#xff08;后续已扩展到更多模型&#x…

chatgpt赋能python:Python小动画代码——给你的网站增加生动趣味!

Python小动画代码 —— 给你的网站增加生动趣味&#xff01; Python作为一种高级编程语言&#xff0c;在数据分析、机器学习、Web开发等领域应用广泛。不过&#xff0c;你可能不知道Python还可以用来编写小动画。今天&#xff0c;我们将通过一些示例介绍Python小动画代码&…

Forefront GPT-4免费版:开启无限畅聊时代,乐享人工智能快感,无限制“白嫖”,还能和N多角色一起聊天?赶紧注册,再过些时间估计就要收费了

目录 前言注册登录方式应用体验聊天体验绘图体验 “是打算先免费后收费吗&#xff1f;”建议其它资料下载 前言 近期&#xff0c;人工智能技术迎来重大飞跃&#xff0c;OpenAI的ChatGPT等工具成为全球数亿人探索提高生产力和增强创造力的新方法。人们现在可以使用人工智能驱动…

英语c开头语言,61句C开头的英语谚语带翻译

1、Call a spade a spade. 据实而言。 2、Call me not olive till thou see me gathered. 盖棺论定。 3、Call no man happy until he dies. 盖棺才能定论。 4、Can the leopard change his spots? 江山易改,本性难移。 5、Care and diligence bring luck. 谨慎和勤奋,带来好…

文学-谚语-英文谚语:英文谚语

ylbtech-文学-谚语-英文谚语&#xff1a;英文谚语 英语谚语指流传于英国和美国的比较简练而且言简意赅的话语。英语谚语有一部分来自书面文献&#xff0c;主要出自希腊罗马神话、寓言故事、莎士比亚戏剧以及一些名家作品中。 1.返回顶部 1、 中文名&#xff1a;英语谚语 外文名…

什么是量化交易?量化交易都有哪些主要的策略模型?

量化交易是指以先进的数学模型替代人为的主观判断&#xff0c;利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略&#xff0c;极大地减少了投资者情绪波动的影响&#xff0c;避免在市场极度狂热或悲观的情况下作出非理性的投资决策。 量化交…

建立量化交易趋势跟踪策略的五个指标

趋势跟踪策略是您只需顺势而为的策略&#xff0c;即在价格上涨时买入&#xff0c;在价格开始下跌时卖出。在趋势跟踪策略中&#xff0c;人们的目标不是预测或预测&#xff0c;而只是关注市场上的任何新兴趋势。 我们谈论&#xff1a; 趋势是如何出现的&#xff1f;如何实施趋…

英华学堂网课助手Linux版本

首先我们下去GitHub把文件下载下来记得 脚本地址&#xff1a; https://github.com/aoaostar/mooc/releases/latest 这几个版本随便下哪个都可以&#xff0c;下载完之后我们通过xftp上传到服务器上并加压 接下来我们通过xshell工具到该目录下编辑config.json文件 cd /www/aoa…

向凯文·凯利提问:未来 5000 天我们将走向何处?

ChatGPT 的问世不禁让人遐想&#xff0c;接下来的 5000 天&#xff0c;将会发生什么事&#xff1f; 硅谷精神之父、世界互联网教父、《失控》《必然》的作者凯文凯利&#xff08;Kevin Kelly&#xff0c;以下简称 K.K.&#xff09;是这样预测的&#xff1a; 未来将会是一切都与…