GNU OctaveでGUI EEGLABが動いた

# はじめに
　この記事の内容は、安永大地 (2021)「言語ERP実験のために今のOctaveにできること・できないこと」（[第6回坂本勉記念神経科学研究会](https://dylab.info/sho-un/), 2021年2月21日, オンライン開催）の発表内容に基づきます。当日の発表にコメントをくださった先生方、ありがとうございました。

## MATLABとOctave
　[MATLAB](https://jp.mathworks.com/products/matlab.html)はデータ解析を行う人なら誰もが知っているほどに有名な数値計算ソフトであり、そこで使われるプログラミング言語のことです。有償無償の数多くの拡張機能（ツールボックス）を追加することで「なんでもできる」と言えるほどに使える、研究者必携のソフトウェアです。
　で、このMATLABの「クローン」として開発が続けられているのが「[GNU Octave](https://www.gnu.org/software/octave/)」（以下、Octave）です。OctaveはMATLABとの高度な互換性を有し、マルチプラットフォームに対応していてOSに依存せずに開発環境を作ることができます。特に[2015年5月公開](https://www.gnu.org/software/octave/news/release/2015/05/29/octave-4.0.0-released.html)のOctave 4.0からは正式にGUIに対応していて、インターフェースの点からもMATLABにぐっと近づき、それ以降は筆者もバージョンアップごとにインストールして使用感を確かめていました。本稿執筆時点での最新バージョンは[Octave 6.2.0](https://www.gnu.org/software/octave/news/release/2021/02/20/octave-6.2.0-released.html)です。

## EEGLAB
　認知神経科学研究において、脳波は有用なツールであり、多くの研究者・学生さんが利用されていることだと思います。脳波解析環境として広く知られているものにMATLABツールボックスの[EEGLAB](https://sccn.ucsd.edu/eeglab/index.php)（無償）があります。このツールボックスがあれば、脳波データの前処理（preprocessing）から、独立成分分析（ICA)、時間周波数分析（TFA）、事象関連電位（ERP）の分析までたいていのことができます。筆者の研究もEEGLABに支えられています。

## EEGLAB on Octave
　筆者にとってMATLABもEEGLABもなくてはならないものであることは間違いありませんが、一つ問題があるとすればMATLABは有償ソフトであるということです。もちろん[アカデミックライセンス](https://jp.mathworks.com/pricing-licensing.html?prodcode=ML&intendeduse=edu)がありますし、[学生版](https://jp.mathworks.com/store/link/products/student/SV?s_tid=ac_buy_sv_but1)にいたっては「破格」とも言える安さで手に入れることができます。なので、院生さんはちょっとアルバイトを頑張ってでも学生のうちに自分のものを買っておくことをお勧めします。そうは言っても、できることならお金をかけたくないというのが若手研究者の願いであり、学部学生の心情であり、こうした研究領域に足を踏み入れてみたい研究者の気持ちだろうと思います。学部学生の実習や授業のために全員に対して購入を指示するのは悩ましいところです。さらには今般のCOVID-19問題で、「自宅待機」となったときに研究室のPCのMATLABでしか動かせないという状況はなるべく避けたいところです。
　そこで思いつくのが、「OctaveはMATLABクローンで、しかも無料なんだから、OctaveでEEGLABを動かせば問題ないじゃないか！」ということですよね。そうなのです。その通りなのです。でも、それが今までは不可能だったのです。下図のように「動かせないよ！」とエラーを吐いたり、少し頑張ってみても、「コマンドベースでならEEGLABが用意している関数は使えるけど、GUIでは無理。」が精いっぱいという状況でした。
![eeglab20210-octave620-gui-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/aed8a796-22b1-c363-414f-3400d314b74d.png)



# 動作報告
## 状況の変化が
　EEGLABの状況が大きく変わったのがEEGLAB2021.0の登場です。EEGLAB mailing listからリリースニュースを受け取り、内容も読まずに新しいバージョンのインストールをしてみました。

　Github [eeglab 2021.0](https://github.com/sccn/eeglab/tree/eeglab2021.0)
　zipファイルを直接[ダウンロード](https://github.com/sccn/eeglab/archive/eeglab2021.0.zip)
　↑Githubからダウンロードすると、デフォルトで付属しているはずのプラグイン（clean_rawdata, dipfit, firfilt, ICLabel）がフォルダ名だけで中身が空っぽになっています。[プラグインリストのページ](https://sccn.ucsd.edu/eeglab/plugin_uploader/plugin_list_all.php)からダウンロードするか、EEGLAB自体を[公式ダウンロードページ](https://sccn.ucsd.edu/eeglab/downloadtoolbox.php)からダウンロードしてください。

## 動作を確認した環境
　筆者が動作を確認した環境は下記の通りです。

* Windows 10 pro (20H2)
* Octave 6.2.0
* EEGLAB 2021.0

## 手続き
[1] Octaveのインストール
　Octaveのダウンロードページから[インストーラー](https://ftpmirror.gnu.org/octave/windows/octave-6.2.0-w64-installer.exe)をダウンロードして、実行してください。特に難しいところはなくインストールが進むはずです。Octave側のバージョンの必要条件は調べていませんが、1つ前の6.1.0では動作確認をとっています。

[2] EEGLABのインストール先の作成
　EEGLABは基本的には任意の場所にzipファイルを展開するだけでいいのですが、日本語版Windowsを使っていて、フォルダへのパスに日本語文字やスペースが入っていた場合に思わぬエラーが出る可能性があります。そこで、Cドライブ直下に"Octave620"というフォルダを作りました（フォルダ名は任意ですが、半角英数字だけにしておきましょう）。
　さらにその中に"eeglab2021.0"というフォルダを作りました（これも名前は任意。フォルダ名命名の注意点も同上）。

[3] EEGLABファイルのコピー
　ダウンロードしたEEGLAB2021.0のzipファイルを展開し、その中身をC:\Octave\eeglab2021.0にコピーします。すべてのファイル・フォルダをコピーしても大丈夫ですが、不必要なものをコピーすると、あとで「余計なものがあるよ」と注意されるので、下図のようにしておくのが良いと思います。フォルダの構造も参照してください。
![eeglab20210-octave620.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/73e0bd0f-0cb7-58c3-a1da-a51122f286e1.png)



[4] EEGLABのインストール
　Octave 6.2.0を起動したら、

```matlab:Octave6.2.0
>> addpath(genpath('C:\Octave620\eeglab2021.0'));
```

と入力してださい。これは「パスを通す」という作業で、EEGLABがどこにあるかをOctaveに伝える操作です。基本的にはEEGLABを使う際、Octave起動時に毎回行う作業です。いくつか注意（warning）が出るかもしれませんが、あまり気にしなくて良さそうです。

[5] EEGLABの起動

```matlab:Octave6.2.0
>> eeglab
```

Octaveのコマンドウインドウに>> eeglabとタイプすれば、C:\Octave620\eeglab2021.0\eeglab.mが読み込まれ、EEGLABの起動が始まります。うまく起動が進めば、下図のようなGUI画面が出てきます。この画面が出てきたときは思わず声が出てしまいました。
![eeglab20210-octave620-gui.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/4f96206f-0e8c-b945-d360-93863189708a.png)

# 終わりに
　OctaveがGUI化されたころから「早くEEGLABが動かないかな」と思い続けて5年半。ようやくその希望がかないました。EEGLABの開発チームの皆さんには心より感謝申し上げます。今回の記事はWindows版Octaveでの報告ですが、macOSでもCatalina, BigSurでの起動が確認できています（BigSurでの起動報告は諏訪園秀吾先生＠沖縄病院から頂きました）。さらにはLinuxでもUbuntu 20.04LTSで起動が確認できています。
![eeglab20210-octave620-gui-catalina.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/727b8204-b601-0e3c-1428-5fd68b7c3b5c.png)
![eeglab20210-octave620-gui-ubuntu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/90f81c55-3aa7-6990-074a-4d214ba3f37e.png)
　また、脳波データの読み込みから、基本的な処理まで概ね動くことも確認できています。まだいくつか問題点があることも認識していますが、ひとまず起動できたというニュースを書きたくて、初めてQiitaに投稿してみました。