400-616-5551

您所在位置: 首页> 学习课程> python培训 | 如何读取eeglab示例文件.set以及.locs文件?

python培训 | 如何读取eeglab示例文件.set以及.locs文件?

发布百知教育 来源:学习课程 2019-12-04

本案例主要介绍如何读取eeglab示例文件.set以及.locs文件。

.set文件记录的是采集的信息,主要内容包括通道数,事件数,开始时间与结束时间等。

.locs文件记录的是电极位置信息。


知识点:

mne中使用mne.io.read_raw_eeglab()读取.set文件;

利用mne.channels.read_custom_montage()读取.locs文件。


read_raw_eeglab()函数介绍:



mne.io.read_raw_eeglab(input_fname,
              montage='deprecated',
               eog=(),
               preload=False, 
               uint16_codec=None,
               verbose=None)


参数解读:


input_fname:.set文件的存放路径;  
montage='deprecated':该参数已经舍弃了。在0.19版本中,它的功能可以通过set_montage方法来实现;  
eog:指定eog通道的通道名称或索引,如果设置为auto,则使用包含eog和eye的通道名称。默认情况为空元组;  
preload:类型 str或者bool 如果为True,则数据将预加载到内存中,以满足更快速的索引;  
uint16_codec:类型 str | None 允许指定读取字符数组时应用的编解码器(比如,"latin1"或者"ut


案例


import mne


import matplotlib.pyplot as plt


1. 利用mne.io.read_raw_eeglab来读取.set文件


"""

通过mne.io.read_raw_eeglab来读取.set文件

得到原始数据对象

"""

raw = mne.io.read_raw_eeglab("Eeglab_data.set",preload=False)



2. 绘制从第5s开始,5s时间窗口长的原始数据



"""绘制从第5s开始,5s时间窗口长的原始数据
start:指定开始绘制的时间duration:要绘制的时间窗口
从该图中可以看出每个通道的数据波动情况可以通过设置duration的大小来放大或缩小
这个有点类似于eeglab中,放大缩小功能。这里相同大小的窗口显示更短时间的数据,相当于eeglab中的选中数据进行放大,反之,即缩小。"""raw.plot(start=5, duration=5)plt.show()


python培训班


"""

设置duration=1,相当于放大

"""

raw.plot(start=5, duration=1)plt.show()


python培训



3. 通常raw的数据访问方式如下:

data, times = raw[picks, time_slice]


picks:是根据条件挑选出来的索引;

time_slice:时间切片


想要获取raw中所有数据,以下两种方式均可:

data,times=raw[:]

data,times=raw[:,:]



"""获取1-3秒内的EEG数据获取前5条 时间从1秒开始到3秒为止的数据raw[:5,int(sfreq*1):int(sfreq*3)]"""
sfreq=raw.info['sfreq']data,times=raw[:5,int(sfreq*1):int(sfreq*3)]plt.plot(times,data.T)plt.title("Sample channels")


python培训



4.读取.locs文件


首先查看原始数据中的通道名称:




    """
    
    打印通道名
    
    """
    
    print(raw.info['ch_names'])


    ['EEG 000', 'EEG 001', 'EEG 002', 'EEG 003', 'EEG 004', 'EEG 005', 'EEG 006', 'EEG 007', 'EEG 008', 'EEG 009', 'EEG 010', 'EEG 011', 'EEG 012', 'EEG 013', 'EEG 014', 'EEG 015', 'EEG 016', 'EEG 017', 'EEG 018', 'EEG 019', 'EEG 020', 'EEG 021', 'EEG 022', 'EEG 023', 'EEG 024', 'EEG 025', 'EEG 026', 'EEG 027', 'EEG 028', 'EEG 029', 'EEG 030', 'EEG 031']


    从上述打印的结果可以看到,原始数据中通道名称并非电极位置的命名,因此需要将其映射成电极位置名称。



    python培训


    python培训


    ['FPz', 'EOG1', 'F3', 'Fz', 'F4', 'EOG2', 'FC5', 'FC1', 'FC2', 'FC6', 'T7', 'C3', 'C4', 'Cz', 'T8', 'CP5', 'CP1', 'CP2', 'CP6', 'P7', 'P3', 'Pz', 'P4', 'P8', 'PO7', 'PO3', 'POz', 'PO4', 'PO8', 'O1', 'Oz', 'O2']




    5.绘制电极位置


    # 绘制电极位置
    
    raw.plot_sensors()
    
    plt.show()



    python培训



    """
    
    绘制通道位置图,并对应位置上显示通道名称
    
    """
    
    layout_from_raw = mne.channels.make_eeg_layout(raw.info)
    
    layout_from_raw.plot()plt.show()


    python培训班



    """
    
    上述效果也可通过
    
    mne.channels.find_layout(raw.info, ch_type='eeg')
    
    来读取
    
    """
    
    layout_from_raw =mne.channels.find_layout(raw.info, ch_type='eeg')l
    
    ayout_from_raw.plot()
    
    plt.show()



    python培训班

    6.绘制各通道的功率谱密度


    """

    绘制各通道的功率谱密度
    
    """
    
    raw.plot_psd()plt.show()

    python培训


    """
    
    绘制采样频率在30Hz到70Hz之间,且只考虑40s到50s之间的所有通道的PSD
    
    """
    
    raw.plot_psd(fmin=30, fmax=70, tmin=40,tmax=50.0,spatial_colors=True)plt.show()


    python培训班



    """
    
    绘制采样频率在30Hz到70Hz之间,且只考虑40s到50s之间的所有通道的平均PSD
    
    """
    
    raw.plot_psd(fmin=30, fmax=70, tmin=40,tmax=50.0,average=True)plt.show()


    python培训


    python培训班:http://www.baizhiedu.com/python2019


    上一篇:python培训班 | 图元的基本操作(隔离、移动、旋转、删除)

    下一篇:0基础学UI设计,报名线上UI班还是线下UI培训班好?

    相关推荐

    关闭

    立即申请

    www.baizhiedu.com