リンク 検索 メニュー 展開 ドキュメント

EEGLABの歴史

このセクションは、少なくとも基礎を学んだユーザーのために意図されています MATLABのWeb制作とEEGLABの制作 データの分析を自動化および/またはカスタマイズするため。

目次
  • トピックス

EEGLAB MATLAB は、

EEGLAB は、MATLAB のコレクションのコレクションです。 スタッフ EEGLAB MATLABのコンセプト これらの関数をスクリプトファイルまたはコマンドから呼び出す EEGLAB GUI は、EEGLAB GUI で、 EEGLABの特長 歴史メカニズムは、データセットで実行されるすべての操作の追跡を維持します EEGLABの特長 メニューベースでスクリプトベースのコンピューティング ユーザーが実行できるようにします。 サンプルデータセットで説明信号処理を行い、 EEGLAB の Windows で発行されたコマンドは、 テキストエディタを使用して変更することができます。

MATLABは、EEGLABの分析の実行をしています。 1 つ以上のデータセットの処理を大幅自動化します。 なので 高度な分析は、多くのパラメータの選択肢を伴って、かなり必要です 長い計算、それは頻繁に習慣を書くことは便利です スクリプト、特に複数のデータセットを同じ方法で処理するか、または 複数の方法で1つのデータセットを処理する。

EEGLABデータ構造(EEG)とサブ構造(EEGLAB) EEG.dataEEG.eventEEG.ureventEEG.epochEEG.chanlocsEEG.historyは必須です。 チュートリアルの例は、予約された変数名の一部を議論します EEGLABおよび使用:

  • EEG: 現在のEEGデータセット
  • AllEEG: 全てを 記憶する
  • 現在のデータセット

いつでも参照できます EEGLAB データ構造 詳しくはこちら EEG構造について EEGLABの特徴 EEGLABの学習方法、およびストリーミング方法。

EEGLABの「データセット履歴」との違いは2つあります。 「セッション歴」 つまり「セッション履歴」は、すべて保存されます。 現在の EEGLAB は、 セッション。 対照的に、「データセット履歴」は、その関数呼び出しのみを保存します。 現在のデータセットを修正しました。 セッション履歴は、期間中のみご利用いただけます。 EEGLAB の 最近のコメント データセット履歴が保存されるように、新しいセッション履歴を作成します。 EEG.history 保存時に EEG のデータセット構造のフィールド セッション終了時のデータセット。 そのため、いつか回収されます。 現在のセッションの最後にデータセットを保存します)。

EEGLABフォーラム

このセクションでは、歴史の活用方法を説明します スクリプトを書くための現在のデータセットの変更。

EEGLAB データセットをロードし、データウィンドウを転送します。

  • 電話番号 ファイル → データの読み込みEEGLABの「sample_data」フォルダに「eeglab_data.set」と書いてあります。
  • メニュー項目を使用する Plot → チャンネルデータ(有料) このポップアップ eegplot 下にデータをスクロールする。

こちら

メニュー項目 ファイル → 履歴スクリプト → セッション履歴スクリプトを保存 コマンド テンプレート スクリプトファイル。 ファイルを現在のディレクトリに保存するか、 MATLAB パスのディレクトリ (英語) >> パス セッションコマンドを保存する doitagain.m(必須) MATLABでは、.m ファイルとして保存します。

doitagain.m は、 たとえば オープン MATLABのグラフィカルインターフェイスのボタンで開く。

% EEGLAB history file generated on the 20-Dec-2020
% ------------------------------------------------
[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
EEG = pop_loadset('filename','eeglab_data.set','filepath','/data/matlab/eeglab/sample_data/');
[ALLEEG, EEG, CURRENTSET] = eeg_store( ALLEEG, EEG, 0 );
EEG = eeg_checkset( EEG );
pop_eegplot( EEG, 1, 1, 1);
eeglab redraw;

最初の2行はコメントです。 続いて6コマンドを実行します。

  • EEGLAB は、
  • 2番目のコマンドは、チュートリアルデータセットを読み込む
  • EEGLABメモリにデータをセットする
  • 4番目のコマンドは、データセットの一貫性をチェックします
  • 第5コマンドはデータをプロットする
  • 第6回は、EEGLABのグラフィカルインターフェイス(現データセットが更新されます)が更新されます。

>> eeglab 再考 メインのグラフィックインターフェイスが確実になるように、最後に追加されました。 データセットが処理された後更新される。

今すぐプレス Run MATLABのボタンです。 テキストが作成されます。 テキストが実行されます。 ファイル → 履歴スクリプト → スクリプトを実行 このメニュー項目は、MATLAB です。 グラフィカル は、EEGLAB のコンパイルを受け付けています。 また、MATLAB では、以下の手順を実行できます。

doitagain

EEGLABは、EEGLABを運営しています。 プロフィール 別のデータセット 現在のデータセットを処理するために使用した同じコマンドを使用して、試します doitagain.m は、データセットで行います。 再びスクリプトを実行します。

EEGLAB pop_ 関数は、EEGLAB pop_ 関数の呼び出しをします。 EEGLABの特徴 EEGLAB は、

詳細については、 MATLABは、以下のとおりです。 参照 pop_loadset.m ヘルプ → EEGLAB 関数 → インタラクティブなポップアップ関数 または EEGLABメニュー eeg_store.mの、ビア → EEGLAB → 管理者機能以下は、MATLAB にインストールします。

help pop_loadset
help eeg_store

EEGLABデータセット

EEGLAB、現時点では、 変数 EEG は EEGLAB が MATLAB 構造で、保存されます。 データセットに関する情報 データセット名と filename, チャンネル数と場所, サンプリング 料金、試行回数、各イベントに関する情報 トライアル/エポック、データ自体など。 完了のため EEG フィールド情報と関連情報 EEGLAB データ構造 コンテンツ EEG構造のフィールドは、EEG.fieldnameの構成要素です。 MATLABでは、 EEG.nbchan* を入力 現在のデータセットのチャンネル数を返します。

EEGLAB は、EEGLAB のパートナーです。 メニュー 現在のEEGデータセットは、EEG.history です。 履歴フィールドの内容には、その関数呼び出しを含む 現在のデータセットを修正し、関数をプロットする呼び出し。

EEG.historyは、 EEGLABでは、バイナリデータセット(for)をインポートします。 インスタンス, TEST.CNT) 以下のメニュー項目を使用しました。

  1. メニュー項目を使用する ファイル → インポートデータ → EEGLAB関数とプラグイン → Neuroscan .CNT ファイルから ファイルをインポートする(すべてのデフォルトを使用する)
  2. メニュー項目を使用する ツール → サンプリング速度の変更 サンプリングを250に Hz は、すべてのデフォルトで新しいデータセットに
  3. メニュー項目を使用する 基本のFIRをクリアする 1 Hz のハイパスフィルタ
  4. メニュー項目を使用する Plot → チャンネルデータ(有料) データの視覚化

EEG.historyについて コマンドライン 次のテキストを取得する必要があります。

EEG.history

ans =
     EEG.etc.eeglabvers = '2020.0'; % this tracks which version of EEGLAB is being used, you may ignore it
     EEG = pop_loadcnt('/Users/arno/Downloads/TEST.CNT' , 'dataformat', 'auto', 'memmapfile', '');
     EEG = eeg_checkset( EEG );
     EEG = pop_resample( EEG, 250);
     EEG = eeg_checkset( EEG );
     EEG = pop_eegfiltnew(EEG, 'locutoff',1,'plotfreqz',1);
     EEG = eeg_checkset( EEG )

また、メニューを選択することで、現在のデータセット履歴を保存できます。 アイテム ファイル → 履歴を保存 → データセット履歴スクリプトを保存.

保存する session の履歴 EEGLAB 多重データセット変更が始まります。 EEG.historyは、現在のデータセットの変更のみとなります。

。 メニューを選択することにより、データセットに切り替える(元の連続データセット) アイテム データセット → データセット 1, と入力します。 >> EEG.history(以下に示す)、 最後の4を除いて上記のコマンド。 データセット1はメモリに保存されたコピーです データセットが読み込まれた後。 データセット 3 データセットから派生するので、すべての歴史を継承 それに適用される変更。

EEG.history

ans =
     EEG.etc.eeglabvers = '2020.0'; % this tracks which version of EEGLAB is being used, you may ignore it
     EEG = pop_loadcnt('/Users/arno/Downloads/TEST.CNT' , 'dataformat', 'auto', 'memmapfile', '');
     EEG = eeg_checkset( EEG );

選択の後でプロセスを繰り返す データセット → データセット 2、私達は得ます

EEG.history

ans =
     EEG.etc.eeglabvers = '2020.0'; % this tracks which version of EEGLAB is being used, you may ignore it
     EEG = pop_loadcnt('/Users/arno/Downloads/TEST.CNT' , 'dataformat', 'auto', 'memmapfile', '');
     EEG = eeg_checkset( EEG );
     EEG = pop_resample( EEG, 250);
     EEG = eeg_checkset( EEG );

そのため、データセットを繰り返し読み込むと、 繰り返しロードコマンドをデータセット履歴にしたい。

EEG.historyのコマンドは、 データセット(例えば、複数の被験者から)と同一を申請したい EEG.history は、 EEGLAB を運営しています。 例えば、新しいデータセットがあれば、同じように処理したい 最近のデータセット EEGLAB に、>> EEG.history では、新しいデータセットで実行します。 EEGLAB は、 MATLABは、

具体的に、最初に処理するために データセットは、EEGLABのグラフィックをそのまま処理します。 同様のデータセットは、最初に履歴をコピーまたは保存するだけです。 テキストファイルへ 例: doitagain.m は、別のデータセットをロードして実行します。 MATLAB のファイル doitagain.m は、通常、現在のMATLAB のパスです。 現在の作業ディレクトリを含みます。 ヘルプメッセージを読む MATLAB の機能 path.maddpath.m は MATLAB です。 パス。 ステップバイステップの手順は以下の通りです。

  1. EEGLABに任せる
  2. 最初にMATLABメニュー データセット。
  3. >>>EEG.history のコマンドをコピーします。 データ処理コマンド。
  4. EEGLABメニューへ MATLAB コマンド で 新しいデータセットで。
  5. 最後のデータセットが処理されるまで、このように進みます。

より高度なスクリプト例を以下に提示します。 セクション。

データセット履歴は、セッション履歴よりも使いやすいことが多い データセットを操作するためのすべてのコマンドは含まないので。

EEGLAB ウィンドウを閉じる

EEGデータセット EEGLAB は、 以下の2つのコマンドのいずれかを実行してください。

  • EEGLABウィンドウが実行中の場合、タイプ:
    eeglab redraw;
    

  • EEGLAB
    [ALLEEG EEG CURRENTSET] = eeg_store(ALLEEG, EEG, CURRENTSET);
    eeglab redraw;
    

新しいデータセットを作成するには、以下を入力します。

[ALLEEG EEG CURRENTSET] = eeg_store(ALLEEG, EEG);
eeglab redraw;

EEGLABウィンドウで変更する

EEGLABデータ構造

EEGLAB MATLABのデータ構造は2つあります。EEGALLEEGALLEEGは、現在進行中のデータセットです。 EEGLAB では、EEGLAB で勉強しています。 処理中のデータセットに関する情報。 詳細はこちら EEGLAB データ構造 詳細については、.

。 多岐に渡る 現在の EEGLAB のセッションは、 eegh (履歴) コマンド。

eegh

MATLAB では、MATLAB では、EEGLAB のセッションを出力します。 ラインウィンドウ。 ファイル → データの読み込み で EEGLAB の「sample_data」のフォルダにある「eeglab_data.set」のチュートリアルファイルを開くなど。 、入力 eegh の コマンドラインは、次のテキストを返す必要があります。

[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
EEG = pop_loadset( 'eeglab_data.set', '/matlab/eeglab/sample_data');
[ALLEEG EEG CURRENTSET] = eeg_store(ALLEEG, EEG);

最初のコマンド (eeglab.mの) EEGLABは、初期化 EEGLAB 変数を出力する。 対象外 変数を継承する、EEGLAB関数() は、 eeglab.mの 呼び出しは他の何も変更しません MATLABワークスペース(EEGLABグローバル変数)pop_loadset.m 関数) データセットを EEG およびeeg_store.mの) ストア ALLEEGファイルデータセット

前のセクションで示されているスクリプトの種類は、戻ってくる可能性があり、 EEGLABのグラフィックとMATLABのコラボレーションで ALLEEGが変更されました。 EEG追加または直接変更 EEG は、MATLAB のファイルから構成されます。 簡単なルールを尊重する必要があります。

複数のデータセットを EEGLABオプション ファイル → 環境設定 メニュー項目(必須項目)、すべての現在の EEGLAB は、 構造のALLEEG、で保存するeノート。 変更されたEEGデータセットをALLEEGにコピーしてください。

を変更 * * 新しいデータセットは、単にタイプするかもしれません:

ALLEEG(2) = EEG;
CURRENTSET = 2;

新しいデータセットは過去のものとは内部的に一貫しているかもしれません。 しかし、コマンドを使用する方が良い eeg_store.mの、広範囲を実行します。 変更されたデータセットを保存する前に、データセットの一貫性をチェックします。 次のコマンドを使用して、新しいデータセットをデータセットに設定します。 番号2

[ALLEEG EEG] = eeg_store(ALLEEG, EEG, 2);

または

[ALLEEG EEG CURRENTSET] = eeg_store(ALLEEG, EEG);

次の空きスペースで新しいデータセットを作成する ALLEEG 変数。データセットは、 変数 CURRENTSET dataset 2 は、最後のコマンド (above) は、 EEGLAB ウィンドウが開きます。 コマンド: >> eeglab 再配置 *ALLEEGは、 pop_newset.m 関数 このコマンドは、広範な機能を実行します。 データセットの一貫性は、より有用な高度なオプションを持っています。 蓄積された変更タイプで現在のデータセットを変更します。

[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET,'overwrite', 'on');

変更された構造を保持するために新しいデータセットを作成する場合は、 使用:

[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET);

CURRENTSET は新しい番号セットです。 EEGLABは、 注意: EEG 現在データセットのみが配布されます。 処理したいデータセットが含まれています。 上記関数は関数を呼び出します eeg_checkset.m 関数 変更されたデータセットの内部の一貫性を確認してください。

EEG = eeg_checkset(EEG);

または

EEG = eeg_checkset(EEG, 'eventconsistency');

上記2つ目のコマンドは、イベントの一貫性のための追加のチェックを実行します (完成までに時間がかかることもあります) EEG.event 情報からEEG.epoch* まで イベント構造が変更される場合にのみ使用されます。 イベントを見る スクリプトのチュートリアル:(/tutorials/11_Scripting/Event_Processing_command_line.html) EEGイベント

上記のコマンドは、複数のコマンドを維持するオプションがある場合に便利です。 データセットがオンになっています。 複数のデータセットを維持するオプションがオフの場合 (ビア・ザ・ ファイル → 環境設定 メニュー項目) ALLEEG の変数はそのままです。EEG は変数です データセット情報が含まれています。 このオプションを使用する場合は、 一度に1つのデータセットを処理する(ここでの目標は、より少ないメモリを使用することです。 より大きなデータセットを処理することができる。 ユーザーによる変更 EEG構造は即刻です。 不可逆。 一貫性のために、上記のすべてのコマンドが機能します。 は、ALLEEG の変数は空で指定します。

ユーザ名 * ユーザ名 * ユーザ名 * EEGLAB関数が削除されます。 user-added フィールドに格納されます。

EEG.analysis_priority = 1;

主なEEGLAB変数には、現在のEEGデータセットを保持するEEG、読み込み済みデータセットの配列であるALLEEG、現在のデータセット番号を示すCURRENTSET、EEGLABメニューから発行された最後のコマンドLASTCOM、すべてのメニューコマンドを保持するALLCOMがあります。グループ解析では、STUDYCURRENTSTUDYも使われます。これらの変数はコマンドラインからアクセスできますが、主要なEEGLAB関数は通常、入力引数としてデータを受け取り、不要な副作用を避けるためにグローバル変数を直接変更しません。

基本的なスクリプト例

EEGLABのコマンド履歴を保存しておくと、EEGLABメニューで実行した処理をMATLABスクリプトとして再実行できます。これにより、手動操作を再現可能なコードに変換できます。

以下は、チュートリアルデータセットeeglab_data.setと対応するチャネルファイルeeglab_chan32.locsを使い、最初に実行する基本的な処理をまとめた例です。コメントを追加して、各ステップが何を行うかを明確にしています。EEGLAB履歴の確認には、eeglab_history.meegh関数も利用できます。

%% Getting started with EEGLAB history
% The line below was added by us to locate data files
eeglab_path = fileparts(which('eeglab.m'));

% Start eeglab
[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;

% Change option to process multiple datasets
pop_editoptions( 'option_storedisk', 0);

% Load the dataset (We modified the path manually here)
EEG = pop_loadset( 'eeglab_data.set', fullfile(eeglab_path, 'sample_data'));

% Load the channel location file, enabling automatic detection of channel file format'; We modified the path manually here
EEG.chanlocs=pop_chanedit(EEG.chanlocs, 'load',{ fullfile(eeglab_path, 'sample_data', 'eeglab_chan32.locs'), 'filetype', 'autodetect'});

% Store the dataset into EEGLAB
[ALLEEG EEG CURRENTSET ] = eeg_store(ALLEEG, EEG);

% High pass filter the data with cutoff frequency of 1 Hz.
EEG = pop_eegfilt( EEG, 1, 0, [], [0]);

% Below, create a new dataset with the name filtered Continuous EEG Data
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET, 'setname', 'filtered Continuous EEG Data');% Now CURRENTSET= 2
EEG = pop_reref( EEG, [], 'refstate',0); % Re-refrence the new dataset

% This might be a good time to add a comment to the dataset.
EEG.comments = pop_comments(EEG.comments,'','Dataset was highpass filtered at 1 Hz and rereferenced.',1);

% You can see the comments stored with the dataset either by typing >> EEG.comments or selecting the menu option Edit->About this dataset.
EEG = pop_epoch( EEG, { 'square' }, [-1 2], 'newname', 'Continuous EEG Data epochs', 'epochinfo', 'yes');

% Extract epochs time-locked to the event - 'square', from 1 second before to 2 seconds after those time-locking events.
% Now, either overwrite the parent dataset, if you don't need the continuous version any longer, or create a new dataset
%(by removing the 'overwrite', 'on' option in the function call below).
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET, 'setname', 'Continuous EEG Data epochs', 'overwrite', 'on');
EEG = pop_rmbase( EEG, [-1000 0]); % Remove baseline

% Add a description of the epoch extraction to EEG.comments.
EEG.comments = pop_comments(EEG.comments,'','Extracted ''square'' epochs [-1 2] sec, and removed baseline.',1);
[ALLEEG EEG] = eeg_store(ALLEEG, EEG, CURRENTSET);  %Modify the dataset in the EEGLAB main window
eeglab redraw % Update the EEGLAB window to view changes

eeg_storepop_newset は、 複数のデータセットが あります。 現在のデータセットの処理に興味がある場合は、安全に無視できます。 以下は同じスクリプトです。 コメントや追加のデータ管理コマンドなしで、コンパクト化。

注意事項: 以前述べたように、関数は EEGLABの ウィンドウから、ウィンドウのタイトルバーのアンダーリング pop_ 関数の呼び出し。 ファイル → 既存のデータセットをロードするpop_loadset.m を実行。

eeglab_path = fileparts(which('eeglab.m'));
[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
pop_editoptions( 'option_storedisk', 0);
EEG = pop_loadset( 'eeglab_data.set', fullfile(eeglab_path, 'sample_data')); % We modified the path manually here
EEG.chanlocs=pop_chanedit(EEG.chanlocs, 'load',{ fullfile(eeglab_path, 'sample_data', 'eeglab_chan32.locs'), 'filetype', 'autodetect'});
EEG = pop_eegfilt( EEG, 1, 0, [], [0]);
EEG = pop_reref( EEG, [], 'refstate',0);
EEG.comments = pop_comments(EEG.comments,'','Dataset was highpass filtered at 1 Hz and rereferenced.',1);
EEG = pop_epoch( EEG, { 'square' }, [-1 2], 'newname', 'Continuous EEG Data epochs', 'epochinfo', 'yes');
EEG = pop_rmbase( EEG, [-1000 0]);
EEG.comments = pop_comments(EEG.comments,'','Extracted ''square'' epochs [-1 2] sec, and removed baseline.',1);
[ALLEEG EEG CURRENTSET] = eeg_store(ALLEEG, EEG, 1);
eeglab redraw

EEGLABに対応しています。 とりあえず、翻訳済みデータセット

%% Reduce sampling rate
% Reduce the sampling rate to 128 Hz (the above example was already sampled at 128 Hz'')
EEG = pop_resample( EEG, 128);

% Save it as a new dataset with the name Continuous EEG Data resampled
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET, 'setname', 'Continuous EEG Data resampled');

% Now on the GUI we returned to the previous dataset (before downsampling)
EEG = eeg_retrieve(ALLEEG, 1); CURRENTSET = 1;

関数と関数の高速化

ErPのスカルプマップを0msから500msまで作成可能 pop_topoplot.m 関数 EEGLABの歴史 EEGLAB では、このコマンドをロードする、 詳しくはこちら.

%% Plot ERP maps
% Every 100 ms from 0 ms to 500 ms [0:100:500]
% Plot marks showing the locations of the electrodes on the scalp maps.
pop_topoplot(EEG,1, [0:100:500] , 'ERP scalp topographies',[2:3] ,0, 'electrodes', 'on');

EEGLAB では、EEGLAB のライセンスを発行しています。 イラストの目的で弊社から書いていただきました。 上記のコマンド pop_topoplot.m 関数 信号処理機能を直接呼び出して実行できます。 topoplot.mの 以下に示すように:

%% Topographic plot
% Define variables:
times = [0:100:500];
pos = round(eeg_lat2point(times/1000, 1, EEG.srate, [EEG.xmin EEG.xmax]));

% Convert times to points (or >pos = round( (times/1000-EEG.xmin)/(EEG.xmax-EEG.xmin) * (EEG.pnts-1))+1;)
% See the event tutorial for more information on processing latencies
mean_data = mean(EEG.data(:,pos,:),3);

% Average over all trials in the desired time window (the third dimension of
% EEG.data allows to access different data trials). See tutorial about data structures
maxlim = max(mean_data(:));
minlim = min(mean_data(:));
maplimits = [ -max(maxlim, -minlim) max(maxlim, -minlim)]; % Get the data range for scaling the map colors

% Plot the scalp map series
figure
for k = 1:6
    sbplot(2,3,k);
    % A more flexible version of subplot
    topoplot( mean_data(:,k), EEG.chanlocs, 'maplimits', maplimits, 'electrodes', 'on', 'style', 'both');
    title([ num2str(times(k)) ' ms']);
end
cbar; % A more flexible version of MATLAB colorbar

トポグラフィのプロットは、スケールを除いて、以前のものとほぼ同じです。

EEGLAB MATLABは、次の手順を実行します。 EEGLAB関数学習 複数の分析を行います。 スクリプトの例をいくつか紹介します。