文献阅读
FieldTrip教程
书籍
ChatWithOpenAI
DeepLabCut
1️⃣预处理 - 读取连续的 EEG 和 MEG 数据
type
status
date
slug
summary
tags
category
icon
password
介绍
ft_preprocessing 的一个方便用途是将连续数据完全读取到内存中。如果您的数据集相对较小并且您的计算机有足够的内存来一次将所有数据保存在内存中,那么这是可行的。以连续格式预处理数据的优势在于它可以帮助防止过滤伪影,它可以提高 ICA 分解的质量,并更好地概述所有数据特征,包括在分段数据中可能更难以识别的伪影.
如果您的实验由一系列试次组成,您可能还想从分割数据开始,只阅读感兴趣的试次。这在预处理 - 分割和读取基于试次的 EEG 和 MEG 数据教程中有所描述。
背景
使用这种方法,您可以将文件中的所有数据读入内存、应用过滤器、重参考(在 EEG 的情况下)、使用 ICA 识别和减去伪影,然后将数据切割成感兴趣的片段或试次。
步骤
采取以下步骤来读取数据、应用过滤器和引用数据(在 EEG 的情况下),并可选择围绕事件或触发器选择感兴趣的数据段,或者通过将连续数据切割成方便的恒定长度段。
- 使用 ft_preprocessing读取 EEG 通道的数据,应用过滤器并重新参考链接的乳突
- 使用 ft_preprocessing读取水平和垂直 EOG 通道的数据,并计算水平和垂直双极 EOG 推导
- 使用 ft_appenddata 将 EEG 和 EOG 组合成一个数据表示
- 使用 ft_definetrial 根据触发事件确定感兴趣的数据片段
- 使用 ft_redefinetrial 将连续数据分割成试次
- 使用 ft_redefinetrial 将连续数据分割成一秒钟的片段
本教程中使用的数据集
在本教程中,我们将使用两个数据集,一个包含 EEG 数据,一个包含 MEG 数据。
SubjectEEG.zip 的EEG 数据集由 Irina Siminova 在一项调查以图片、视觉显示的文本或听觉呈现的单词形式呈现的刺激的语义处理的研究中获得。使用 64 通道 BrainProducts BrainAmp EEG 放大器从放置在电极帽中的 60 个头皮电极获取数据,一个电极放置在右眼下方;信号 “EOGv” 和 “EOGh” 是在采集后使用重新参考计算的。在采集过程中,所有通道均以左乳突为参考,放置在耳垂处的电极用作地面。通道 1-60 对应于位于头部的电极,但位于右侧乳突的通道 53 除外。通道 61、62、63 根本不连接到电极。通道 64 连接到放置在左眼下方的电极。因此,我们有 62 个感兴趣的频道:60 来自头部 + eogh + eogv。在这里可以找到有关实验和数据的更多详细信息。
Subject01.zip MEG 数据集是林王在语义一致和不一致句子的语言研究中获得的。实验中使用了三种类型的句子:完全一致 (FC)、完全不一致 (FIC) 和最初一致 (IC)。对于三个条件中的每一个,每个条件都有 87 次试验,以及一组 87 个填充句(此处未使用)。请注意,数据最初是作为 3 秒触发锁定 epoch 获取并写入磁盘的,epoch之间不连续;因此,不能将此数据视为连续数据。有关实验和数据的更多详细信息,请参见此处。
将连续的EEG数据读入内存
预处理数据并将其读入内存的最简单方法是调用ft_preprocessing函数,仅将数据集作为配置参数。
这会将文件中的数据作为一个长的连续段读取,而无需任何额外的过滤。结果数据表示为一个非常长的试次。要绘制其中一个通道中的电位,您可以简单地使用 MATLAB 绘图函数。
将连续的 MEG 数据读入内存
如果磁盘上的数据以分段或epoched格式存储,即文件格式已经反映了实验中的试次,则调用 ft_preprocessing 将返回正在读取并分段到原始试次中的数据。
这个分段的 MEG 数据集包含 266 个试验。以下示例显示了如何绘制试验子集中的数据。
如果你想强制 epoched 数据被解释为连续数据,你可以使用 cfg.continuous 选项,像这样:
如果放大并仔细查看 SCLK01 通道,您会发现每 3 秒就有一次小跳跃。这是由于数据在磁盘上是不连续的,即只有每个刺激周围的 3 秒段存储在磁盘上,试次之间的数据未存储。因此,MEG 通道每 3 秒也会有一次小跳跃,因此不应将此特定数据集解释为连续记录。许多其他 CTF 记录存储在磁盘上,每个数据段为 10 秒;这些可以解释为连续的,因为长段之间没有间隙。
预处理、过滤和重新引用
为了预处理这个 EEG 数据集,必须考虑参考点的选择。在采集过程中,EEG 放大器的参考通道连接到左侧乳突。我们想使用链接乳突参考(也称为平均乳突参考)来分析此数据。此外,通过计算水平和垂直放置在眼睛周围的电极的双极导数,可以促进眼球运动和眨眼伪影的检测。
在 BrainAmp Recorder 软件中配置的通道名称对应于电极帽中位置的标签。这些电极位置编号为 1 到 60,相应的 ASCII 字符串通道名称为 “1”、“2”、...“60”。通道 53 对应于右乳突。由于左乳突在采集中用作参考,因此数据文件中没有表示(因为根据定义,该电极的电压为零)。
为了保持一致,我们将位于右侧乳突的名称为 “53” 的通道重命名为 “M2”
要丢弃我们不再需要的频道,我们可以
如果您查看数据,会发现它包含一个试次。那个单一的试验代表了完整的连续记录,因此它大约有一个小时长。
随后我们读取水平 EOG 的数据
在此数据表示中生成的通道 51 引用自身,这意味着它包含零值。这可以通过检查
为了方便起见,我们将通道 60 重命名为 EOGH,并再次使用 ft_preprocessing 函数来选择水平 EOG 通道并丢弃伪通道。
垂直 EOG 的处理类似,使用通道 50 和 64 之间的差异作为双极 EOG
现在我们已经将 EEG 数据重新引用到链接的乳突和水平和垂直双极 EOG,我们可以使用以下方法将三个原始数据结构组合成一个表示:
在上面的示例中,没有对数据应用过滤器。可以在初始预处理 / 读取期间对数据应用过滤器。之后也可以通过将数据作为第二个输入参数调用 ft_preprocessing 函数来应用过滤器。如果要将不同的预处理选项(例如 EEG 通道的过滤器、EMG 通道的校正、重新引用)应用于不同的通道,您应该使用每种通道类型的所需选项调用 ft_preprocessing,然后附加数据不同的通道类型到一个原始数据结构中。
将连续数据分割成试次
在读取和通道特定预处理之后,您可以基于触发代码[trigger code]识别感兴趣的数据片段,并将连续数据分段为试次。让我们首先看看数据集中存在的不同触发代码
这将在屏幕上显示事件类型和值。
触发代码 S111、S121、S131、S141 分别对应 4 种不同动物呈现的图片。触发代码 S151、S161、S171、S181 对应 4 种不同工具的呈现图片。我们可以选择动物和工具类别的数据
ft_definetrial 产生的输出配置包含作为 Nx3 矩阵的试次定义,其中包含起始采样点、结束采样点和每个试次的偏移量。原则上,您现在可以使用此配置从磁盘上的原始数据文件中读取这些片段,但由于我们已经在内存中拥有完整的连续数据,我们将使用 ft_redefinetrial 将这些试次从连续数据段中剪切出来。
随后,我们可以使用 ft_rejectvisual 进行伪影检测以删除带有伪影的试次,并使用 ft_timelockanalysis 对试次进行平均以获得 ERP,或使用 ft_freqanalysis 获得两种条件下数据的平均时频表示。如果您使用带有选项 cfg.keeptrials='yes' 的 ft_timelockanalysis 或 ft_frequencyanalysis,您随后可以使用 ft_timelockstatistics 或 ft_freqstatistics 对这些刺激中的动物-工具对比进行统计比较。
将连续数据分割成一秒钟的片段
对于没有trigger的连续数据的处理,将数据切割成恒定长度的片段很方便。这可以在从磁盘读取数据时完成,也可以在完整的连续数据进入内存后完成。
以下示例展示了如何一次性读取和分段数据。
以下示例显示如何首先将数据作为单个连续段读取,然后将其切割成一秒钟的片段或段。
建议进一步阅读
- Twikoo
Last update: 2023-04-16
FieldTrip教程更新学习中……
DeepLabCut教程已更新。