letswave教程:脑电数据图形绘制、批处理以及脚本生成
letswave教程:脑电数据图形绘制、批处理以及脚本生成
- 1 单主题图形生成
- 1.1 打开图形模块
- 1.2 创建子图
- 1.3 添加内容
- 1.4 设置轴参数
- 1.5 导出图形
- 2 多主题图形生成
- 2.1 打开图形模块
- 2.2 创建子图
- 2.3 添加内容
- 2.4 设置轴参数
- 3 批处理
- 3.1 数据导入
- 3.2 删除无用的通道
- 3.3 过滤
- 3.4 坏电极插值替换
- 3.5 计算ICA矩阵
- 3.6 人工识别成分
- 3.7 分段
- 3.8 重新参考
- 3.9 基线校正
- 3.10 平均
- 3.11 运行批处理
- 3.12 批处理操作的输入/输出
- 3.13 中间数据集和前缀
- 4 脚本生成
- 4.1 批处理脚本
- 4.2 单步操作脚本
- 4.3 轻松访问数据
- 4.4 数据导入和图形生成脚本
Hello,这里是行上行下,我是喵君姐姐~
第一期我们学习了如何用Letswave进行数据的预处理和ERP分析,包括letswave7的安装、数据集导入、预处理中常见的几种降噪方法、ICA分解、ERP分析。
第二期我们学习了如何用letswave对单个主题进行时频分析以及对多个主题进行平均和统计分析。
这一期,我们就来教大家学习如何用letswave绘制图形,以及对数据进行 批处理,并介绍其中的 脚本生成功能。
1 单主题图形生成
在对单个主题和多个主题进行分析之后,我们将在本部分中介绍ERP、时频图和topography图形生成。
在本章中,我们将显示下图的生成过程。此图显示了Pz通道上P300的ERP,其topography在332 ms上,Target和Nontarget条件下的相应时频图显示在底部面板中。
1.1 打开图形模块
首先,在rawdata1文件夹中,选择数据集:
Sub093 P300 Nontarget
Sub093 P300 Target
bl avg cwt bl reref ep_S 9 sp_filter ica chan _interp butt sel_chan sub093
bl avg cwt bl reref ep_S 10 sp_filter ica chan _interp butt sel_chan sub093
单击“ Figure-> General Figure creator ”,打开图形模块空白画布。
1.2 创建子图
1.2.1 在画布中添加一条Curve,两个Image和一个Topograph。
1.2.2 对于第二张Image和topograph,启用****colorbar。
首先,单击Content工具栏中的按钮,选择Image3中的子图并启用colorbar。
然后,在“Subfigure”中选择topograph4并启用 colorbar。
1.2.3 调整每个子图的位置
首先,单击工具栏中的Image按钮,选择“ Curve1”。将 “Title” 设置为“ P300 ”,字体大小设置为12,位置设置为x = 50,y = 340,w = 600 和 h = 250。
其次,选择Image2。将 “Title” 设置为 “ Target ”,将字体大小设置为12,并将位置设置为x = 70,y = 50,w = 250和h = 250。
接着,选择Image3。将 “Title” 设置为“ Nontarget ”,将字体大小设置为12,并将位置设置为x = 360,y = 50,w = 250和h = 250。
最后,选择 “ topograph4”。将 “Title” 设置为“ 332 ms ”,将字体大小设置为12,并将位置设置为x = 480,y = 470,w = 120和h = 120。
步骤2之后,图形将如下图所示,
1.3 添加内容
首先,单击工具栏中的 “Content” 按钮,然后在子图中选择P300。添加一条curve,其数据源为“ Sub093 P300 target ”,通道为Pz。
其次,添加一条curve,其颜色为蓝色 [0,0.45,0.74],数据源为“ Sub093 P300 nontarget ”,通道为Pz。
然后,添加一个line,位置 X1 = 0.332,Y1 = -5,X2 = 0.332 和 Y2 = 10.8619。
接着,在子图中选择Target。将数据源设置为“ bl avg cwt bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”,通道设置为Pz,范围从 -9 到 9,启用width,并将宽度设置为0.5,范围从0到0开始。
接下来,在子图中选择Nonarget。将数据源设置为“ bl avg cwt bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”,通道设置为Pz,范围从 -9 到 9,启用width,并将宽度设置为0.5,范围从 0 到 0 开始。
最后,在子图中选择332 ms。将数据源设置为“ Sub093 P300 Target ”,x从0.332到0.332,head radius为0.5,shrink为0.95,范围从 -5 到 10.8619, 以使其与P300曲线的范围相同。对于电极,将size设置为8,并标记通道 Pz。
步骤3之后,该图将如下图所示,
1.4 设置轴参数
首先,单击工具栏中的axis按钮,然后在子图中选择P300。并启用figure。在内容的列表框中选择curve1,在figure中将其名称更改为Target。在内容的列表框中选择curve2,在figure中将其名称更改为NonTarget。
对于x轴,将x-lim设置为 -0.5到1.5秒,将位置更改为origin。启用标签,并将其设置为“ Time [sec] ”。对于y轴,将位置更改为origin。启用label,并将其设置为“ Amp [\ muV] ”。
其次,在子图中选择target。对于x轴,将x-lim设置为 -0.5至1.5秒,并将label设置为“ Time [sec] ”。对于y轴,将标签设置为“ Freq [Hz] ”。
然后,在子图中选择Nontarget。对于x轴,将x-lim设置为 -0.5至1.5秒,并将label设置为“ Time [sec] ”。对于y轴,将标签设置为“ \ muV ^ 2 / Hz ”。
步骤4之后,该图将如下图所示,
1.5 导出图形
到目前为止,我们已经完成了Letswave中图形的编辑。接下来,我们需要导出图形,以便在其他软件中进行进一步的编辑。
单击工具箱中的 “export the figure ” 按钮,将图形导出为eps或pdf格式。单击第二个按钮,将图形另存为“ Figure1.lw_figure ”,将文件保存在工具栏中。我们可以保存该图以便下次编辑。此外,date management可以通过更改数据源以生成新图形。
2 多主题图形生成
在本章中,我们将显示多主题分析的图形生成。
2.1 打开图形模块
首先,在rawdata1文件夹中,选择数据集
avg merge_epoch Sub001 P300 Nontarget
avg merge_epoch Sub001 P300 Target
单击“ Figure-> General Figure creator ”,以打开图形模块空白画布。
2.2 创建子图
首先,将图形的宽度和高度设置为1000和400。
其次,添加标题为P300,字体大小为12,位置x = 80,y = 70,w = 870和h = 300的curve。
然后,添加标题为0 ms,字体大小为12,位置x = 100,y = 180,w = 120和h = 120的topograph。
接着,添加标题为332 ms,字体大小为12,位置x = 230,y = 180,w = 120和h = 120的topograph。
最后,添加标题为500 ms,字体大小为12的topograph,在content面板中启用colorbar,并将位置x = 630,y = 180,w = 120和h = 120定位。
2.3 添加内容
首先,单击工具栏中的content按钮,然后在子图中选择P300。添加一条width为3的curve,数据源为“ avg merge_epoch Sub001 P300目标 ”,通道为Pz。
其次,添加一条curve,其颜色为蓝色 [0,0.45,0.74],width 为 3,topograph为Dshed,数据源为“ Sub093 P300 nontarget ”,通道为Pz。
然后,添加一个face opacity为0.25,edge opacity为0,位置x = 0.196,y = -2,w = 0.516和h = 14的rect。并在curve1和curve2上方对rect进行排序。
接着,添加一个line,width 为 1,line style为dshed,位置X1 = 0,Y 1 = -2,X 2 = 0和Y2 = 1.2。
接下来,添加一个line,width 为 1,line style为dshed,位置X1 = 0.332,Y 1 = -2,X 2 = 0.332和Y2 = 11.3。
然后,添加一个line,width 为 1,line style为dshed,位置X1 = 0.5,Y1 = -2,X 2 = 0.5和Y2 = 2.8。
紧接着,在子图中选择0 ms。将数据源设置为“ avg merge_epoch Sub001 P300 Target ”,x从0到0,head radius为0.5,shrink为0.95,范围从 -2 到 12, 以使其与P300曲线的范围相同。对于电极,将大小设置为 8, 并标记通道 Pz。
再然后,在子图中选择332 ms。将数据源设置为“ avg merge_epoch Sub001 P300 Target ”,x从0.332到0.332,head radius为0.5,shrink为0.95,范围从 -2 到 12,以使其与P300曲线的范围相同。对于电极,将大小设置为 8 ,并标记通道 Pz。
最后,在子图中选择500ms。将数据源设置为“ avg merge_epoch Sub001 P300 Target ”,将x设置为0.5到0.5,head radius设置为0.5,shrink为0.95,范围从 -2 到 12 以使其与P300曲线的范围相同。对于电极,将大小设置为8,并标记通道Pz。
步骤3之后,该图将如下图所示,
2.4 设置轴参数
首先,单击工具栏中的axis按钮,然后在子图中选择P300。并启用Box和Legend。
其次,在内容的列表框中选择curve1,在figure中将其名称更改为Target。在内容的列表框中选择curve2,在figure中将其名称更改为NonTarget。
接着,对于x轴,将x-lim设置为 -0.5 至 1.5 秒。启用 grid 和 label,将label设置为“ Time [sec] ”。
最后,对于y轴,启用grid和label,将label设置为“ Amp [\ muV] ”。
步骤4之后,该图将如下图所示。
3 批处理
在这一部分中,我们将对单个主题重新做时域分析。与上一教程中的逐步操作不同,本部分将使用批处理对数据进行分析。
注意: 在每步操作中,不需要点击 “Run”,需在所有操作处理完毕后,再点击 “Run” 运行。
3.1 数据导入
下载教程数据集,解压缩rawdata1.zip文件,共有三个文件,分别是sub093.eeg,sub093.vhdr和sub093.vmrk。
打开Matlab,在Matlab的命令窗口中输入“ letswave7 ”以打开Letswave7。将letwave的路径设置为数据集的文件夹。
在管理器模块的菜单中选择 “file->import->import EEG / MEG datafiles” ,然后将弹出导入数据对话框。按下add files按钮以添加文件sub093.eeg。
3.2 删除无用的通道
在管理器模块的数据列表中选择数据集“ sub093 ”,然后单击 “ edit”->“arrange signals”->“rearrange or delete epochs,channels,indexes”。在批处理模块中,按add all按钮以将所有通道添加到左侧列表框中。然后选择通道IO,然后按 “ delete” 按钮删除通道IO。
3.3 过滤
单击左侧的selection,然后在菜单中选择 “process- >frequency analysis and filters-> Butterworth filters”,并将low cutoff frequency(Hz) 设置为0.05Hz。
注意: 从此步骤开始,批处理中的操作将有所不同。我们从批处理模块而不是管理器模块中调用Butterworth过滤器。
3.4 坏电极插值替换
单击左侧 Butterworth filters,然后选择 “edit->electrodes->interpolate channel using neighbouring electrodes”。在 “ channel to interpolate:channels for” 列表框中选择通道P1,然后单击 “ find closest electrodes ” 按钮。
3.5 计算ICA矩阵
单击左侧chan interp, 然后选择 “ process”->“spatial filters(ICA / PCA)->compute ICA matrix ”。选择decide by user,并将组件编号设置为40。
3.6 人工识别成分
首先,单击左侧ICA,然后在批处理模块中选择 “ process”->“spatial filters(ICA / PCA)->apply ICA / PCA spatial filters”。左侧显示两个选项,即 load 和 apply filter。
其次,单击load,然后单击add并添加数据集“ ica chan_interp butt sel_chan sub093 ”。点击标签apply filter,无需在此处设置任何选项。
3.7 分段
首先,单击 apply filter,然后在批处理模块中选择 “process->epoch segmentation->segment relative to events(one file per code)”。左侧又出现了两个选项,分别是load和segmentation。
其次,单击load,然后单击add并添加数据集“ sp_filter ica chan_interp butt sel_chan sub093 ”。
接着,单击segmentation,选择事件代码S 9和S 10,并将epoch开始时间和持续时间设置为 -1 和 3。
3.8 重新参考
首先,单击segmentation,在批处理模块中选择 “process”- >“reference signals”->“reference ”。左侧又出现了两个选项卡,即load和reference。
其次,单击load,然后单击add并添加数据集“ ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”和“ ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”。
然后,单击该选项卡rereference,选择TP9和TP10作为新参考在左侧的列表框中,在右侧框中点击 “select all”。
3.9 基线校正
单击reference, 然后在批处理模块中选择 “process”- >“baseline ”->“baseline correction”。左侧出现baseline correction选项,保留基线校正的默认设置。
3.10 平均
首先,单击baseline correction, 然后在批处理模块中选择 “process”- >“arrange”->“compute arrange,std,median across epoch”。
左侧出现average_epoch选项。保留基线校正的默认设置。
为此,我们已经完成了分配批处理的工作。下一步骤将介绍运行批处理。
3.11 运行批处理
通过点击 “Run” 按钮,我们可以运行整个批处理。
在 “ 人工识别成分 ” 步骤中,我们仍然手动在右侧面板中以橙色选择comp 1,comp 2,然后单击OK按钮。
测试中的所有处理都需要2分钟以上的时间,其中计算ICA矩阵的步骤非常耗时。结果将与逐步操作的结果完全相同。
3.12 批处理操作的输入/输出
整个批处理过程分为四个阶段,每个阶段都有不同的颜色。每个会话都从load步骤开始。
实际上,自动添加load操作的目的是指定系统的输入数据集。在每个步骤中,必须弄清楚处理的输入和输出。在分步操作中,输入是选定的数据集,输出是添加了前缀的新数据集。
Letswave7自动添加load操作以要求用户指定输入数据集。当然用户还可以通过选择“ File-> load ” 来手动添加load操作。
3.13 中间数据集和前缀
在Letswave7中,每个步骤都会生成一个带有前缀的新数据集。有时,中间数据集没有用,但却占据了硬盘。此外,对这些中间数据集的读/写操作将很耗时。
在这种情况下,我们可以设置prefix为空,并检查了保存复选框的中间步骤的selection,butterworth filters,chan_interp,reference,baseline correction。
注意: 将前缀设置为 空 实际上是在替换输入数据集。请注意,一旦保存了结果,它将覆盖原始数据集。
注意: 每个会话的最终结果都需要保存。否则,所有处理都是徒劳的,因为没有结果保存在硬盘驱动器上。
由于数据集的名称已更改,因此我们需要在load操作的步骤中相应地删除错误数据集并为输入添加正确的数据集。通过单击 “Run” 按钮,批处理将比以前更快,中间数据集不再存在。
4 脚本生成
除了图形用户界面(GUI),脚本可能是Letswave7中最常用的功能。脚本为用户提供了更大的脑电图处理自由度,但是还要求用户具有更扎实的编程基础,这使得没有相关背景的研究人员难以使用。Letswave7致力于解决这个问题。
4.1 批处理脚本
在Letswave7中,系统通过运行相应的Matlab脚本来运行批处理。完成处理流程后,已经自动生成了相应的Matlab脚本。用户可以单击批处理模块中的 “ script ” 按钮以获取完整的脚本。
4.2 单步操作脚本
在批处理的每个步骤中,也可以使用右下角的 “script ” 按钮来获得用于单步操作的脚本,从而可以切实减少用户对教程的依赖。即使没有扎实的Matlab编程背景的用户也可以编写高质量的脚本来进行批处理EEG信号处理。
在Letswave7中,我们提供了具有丰富的函数库FLW_。该库中所有函数的语法都是统一的。对于操作的第一步,我们只需要定义选项,然后调用相应的FLW函数即可。
option=struct('XXX',xxx,'XXX',xxx); lwdata= FLW_XXX.get_lwdata(lwdata,option);
该选项中的参数设置与GUI中的参数选择相同。只需注意函数的输入和输出是单个数据集还是多个数据集即可。
4.3 轻松访问数据
通过单击管理器模块右侧菜单中的“ send to workplace”,可以轻松访问每个数据集,该数据集将在Matlab工作区中显示为变量,名称为“ lwdata ”。然后,基于脚本的用户可以在Matlab中对数据集进行自己的操作。
操作后,用户还可以通过单击管理器模块右侧菜单中的“ read from workplace ”,以Letswave格式保存数据集。
同样,其他信息也很容易在其他模块中访问,例如事件信息,通道名称和有关平均值,最大值和最小值的统计结果。
4.4 数据导入和图形生成脚本
不仅批处理模块中的操作,其他操作(如数据导入和图形生成)也都可以脚本化。因此,从数据导入到预处理,时间/频率分析和统计分析,再到最终图形生成,EEG信号信号分析的整个过程可以轻松,快速地编写为脚本。
例
在这里,我们重复对P300数据集的数据分析,以演示在Letswave7中使用脚本的情况。
- 脚本1数据导入
将Letswave路径切换为“ rawdata1 ”。打开数据导入对话框,然后选择数据集 “ Sub093.eeg”。除了单击按钮Run之外,我们还可以单击按钮script来获取用于数据导入的脚本script1。
在Matlab中运行script1,我们还可以通过单击Run按钮直接加载数据集 “ Sub093” 。
- 脚本2单主题分析
打开之前保存的批处理“ P300 .lw_script ” 。除了单击按钮Run之外,我们还可以单击按钮script来获取用于单个主题分析的脚本script2。在Matlab中运行script2,我们也可以完成单主题分析。
- 脚本3单主题分析(已编辑)
熟悉Letswave脚本和Matlab编程后,就可以将这两个脚本组合到script3并对其进行编辑以提高效率,并更改数据集的名称以进行进一步的多主题分析。
在Matlab中运行script3,对于时域分析,我们可以得到平均结果“ Sub093 P300 Target ”和“ Sub093 P300 Nontarget ”,对时频域分析可以得到“ cwt Sub093 P300 Target ”和“ cwt Sub093 P300 Nontarget ”。
- 单个主题的脚本4 图形
选择数据集 “ Sub093 P300 nontarget.lw6”,“ Sub093 P300 target.lw6”,“ cwt Sub093 P300 target.lw6”,“ cwt Sub093 P300 nontarget.lw6”。我们可以按照单主题分析图形进行制作。
单击按钮script以获取用于生成图形的脚本script4。在Matlab中运行script4,我们可以得到类似的图形,但是图例的位置需要调整。
- 脚本5 多主题分析
Letswave的路径切换到“ rawdata2 ”,重复平均和统计分析的操作。在通过String操作进行编辑并添加for循环之后,我们可以拥有用于多主题分析的脚本script5。
在Matlab中运行script5,我们可以得到与之前多主题的平均与统计分析完全相同的结果。
总结:通过以上教程,我们学习了如何运用letswave进行图形生成、批处理以及脚本生成。
至此为止,我们关于letswave的教程就结束啦!这些只是基本的操作步骤,具体的方法和参数还是要根据自己的实验目的来设置,希望本次教程能帮助到大家~
PS: 本文首发于公众号 行上行下,公众号后台回复 “Letswave” 可获得安装包、原文教程以及其他资料等内容。
letswave教程:脑电数据图形绘制、批处理以及脚本生成相关推荐
- Letswave 教程:脑电数据预处理与叠加平均
Letswave 教程:脑电数据预处理与叠加平均 1 实验与工具介绍 2 前期准备 2.1 letswave7安装与数据集准备 2.2 数据集导入 2.3 数据集检查 3 数据预处理 3.1 通道位置 ...
- letswave7中文教程1:软件安装与脑电数据导入
目录 1.安装 2.数据集介绍 3. 数据集导入 4.数据集检查 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 Letswave是一款非常好用的神经生理信 ...
- letswave7中文教程2:脑电数据预处理-通道位置分配
目录 第1步:通道位置分配 第2步:删除不良通道 第3步:滤波处理 第4步:坏电极插值 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 原始的脑电图信号是有 ...
- letswave7中文教程3:脑电数据预处理-ICA去除伪影
目录 ICA/BSS的理论与模型 第5步:计算ICA矩阵 第6步:识别伪影成分 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 ICA/BSS的理论与模型 ...
- Python协方差矩阵处理脑电数据
在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪声协方差矩阵,该矩阵可用于计算最小范数逆解. 诸如MNE的源估计方法需要从记录中进行噪声估计. 在本教程中,我们介绍了噪声协方差的基础知识 ...
- 脑电数据预处理-ICA去除伪影
ICA/BSS的理论与模型 独立成分分析(ICA)是一种盲信号分离(Blind Signal Separation,BSS)方法.ICA可线性建模如下图所示. 假设X为" ...
- EEGLAB脑电数据预处理指导手册
EEGLAB脑电数据预处理指导手册 1 前期准备工作 1.1 书籍 1.2 网站 1.3 公众号 2 预处理流程 2.1 准备工作 2.2 眼电去除的标准 2.3 后续整理工作 3 叨叨几句 Hell ...
- 脑电分析系列[MNE-Python-21]| Python协方差矩阵处理脑电数据
今天主要介绍一下MNE中如何用协方差矩阵来处理脑电数据的. MNE中的许多方法,包括源估计和一些分类算法,都需要根据记录进行协方差估计. 在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪 ...
- 脑电分析系列[MNE-Python-18]| 生成模拟原始脑电数据
在实验中有时需要原始脑电数据来进行模拟实验,但又限于实验条件的不足,需要构造模拟的原始脑电数据. 本示例通过多次重复所需的源激活来生成原始数据. 案例介绍 # 导入工具包 import numpy a ...
最新文章
- 复杂多变场景下的Groovy脚本引擎实战
- 多个div嵌套,获取鼠标所点击的div对象
- html onfoucs状态事件,HTML onfocusin事件用法及代码示例
- Windows Server 2008 R2模板机制作(VMware Workstation)
- UA MATH563 概率论的数学基础1 概率空间2 可列状态空间
- Simulink模块之Band-Limited White Noise
- 声明式事务基于注解@Transactional的理解
- 深入理解JVM垃圾收集机制,下次面试你准备好了吗
- matlab中如何在图片上添加横竖线
- php urledcode_php慎用urldecode函数
- 数据--第41棵 - 图的存储结构
- ubuntu20.x安装 podman
- 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
- 各代iphone尺寸_iPhone12系列尺寸对比-历代iPhone机型尺寸比较
- java使用openoffice/libreoffice进行office转pdf
- 计算机网络速度慢原因,上网网速变慢的几个原因及解决方法
- Mac Spotlight 聚焦搜索
- java url 收集
- 金融风控中英文术语手册(银行_消费金融信贷业务)_version5
- 国家自然科学基金成果填写经验
热门文章
- 蓝魔平板i9s刷机Android,蓝魔i9s 乐蛙ROM刷机教程
- 个人贷款违约预测模型(逻辑回归)
- 03 矩阵不只是mn个数字
- 用python获取某年某月/(当前)的天数
- android:layout_alignParentLeft=true一下是什么意思
- vmware esxi6.x 环境下 oracle 11gR2 ASM 的raw裸映射磁盘更换为虚拟存储磁盘
- git报错git@gitlab.com: Permission denied
- 网络统考计算机二级可以用么,全国计算机二级考试(考二级能用office2019练吗)...
- Leetcode 77. Combinations 组合
- 网络控制系统仿真:Truetime2.0工具箱安装(win10 + matlab R2017b)