スキャンされた電極位置の使用
カスタムヘッドモデルを使用することで、ソースローカリゼーションの精度を向上させることができます。 スキャンされた3D電極位置がある場合、被験者のヘッドジオメトリに合わせてテンプレートヘッドモデルを変形・適応させることができます。これは、テンプレートヘッドモデルにテンプレートの電極位置を合わせるよりも正確です(Akalin Acar & Makeig, 2013)。 被験者個人のMRヘッド画像がある場合は、個別の電気的ヘッドモデルを構築でき、個人の皮質表面に対するより正確なソースモデリングが可能になります(テンプレートモデルだけでは不可能)。
被験者のMRヘッド画像とスキャンされた3D電極位置の両方がある場合、テンプレートヘッドモデルを被験者のヘッドジオメトリに合わせて変形・適応させることで、ソースローカリゼーションの精度が大幅に向上します。 テンプレートの電極位置(国際10-20システムに基づくもの)はメーカー間で大きく異なる場合があります。 しかし、解剖学的ランドマーク(鼻根点など)からの電極位置のスキャンは、最近の3Dスキャナー(iPhone 13 Pro、Samsung Galaxy S20 Ultraなど)やデスクトップ3Dカメラ(Structure.io)によって簡単かつ安価に行えるようになりました。
3Dスキャンされた電極位置を取得するには、get_chanlocs プラグインを使用できます。このプラグインはFieldTripの機能に基づいています。
get_chanlocs プラグインのドキュメントでEEGLABでの使用方法を参照してください。

電極位置をスキャンし、ソースローカリゼーションに使用する場合は、DIPFITの設定を参照してください。被験者個別のMRヘッド画像がある場合は、Neuroelectromagnetic Forward Head Modeling Toolbox(NFT)を使用してDIPFITやコルティカルサーフェスソースモデルの当てはめに利用する個別ヘッドモデルを作成できます。このチュートリアルでは、MRヘッド画像を使用したカスタムヘッドモデルの作成方法を説明します。
カスタムヘッドモデル
このチュートリアルでは、Henson-Wakemanデータセットを使用します。最初の被験者のファイルのみをこちらからダウンロードできます。DIPFITはEEGLABの拡張機能で、FieldTripの機能を利用しています。
MRIデータのインポートとチャネル選択
メニュー項目 File > Import data > Using File-IO interface を使用してデータをインポートします。ファイル sub-01_ses-meg_task-facerecognition_run-01_meg.fif を選択してください。インポート後、メニュー Edit > Channel locations でチャネル位置を確認できます。
次に、メニュー Edit > Select data を使用して、EEGチャネルのみを選択し、EOGおよびEKGチャネル(EEG061からEEG064)を除外します。

メニュー項目 Tools > DIPFIT source localization > Construct head model from MRI を呼び出します。

この例では、MRヘッド画像を使用して自動的にアラインメントが行われます。

MRIからBEM(境界要素法)ヘッドモデルが自動的に生成されます。EEGLABでは、ROIconnectプラグインで使用されるMRIベースのヘッドモデルも生成できます。pop_dipfit_headmodel.m関数は “bemcp” メソッドを使用し、FieldTripの機能を呼び出します。FieldTripのデフォルトは “dipoli” メソッドですが、LinuxとWindowsでのみ動作します。コマンドラインから呼び出す場合はpop_dipfit_headmodel.mを参照してください。

完了後、メニュー項目 Tools > DIPFIT source localization > Head model and settings を呼び出します。

Co-registerボタンを押し、コレジストレーションウィンドウでAlign fiducialsを選択してOKを押します。チャネル位置とヘッドモデルのアラインメントが表示されます。ウィンドウの左側に残差が表示されます。フィデューシャルの選択についてはこちらを参照してください。

これでソースローカリゼーションの準備が整いました。ICAコンポーネントのスカルプ投影マップやその他のソースモデルを参照してください。
スクリプト
このスクリプトを実行するには、EEGLABにFile-IO、FieldTrip、Picard、bids-matlab-toolsプラグインがインストールされている必要があります。生データおよびMRIファイルのパスを設定してください。
dataPath = 'xxx/sub-01';
filenameEEG = fullfile( dataPath, 'ses-meg','meg','sub-01_ses-meg_task-facerecognition_run-01_meg.fif');
filenameMRI = fullfile( dataPath, 'ses-mri','anat','sub-01_ses-mri_acq-mprage_T1w.nii.gz');
以下のコードでデータをインポートし、EEGチャネルのみを選択します。MEGチャネルは除外しますが、チュートリアルではEEGチャネルのみを使用します。
EEG = pop_fileio(filenameEEG); % import data
EEG = pop_select(EEG, 'chantype', 'eeg'); % select EEG channels
EEG = pop_select(EEG, 'rmchannel', { 'EEG061' 'EEG062' 'EEG063' 'EEG064' }); % remove EOG and EKG channels
次に、前処理とICA分解を実行します。チュートリアルを高速化するため、PCAによる次元削減を使用していますが、実際の解析ではPCA次元削減はICA分解前には推奨されません(Artoni et al., 2018)。
% Preprocess and run ICA (so one may be localized)
EEG = pop_resample(EEG, 100);
EEG = pop_eegfiltnew(EEG, 1, 0);
EEG = pop_reref(EEG, []);
% EEG = [IMPORTANT: In actual practice, remove any artifcatual data portions here!]
EEG = pop_runica( EEG , 'picard', 'maxiter', 500, 'pca', 20); % NOTE: In practice, PCA dimension reduction prior to ICA decomposition is NOT recommended
最後に、MRIからヘッドモデルを構築し、電極位置とのアラインメントを行います。pop_dipfit_headmodel.m関数は、被験者のMR画像を読み込み、FieldTrip関数ft_volumerealign.mを使用してフィデューシャルを自動検出し、BEMヘッドモデルを生成します。詳細はpop_dipfit_headmodel.m関数を参照してください。
EEG = pop_dipfit_headmodel( EEG, filenameMRI, 'plotmesh', 'scalp');
EEG = pop_dipfit_settings( EEG, 'coord_transform', 'alignfiducials');
EEG = pop_multifit(EEG, 1:10,'threshold', 100, 'dipplot','off');
pop_dipplot(EEG, [], 'normlen', 'on');
MRIからヘッドモデルを生成する際、FieldTrip関数がMRI上のフィデューシャルポイントを自動検出します。plotalignmentオプションを使用すると、pop_dipfit_settings.mでアラインメントを確認できます。
ダイポールフィッティングにはpop_multifit.mを使用し、プロットにはpop_dipplot.mを使用します。以下のプロットは、コンポーネントの等価ダイポールの一つを示しています。

eLoretaまたはLCMVビームフォーミングによる分散ソースモデルの生成については、EEGソースモデルを参照してください。
その他のヘッドモデル
EEGLABは、FieldTripを通じて様々なヘッドモデルをサポートしています。DIPFIT構造体にカスタムヘッドモデルファイルとMRIファイルを設定することで、独自のヘッドモデルを使用できます。チャネルファイルにはreadlocs.m関数がサポートする形式を使用してください。FieldTripのEEGヘッドモデルチュートリアル、MEGヘッドモデルチュートリアル、およびMEG実践チュートリアル(このチュートリアルと同じデータを使用)も参考にしてください。
EEG.dipfit.hdmfile = 'headmodel.mat';
EEG.dipfit.mrifile = 'mrifile.mat';
EEG.dipfit.chanfile = 'fiducials.sfp';
EEG.dipfit.coordformat = ''; % may be MNI, this field may be left blank as well
EEG = pop_dipfit_settings(EEG, 'coord_transform', 'alignfiducials'); % align MEEG fiducials with the MRI fiducials. Use EEG = pop_dipfit_settings(EEG) to perform manual alignment
設定後、EEGLABメニューを更新します。
EEG.saved = 'no';
[ALLEEG, EEG, CURRENTSET] = eeg_store(ALLEEG, EEG);
eeglab redraw;