FreeSurferのインストール（6系と7系共存）

# はじめに
神経画像解析用ツールの[FreeSurfer](https://surfer.nmr.mgh.harvard.edu/)をインストールしました。[公式](https://surfer.nmr.mgh.harvard.edu/fswiki/DownloadAndInstall)に丁寧なドキュメントがありますが、記録しておきます。2021年11月現在、HCP pipelinesの関係で6系を使っていますが、7系にも切り替えられるように準備をしておきます。7系からはdebパッケージが用意され、インストールしやすくなりました。

# 環境
- Dell Optiplex 5060 SFF (2019), core i5 8400, M.2 256GB SSD, 32GB RAM
- Lubuntu 18.04

# ライセンスキーの取得
FreeSurferを動作させるにはライセンスキーが必要です。
必要事項を記入の上、ライセンスキー（license.txt）を取得してください。

# FreeSurfer 6.0のインストール

- 前準備
 - ```curl```と関連するライブラリをインストールしておきます。
 - ```curl```は```wget```でもいいですので、オプションです。
 - VIMはvim-commonですが、クリップボードを使うのであれば、vim-gnomeの方がいいと思います。
 - libjpeg62に加え、libpng12も必要という情報がありましたのでこれは別途インストールしました。

```
sudo apt install -y curl bc binutils libgomp1 perl psmisc sudo tar tcsh unzip uuid-dev vim-common libjpeg62-dev

```

- ダウンロード＆インストール
 - FreeSurfer6系のダウンロードは最新版（6.0.1）が「Development version」のところにあります。
 - FreeSurferのインストールはシンプルで、ダウンロードしたtarballを適当な場所（今回は```/usr/local/```にインストールします）に展開するだけです。
 - 複数バージョンの場合、```/usr/local/freesurfer/```を作ってその下にバージョン毎に管理しますので、今回は展開したフォルダをリネームして6.0.1というフォルダを作ります。
 - 複数バージョンの場合はインストール後にパス設定の問題があります。
 - ```/usr/local```下にfreesurferのフォルダを作成し、その下にtarballを展開します。今回は```~/Downloads```下にダウンロードしたと仮定します。
 - 展開したファイルはデフォルトで```freesurfer```のフォルダ名がついていますので、これを```mv```で6.0.1にリネームします。
 - リネームが終わったら、ライセンスファイルをコピーします。

```shell-session
# cd ~/Downloads
# fs_path=/usr/local/freesurfer
# sudo mkdir ${fs_path}
# sudo tar xvf fs_filename -C ${fs_path}
# sudo mv $path_to_fs/fressurfer ${fs_path}/6.0.1
# sudo cp ~/Downloads/license.txt ${fs_path}/6.0.1
```

# FreeSurfer 7.2のインストール
- 2021年7月の7.2.0のリリースからdebパッケージが使えるようになりました。Ubuntuユーザーは嬉しいのではないでしょうか。
- フォルダは6.0.1のインストール後に7.2.0をインストールしたら、自動で作ってくれました。
- 7.2.0を最初にインストールするとバージョン分けはしてくれないかもしれません。
- 6.0.1と同様にライセンスファイルはインストールパスにコピーしてください。

```console
# sudo apt install ./your_fs_file.deb
# fs_path=/usr/local/freesurfer
# sudo cp ~/Downloads/license.txt ${fs_path}/7.2.0
```

# .bashrcの追加
FreeSurferはPATHの読み込みに.bashrcを使います（FSLは.bash_profileですがなぜ異なるのかはわかりません。.bash_profileはログイン時に読み込めるので静的、.bashrcはターミナルエミュレータを開くたびに再読み込みになるので動的、という感じなのでしょうか）。

- リダイレクトの記載は```>```だと上書きになるので、追記の場合は```>>```です。
- ヒアドキュメントを使って入力していますが、普通のエディタでもechoでリダイレクトしてもOKです。
- 今回は6.0.1を有効にしていて、7.2.0のフォルダはコメントアウトしています。

```shell-session
cat <<EOF>> .bashrc
>export FREESURFER_HOME=/usr/local/freesurfer/6.0.1
># export FREESURFER_HOME=/usr/local/freesurfer/7.2.0
>source ${FREESURFER_HOME}/SetUpFreeSurfer.sh
```

# インストール後の確認
- 公式にあるやり方でfreeviewを立ち上げてみます。
- 変数の```$SUBJECT_DIR```は```SetUpFreeSurfer.sh```が走った段階で、インストールパスのsubjectsフォルダに設定されます。
- freeviewが立ち上がったらOKです。

```shell-session
# cd $SUBJECTS_DIR
# freeview -v \
    bert/mri/T1.mgz \
    bert/mri/wm.mgz \
    bert/mri/brainmask.mgz \
    bert/mri/aseg.mgz:colormap=lut:opacity=0.2 \
    -f \
    bert/surf/lh.white:edgecolor=blue \
    bert/surf/lh.pial:edgecolor=red \
    bert/surf/rh.white:edgecolor=blue \
    bert/surf/rh.pial:edgecolor=red
```

# バージョンの切り替えについて
力技ですが、.bashrcのFREESURFER_HOMEの設定を```/usr/local/freesurfer/6.0.1```と```/usr/local/freesurfer/7.2.0```の2種類書いておいて、基本は6.0.1の設定を生かしておいて、7.2.0の行はコメントアウトして運用しています。パスが通っていると、知らないうちに異なったバージョンでも解析できてしまうので、少し怖いですよね。注意が必要です。

# おわりに
FreeSurferの異なるメジャーバージョンをインストールしました。

# 参考
- [FreeSurfer6のインストール（公式）](https://surfer.nmr.mgh.harvard.edu/fswiki/rel6downloads)
- [FreeSurfer7のインストール（公式）](https://surfer.nmr.mgh.harvard.edu/fswiki/rel7downloads)