在本文中,我们提出一个基于MPI并行框架对于大型的数据集提取EEG信号的功率谱特性,提高大脑信号处理的速度。目前,韦尔奇方法已广泛用于估计功率谱。然而,传统的韦尔奇方法需要大量的时间特别是大型数据集。针对这一点,我们添加了MPI在传统韦尔奇方法和发展成一个可重用的主从并行框架。只要EEG数据的格式转换成特定格式的文本文件,可以快速提取功率谱特性的并行框架。提出了并行框架,EEG信号通道分为记录
脑电图是一个记录大脑电活动的信号,这是收集从头皮到电极。脑电图有重要实用价值的应用在医疗、军事、体育、和情报领域,已被广泛认可的所有人员。到目前为止,科学家们从不同的学科在该领域取得了良好的效果。例如,科学家从美国Wadsworth中心帮助瘫痪的人们通过信号输入36个字符,而不是用自己的手指。这些信号对应于特定的大脑活动。在中国,来自清华大学的科学家设计了一个自动拨号系统。实时的系统连接到计算机拨号解释大脑的思维方式所对应的数字(
EEG信号的模式识别的步骤。
为了记录EEG信号,一些需要被放置在头皮上的电极。传统的设备通常有20电极。然而,最近,EEG设备已经使用多达256个电极,如图
(一)256 -电极装置,(b)可穿戴的脑电图设备,和(c)的脑电图设备禁用。
目前,许多方法用于计算的PSD信号。韦尔奇的方法是最受欢迎的之一,用户在其中计算EEG信号的PSD Python或Matlab环境。Scipy.signal的函数。welch is used in Python and pwelch is used in Matlab. In case of small amount of data, PSD of the EEG signal can be quickly obtained by those two functions. But, from Figures
并行方法可以提高处理速度,但需要技术支持分布式计算。现在,一般有两个不同的框架进行大数据分析。一个是Apache火花,另一种是OpenMP / MPI。比较了两种计算框架和分析文献[
本文的主要贡献有三点:
根据韦尔奇算法的原理,我们提出一种并行韦尔奇算法的框架,PFwelch计算PSD的脑电图。PFwelch的架构是基于主从模式。EEG信号记录下每个通道分为
使用了一个中间文件的指定格式。世界上有很多种类的脑电图数据集;不同的数据集有不同的文件格式。为了提出并行处理任何类型的EEG数据的框架中,脑电图数据需要转化成中间文件。中间文件之间的关系和并行框架如图
比较实验设计。在实验阶段,我们首先运行函数pwelch PSD特征的提取在Matlab环境中脑电图信号作为基准的比较和随后在Ubuntu上运行PFwelch平台。结果表明,PFwelch pwelch相同的结果作为函数。在这之后,我们运行Python函数Scipy.signal。韦尔奇与PFwelch在相同的环境中。实验结果表明,该并行使用Python框架是七倍。
中间文件和并行框架之间的关系。
本文组织如下。部分
功率谱密度(PSD)展品如何权力是包含在一个信号在频域。韦尔奇的方法和多窗口的方法显示最佳的性能在PSD估计(
韦尔奇PSD算法。
从图
输入信号
分割的过程如图
插图的信号分割。
采样长度之间的关系
一个光滑的窗口
汉明窗与Matlab在时间和频率域。
窗函数的目的是为了防止频谱泄漏(
(一)原始信号的频谱泄漏和(b)有窗的信号。
从公式(
傅里叶变换计算每个窗口的部分。这个公式是
每个窗口的部分的周期图是通过使用以下公式计算:
所以,
最后,我们可以得到的PSD韦尔奇方法的平均周期图,也就是说,
为了设计一个良好的并行程序,有必要了解传统串行算法。韦尔奇的根据以上描述方法,串行算法韦尔奇方法的算法
输入:
EEG_file:脑电图信号文件
韦尔奇welch_len:你想要的长度
seg_len:每段的长度
Fs:采样率
输出:
Wel_psd:韦尔奇PSD的估计
初始化:over_len = seg_len / 2; / /连续长度之间的重叠部分
数据从EEG_file读取并存储到易行的韦尔奇(
计算有多少部分:
指数的范围(0,seg_len)
创建汉明窗赢得[
指数+ +;
结束了
seg_start的范围(1,x_len-seg_len + 1)
seg_end = seg_start + seg_len−1;/ / seg_start seg_end是每个数据段的开始点和结束点,分别。
汉明窗的数据应用韦尔奇(
为窗口的数据做FFT。结果存储在变量fft_x;
计算fft_x的振幅的平方。结果存储在变量pgram;
求和功率谱Pxy + = pgram;
start_seg + = seg_len-overlap;
结束了
Wel_psd = Pxy / (
根据韦尔奇的串行算法的步骤方法2.2节中,可以看出,该算法可以实现与MPI并行。并行算法是主从结构的显示如图
PFWelch的程序结构。
PFWelch算法部分的结构
输入:
EEG_file:脑电图信号文件
韦尔奇welch_len:你想要的长度
seg_len:每段的长度
Fs:采样率
输出:
Wel_psd:韦尔奇PSD的估计
开始
初始化:MPI_Init;
排名←MPI_Comm_rank;
大小←MPI_Comm_size;
overlap_len = seg_len / 2;
读EEG_file
从EEG_file存储数据到易行的韦尔奇(
计算有多少部分:
节点= 1大小par-do / /并行过程
采用汉明窗韦尔奇(
/ /
为窗口的数据做FFT。结果存储在变量fft_x;
计算fft_x的振幅的平方。结果存储在变量pgram;
求和功率谱Pxy + = pgram;
结束了
如果(排名= = 0)/ /主进程
从每一个过程和计算接收Pxy平均周期图。
/ /其他奴隶的过程
发送Pxy掌握的过程
结束
并行程序的关键是如何与每个节点(
任务分配。
| 标签的部分 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|||||||
| 标签的节点 | 0 | 1 | 2 | 3 | 0 | 1 | 2 |
根据表
在实验中,数据从网站下载
有三个不同的表演需要测试:
测试环境的硬件如表所示
测试环境的硬件。
| 节点 | CPU | 内存 | 类型 |
|---|---|---|---|
| 4 | 英特尔(R)的核心(TM) i5 - 4460 | 8 GB | 台式电脑 |
软件的测试环境。
| 操作系统 | 并行环境 | Matlab |
|---|---|---|
| Ubuntu 16.04 | C + Mpich 3.3.1 Ubuntu | R2018a Win10上 |
PSD计算一个脑电图频道是在Matlab进行使用韦尔奇函数,即pwelch(数据、汉明(64),32岁,64年,256年)。pwelch参数意味着样本数据分成部分,每个部分都有64数据点,相邻的重叠部分是32,采用汉明窗,采样率为256 Hz。图
韦尔奇导致Matlab。
我们做了相同的测试在并行框架。PSD结果存储在文本文件中可以访问Microsoft Excel和图所示
PFWelch的结果。
对比数据
一个脑电图文件的时间成本。
| 段 | 节点 | ||||
|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | Python | |
| 7 | 0.0543 | 0.0413 | 0.0382 | 0.0365 | 0.228 |
| 3 | 0.075 | 0.06 | 0.056 | 0.056 | 0.235 |
| 15 | 0.064 | 0.054 | 0.05 | 0.047 | 0.224 |
其次,我们使用不同的节点数量7段计算与PFWelch脑电图的PSD文件。时间成本记录在表中
时间成本的脑电图文件。
| 节点 | 1 | 2 | 3 | 4 | Python |
|
|
|||||
| 时间成本(s) | 478.778 | 354.008 | 342.715 | 337.966 | 2451年 |
加速可以评估PFWelch的时间性能。加速的定义是加速= Ts / Tp, Ts表明串行操作的时间和Tp表明并行操作的时间。加速效果如图
PFWelch加速。
对于一个脑电图文件,PFWelch显示最佳的性能当信号分成7段。这是因为它的最大加速时的节点数量是4。因此,我们将信号分成7段计算所有脑电图的PSD文件在图
段的数量和速度之间的关系。
可以看出,通过增加节点的数量,加速提高。但是,仅仅增加节点的数量不能提高加速。从图
目前,虽然有几种方法可以从EEG信号中提取特征,PSD仍然是最重要的一个方法。但是,在处理大量的脑电图数据,有必要提高PSD的计算速度。因此,并行框架提出了用于解决问题的长时间从脑电图数据集提取PSD的特点在大数据环境。该框架是基于C + MPI语言和主从方式完成的。与传统的串行韦尔奇方法相比,这个框架将信号划分为
由于MPI的强大功能,该框架不仅可以部署在集群上而且在台式电脑,方便用户。实验结果也证实,该框架是正确的,有效的,具有良好的实用价值。它可以应用于提取各种各样的脑电图数据集稍加修改。研究人员感兴趣的PFWelch可以下载源代码
使用的所有数据在我们的研究中可以访问
作者宣称没有利益冲突。
这项工作是由湖南省教育科学研究项目(没有。17 a148),中国国家自然科学基金(61673316和61673316号),和湖南省自然科学基金(没有。S2019JJSSLH0130)。