第7章: MNE-Pythonへの橋渡し¶
第6章 — ERPLABによるERP解析からの続きです。これがEEGLAB & ERPLABトラックの最終章です。
ここまでで、このリポジトリの中で同じ大きな流れ — インポート、前処理、エポック化、平均化 — を、MNE-Pythonのコードとして、Brainstormのクリック操作として、そして今度はEEGLABとERPLABのメニューとして、3回たどってきました。この最終章では、EEGLAB/ERPLABをMNE-Pythonへ直接つなげます。
MNE-PythonでEEGLABファイルを読み込む¶
第2章で保存した.set/.fdtファイルは行き止まりではありません — MNE-Pythonはそれらをネイティブに読み込めます。
raw = mne.io.read_raw_eeglab("recording.set")
epochs = mne.read_epochs_eeglab("epochs.set")
EEGLABのGUIで手作業でクリーンにしたパイプライン(フィルタリング、不良チャンネルの補間、ICA)は、GUIでは扱いにくいこと — カスタム統計、機械学習、多数の被験者にわたるスクリプト化されたパイプラインなど — のために、そのままMNE-Pythonに読み込めます。
ERPLABの.erpファイル: 正直な回答¶
ERPLAB自身の平均化ERPファイル(.erp)には、MNE-Python向けのネイティブなリーダーがありません — これは曖昧にせず、はっきり述べておく価値があります。現実的な方法は、(最終的なERPsetではなく)エポックをEEGLABから.setファイルとしてエクスポートし、それをmne.read_epochs_eeglab()でMNE-Pythonに読み込み、そこでepochs.average()により平均化して、ERPLABのERPsetに相当するEvokedオブジェクトを得ることです。この方法ではERPLABのMeasurement Toolは使えなくなりますが、その後の解析でMNE-Pythonが提供するすべてを得られます。
タスクに応じたツールの選び方¶
- EEGLAB + ERPLABを使うと良い場面 — 研究が古典的なERP成分を中心にしていて、Measurement Toolによる高速で一貫した振幅/潜時抽出を多数の被験者にわたって行いたいとき。研究室にすでにMATLABライセンスと既存のEEGLABスクリプトがあるとき。EEGLABの特に大きなプラグインエコシステムを使いたいとき。
- Brainstormを使うと良い場面 — 3Dソース定位が目的そのものであるとき、あるいは共同研究者がライセンス不要・コード不要の選択肢を必要としているとき。
- MNE-Pythonを使うと良い場面 — 大規模なデータセットに対して同一かつ再現可能に動くひとつのパイプラインが必要なとき、Pythonのデータサイエンススタックの他の部分と統合する必要があるとき、レビュー可能なコードとしてバージョン管理下に置く必要があるとき。
Brainstormのときと同様、実際の多くのプロジェクトではこれらのうち複数が使われています。ERPLABでまず素早くERPを測定して概観をつかみ、その後、確定したパイプラインをMNE-Pythonで書き直して全データセットに適用し、単純な振幅・潜時を超えるその後の解析を行う、という流れです。
この先へ¶
こうした概念を実行可能なコードとして見てみたい場合は、MNE-PythonのトラックのEEGの基礎とERP解析の章が、このパイプラインのセンサーレベルの部分をコードで扱っています。また、自分のデータへの応用は、自分自身の記録に対してこれを実行するためのテンプレートです。
以上でEEGLAB & ERPLABトラックは終わりです。お読みいただきありがとうございました。