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上,TargetNontarget条件下的相应时频图显示在底部面板中。

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 = 50y = 340w = 600h = 250

其次,选择Image2。将 “Title” 设置为 “ Target ”,将字体大小设置为12,并将位置设置为x = 70y = 50w = 250h = 250

接着,选择Image3。将 “Title” 设置为“ Nontarget ”,将字体大小设置为12,并将位置设置为x = 360y = 50w = 250h = 250

最后,选择 “ topograph4”。将 “Title” 设置为“ 332 ms ”,将字体大小设置为12,并将位置设置为x = 480y = 470w = 120h = 120

步骤2之后,图形将如下图所示,

1.3 添加内容

首先,单击工具栏中的 “Content” 按钮,然后在子图中选择P300。添加一条curve,其数据源为“ Sub093 P300 target ”,通道为Pz

其次,添加一条curve,其颜色为蓝色 [0,0.45,0.74],数据源为“ Sub093 P300 nontarget ”,通道为Pz

然后,添加一个line,位置 X1 = 0.332Y1 = -5X2 = 0.332Y2 = 10.8619

接着,在子图中选择Target。将数据源设置为“ bl avg cwt bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”,通道设置为Pz,范围从 -99,启用width,并将宽度设置为0.5,范围从00开始。

接下来,在子图中选择Nonarget。将数据源设置为“ bl avg cwt bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”,通道设置为Pz,范围从 -99,启用width,并将宽度设置为0.5,范围从 00 开始。

最后,在子图中选择332 ms。将数据源设置为“ Sub093 P300 Target ”,x从0.3320.332head radius0.5shrink0.95,范围从 -510.8619, 以使其与P300曲线的范围相同。对于电极,将size设置为8,并标记通道 Pz。

步骤3之后,该图将如下图所示,

1.4 设置轴参数

首先,单击工具栏中的axis按钮,然后在子图中选择P300。并启用figure。在内容的列表框中选择curve1,在figure中将其名称更改为Target。在内容的列表框中选择curve2,在figure中将其名称更改为NonTarget

对于x轴,将x-lim设置为 -0.51.5秒,将位置更改为origin。启用标签,并将其设置为“ Time [sec] ”。对于y轴,将位置更改为origin。启用label,并将其设置为“ Amp [\ muV] ”。

其次,在子图中选择target。对于x轴,将x-lim设置为 -0.51.5秒,并将label设置为“ Time [sec] ”。对于y轴,将标签设置为“ Freq [Hz] ”。

然后,在子图中选择Nontarget。对于x轴,将x-lim设置为 -0.51.5秒,并将label设置为“ Time [sec] ”。对于y轴,将标签设置为“ \ muV ^ 2 / Hz ”。

步骤4之后,该图将如下图所示,

1.5 导出图形

到目前为止,我们已经完成了Letswave中图形的编辑。接下来,我们需要导出图形,以便在其他软件中进行进一步的编辑。

单击工具箱中的 “export the figure ” 按钮,将图形导出为epspdf格式。单击第二个按钮,将图形另存为“ 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 创建子图

首先,将图形的宽度和高度设置为1000400

其次,添加标题为P300,字体大小为12,位置x = 80y = 70w = 870h = 300curve

然后,添加标题为0 ms,字体大小为12,位置x = 100y = 180w = 120h = 120topograph

接着,添加标题为332 ms,字体大小为12,位置x = 230y = 180w = 120h = 120topograph

最后,添加标题为500 ms,字体大小为12topograph,在content面板中启用colorbar,并将位置x = 630y = 180w = 120h = 120定位。

2.3 添加内容

首先,单击工具栏中的content按钮,然后在子图中选择P300。添加一条width3curve,数据源为“ avg merge_epoch Sub001 P300目标 ”,通道为Pz

其次,添加一条curve,其颜色为蓝色 [0,0.45,0.74]width3topographDshed,数据源为“ Sub093 P300 nontarget ”,通道为Pz

然后,添加一个face opacity0.25edge opacity0,位置x = 0.196y = -2w = 0.516h = 14rect。并在curve1curve2上方对rect进行排序。

接着,添加一个line,width1line styledshed,位置X1 = 0Y 1 = -2X 2 = 0Y2 = 1.2

接下来,添加一个line,width1line styledshed,位置X1 = 0.332Y 1 = -2X 2 = 0.332Y2 = 11.3

然后,添加一个line,width1line styledshed,位置X1 = 0.5Y1 = -2X 2 = 0.5Y2 = 2.8

紧接着,在子图中选择0 ms。将数据源设置为“ avg merge_epoch Sub001 P300 Target ”,x从00head radius0.5shrink0.95,范围从 -212, 以使其与P300曲线的范围相同。对于电极,将大小设置为 8, 并标记通道 Pz

再然后,在子图中选择332 ms。将数据源设置为“ avg merge_epoch Sub001 P300 Target ”,x从0.3320.332head radius0.5shrink0.95,范围从 -212,以使其与P300曲线的范围相同。对于电极,将大小设置为 8 ,并标记通道 Pz

最后,在子图中选择500ms。将数据源设置为“ avg merge_epoch Sub001 P300 Target ”,将x设置为0.50.5head radius设置为0.5shrink0.95,范围从 -212 以使其与P300曲线的范围相同。对于电极,将大小设置为8,并标记通道Pz

步骤3之后,该图将如下图所示,

2.4 设置轴参数

首先,单击工具栏中的axis按钮,然后在子图中选择P300。并启用BoxLegend

其次,在内容的列表框中选择curve1,在figure中将其名称更改为Target。在内容的列表框中选择curve2,在figure中将其名称更改为NonTarget

接着,对于x轴,将x-lim设置为 -0.51.5 秒。启用 gridlabel,将label设置为“ Time [sec] ”。

最后,对于y轴,启用gridlabel,将label设置为“ Amp [\ muV] ”。

步骤4之后,该图将如下图所示。

3 批处理

在这一部分中,我们将对单个主题重新做时域分析。与上一教程中的逐步操作不同,本部分将使用批处理对数据进行分析。

注意: 在每步操作中,不需要点击 “Run”,需在所有操作处理完毕后,再点击 “Run” 运行。

3.1 数据导入

下载教程数据集,解压缩rawdata1.zip文件,共有三个文件,分别是sub093.eegsub093.vhdrsub093.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”。左侧显示两个选项,即 loadapply 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)”。左侧又出现了两个选项,分别是loadsegmentation

其次,单击load,然后单击add并添加数据集“ sp_filter ica chan_interp butt sel_chan sub093 ”。

接着,单击segmentation,选择事件代码S 9S 10,并将epoch开始时间和持续时间设置为 -13

3.8 重新参考

首先,单击segmentation,在批处理模块中选择 “process”- >“reference signals”->“reference ”。左侧又出现了两个选项卡,即loadreference

其次,单击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,选择TP9TP10作为新参考在左侧的列表框中,在右侧框中点击 “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 1comp 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教程:脑电数据图形绘制、批处理以及脚本生成相关推荐

  1. Letswave 教程:脑电数据预处理与叠加平均

    Letswave 教程:脑电数据预处理与叠加平均 1 实验与工具介绍 2 前期准备 2.1 letswave7安装与数据集准备 2.2 数据集导入 2.3 数据集检查 3 数据预处理 3.1 通道位置 ...

  2. letswave7中文教程1:软件安装与脑电数据导入

    目录 1.安装 2.数据集介绍 3. 数据集导入 4.数据集检查 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 Letswave是一款非常好用的神经生理信 ...

  3. letswave7中文教程2:脑电数据预处理-通道位置分配

    目录 第1步:通道位置分配 第2步:删除不良通道 第3步:滤波处理 第4步:坏电极插值 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 原始的脑电图信号是有 ...

  4. letswave7中文教程3:脑电数据预处理-ICA去除伪影

    目录 ICA/BSS的理论与模型 第5步:计算ICA矩阵 第6步:识别伪影成分 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:941473018 ICA/BSS的理论与模型 ...

  5. Python协方差矩阵处理脑电数据

    在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪声协方差矩阵,该矩阵可用于计算最小范数逆解. 诸如MNE的源估计方法需要从记录中进行噪声估计. 在本教程中,我们介绍了噪声协方差的基础知识 ...

  6. 脑电数据预处理-ICA去除伪影

    ‍‍‍‍‍‍‍‍‍‍ ICA/BSS的理论与模型 独立成分分析(ICA)是一种盲信号分离(Blind Signal Separation,BSS)方法.ICA可线性建模如下图所示. 假设X为" ...

  7. EEGLAB脑电数据预处理指导手册

    EEGLAB脑电数据预处理指导手册 1 前期准备工作 1.1 书籍 1.2 网站 1.3 公众号 2 预处理流程 2.1 准备工作 2.2 眼电去除的标准 2.3 后续整理工作 3 叨叨几句 Hell ...

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

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

  9. 脑电分析系列[MNE-Python-18]| 生成模拟原始脑电数据

    在实验中有时需要原始脑电数据来进行模拟实验,但又限于实验条件的不足,需要构造模拟的原始脑电数据. 本示例通过多次重复所需的源激活来生成原始数据. 案例介绍 # 导入工具包 import numpy a ...

最新文章

  1. 复杂多变场景下的Groovy脚本引擎实战
  2. 多个div嵌套,获取鼠标所点击的div对象
  3. html onfoucs状态事件,HTML onfocusin事件用法及代码示例
  4. Windows Server 2008 R2模板机制作(VMware Workstation)
  5. UA MATH563 概率论的数学基础1 概率空间2 可列状态空间
  6. Simulink模块之Band-Limited White Noise
  7. 声明式事务基于注解@Transactional的理解
  8. 深入理解JVM垃圾收集机制,下次面试你准备好了吗
  9. matlab中如何在图片上添加横竖线
  10. php urledcode_php慎用urldecode函数
  11. 数据--第41棵 - 图的存储结构
  12. ubuntu20.x安装 podman
  13. 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
  14. 各代iphone尺寸_iPhone12系列尺寸对比-历代iPhone机型尺寸比较
  15. java使用openoffice/libreoffice进行office转pdf
  16. 计算机网络速度慢原因,上网网速变慢的几个原因及解决方法
  17. Mac Spotlight 聚焦搜索
  18. java url 收集
  19. 金融风控中英文术语手册(银行_消费金融信贷业务)_version5
  20. 国家自然科学基金成果填写经验

热门文章

  1. 蓝魔平板i9s刷机Android,蓝魔i9s 乐蛙ROM刷机教程
  2. 个人贷款违约预测模型(逻辑回归)
  3. 03 矩阵不只是mn个数字
  4. 用python获取某年某月/(当前)的天数
  5. android:layout_alignParentLeft=true一下是什么意思
  6. vmware esxi6.x 环境下 oracle 11gR2 ASM 的raw裸映射磁盘更换为虚拟存储磁盘
  7. git报错git@gitlab.com: Permission denied
  8. 网络统考计算机二级可以用么,全国计算机二级考试(考二级能用office2019练吗)...
  9. Leetcode 77. Combinations 组合
  10. 网络控制系统仿真:Truetime2.0工具箱安装(win10 + matlab R2017b)