• 脑电眼动数据批处理脚本,基于EEGLAB和EYE-EEG


    EYE-EEG是可以联合分析脑电和眼动数据,可以让我们更好地去除眼动相关伪迹。单个数据的处理方法可以参考:

    • 官网: https://www.eyetracking-eeg.org/
    • 陈锐老师的文章:https://blog.csdn.net/craig_cc/article/details/105561358
      这篇文章主要介绍使用matlab对多个数据进行批处理的脚本。使用该脚本前,请确保以安装matlab, eeglab和eye-eeg工具。
      注意:使用批处理脚本前,要先处理一下单个被试的数据体验一下,因为下面许多函数的参数,要根据不同的数据来填写。
    clear;clc;
    %%
    dataPath='F:\eeg_script\data\fixation';
    Subjects = {'sub28', 'sub29', 'sub30','sub31', 'sub32', 'sub33', 'sub34', 'sub35'};
    
    filePath={'eye','eeg'};
    savePath = 'F:\Ye\eeg_script\outData\fixation\preSep';
    
    
    
    
    %% 循环
    for i = 1: length(Subjects)
        sub = Subjects{i};
        disp([sub,' preprocessing......'])   
        %% eeg和eye文件夹
            
        eye_path=cell2mat(fullfile(dataPath,string(sub),filePath{1}));
        eeg_path=cell2mat(fullfile(dataPath,string(sub),filePath{2}));
    
    
        %% 导入原始脑电数据
        % 这里导入的是NeuroScan的.cdt数据;不同的脑电文件请更换方法
        eeg_data = dir(fullfile(eeg_path, '*.cdt'));
        [ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
        EEG = loadcurry(fullfile(eeg_path, eeg_data.name), 'KeepTriggerChannel', 'True', 'CurryLocations', 'False');
        EEG = eeg_checkset( EEG );
        
        %% 将眼动数据添加到脑电中
        % 基于EyeLink产生的眼动文件:使用EDF Converter把.edf文件转为.asc文件
        % EDF Converter可以在EyeLink下载
        eye_data = dir(fullfile(eye_path,'*.asc'));  % 眼动原始文件
        ET = parseeyelink(fullfile(eye_path, eye_data.name), fullfile(eye_path, 'eye.mat'), 'MYKEYWORD');  %%转为眼动文件数据格式
        EEG = pop_importeyetracker(EEG,fullfile(eye_path, 'eye.mat'),[200 100] ,[1:7] ,{'TIME','L-GAZE-X','L-GAZE-Y','L-AREA','R-GAZE-X','R-GAZE-Y','R-AREA'},0,1,0,1,4);  %添加哪些数据
        EEG = eeg_checkset( EEG );
    
        %% 根据眼动位置拒绝眼动数据;检测眼跳和注视,并添加到eeg的事件中
        EEG = pop_rej_eyecontin(EEG,[69 70 72 73] ,[1 1 1 1] ,[1280 1024 1280 1024] ,100,2);  % 选择眼动数据电极,不同数据的编号可以不同,注意更换;[1280 1024]代表分辨率
        EEG = pop_detecteyemovements(EEG,[69 70] ,[72 73] ,6,4,0.030215,1,0,50,1,1,1,1);  % 选择电极;计算视角;
        EEG = eeg_checkset( EEG );
    
        %% 滤波和重参考
        EEG = applytochannels(EEG, [1:67] ,' pop_eegfiltnew(EEG, ''locutoff'',1,''plotfreqz'',1);');
        EEG = applytochannels(EEG, [1:67] ,' pop_eegfiltnew(EEG, ''hicutoff'',30,''plotfreqz'',1);');
        EEG = eeg_checkset( EEG );
        EEG = pop_reref( EEG, [33 43] );  %这里选择的是M1和M2,注意要换成你需要的参考电极
        EEG = eeg_checkset( EEG );
        
        %% 剔除无用电极
        EEG = pop_select( EEG, 'nochannel',{'HEO','VEO','TRIGGER','TIME'});  % 剔除眼电,注意按你的数据更换
        EEG = eeg_checkset( EEG );
        
    
    
        %% ICA和去眼动伪迹
        EEG = pop_runica(EEG, 'icatype', 'runica', 'extended',1,'interrupt','on','pca',68);  %选择多少通道跑ICA,注意根据你的数据更换
        EEG = eeg_checkset( EEG );
        [EEG vartable] = pop_eyetrackerica(EEG,'saccade','fixation',[10 0] ,1.1,3,1,1);
        EEG = eeg_checkset( EEG );
    
        % 剔除眼动数据电极
        EEG = pop_select( EEG, 'nochannel',{'L-GAZE-X','L-GAZE-Y','L-AREA','R-GAZE-X','R-GAZE-Y','R-AREA'});
    
        
        %% 保存数据
        saveName = [sub, '.set'];
        EEG = pop_saveset(EEG, 'filename',saveName,'filepath',savePath);
    
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    以上就是批处理脚本。还要强调一下,批处理前要跑一下单个被试。

  • 相关阅读:
    1. 关于pytorch中的数据操作的广播机制
    浏览器内核小知识
    第2-3-2章 环境搭建-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    RK3588开发笔记-USB3.0接口调试
    [问题]springboot启动时报Could not connect to SMTP host
    A Survey on Explainable Artificial Intelligence (XAI): Toward Medical XAI学习笔记
    基于SSH的计算机在线测评考试系统
    windows10 使用WSL2安装原生docker
    [题] 最长连续不重复子序列
    javaweb:mybatis:mapper(sql映射+代理开发+配置文件之设置别名、多环境配置、顺序+注解开发)
  • 原文地址:https://blog.csdn.net/zjjoebloggs/article/details/126346626