macOS への FreeSurfer 7.1.1 のコマンドラインを使ったインストール(スクリプト付き)

FreeSurfer 7が公開されています。recon-allの時間が短縮されたり、海馬のsubfield解析がよりグレードアップしたりとなっています。

macOSへのインストールはデモ動画が示されていますが、コマンドラインで一気にインストールしたいと思いました。
以下、必要なものを示します。

  • シェルをbashに変更 (Catalina以降)
    catalina以降ではデフォルトシェルがzshになっていますが、freesurferのスクリプトはcシェルもしくはbashを念頭に書かれているので、bashに変更します。
    以下をタイプして、ターミナルを一度終了してもう一度起動します。
chsh -s /bin/bash
  • license.txt の入手
    Registrationのページに必要事項を記載すると、メールで license.txt が添付されて送られてくるので、それをダウンロードの下に保存します。
  • スクリプトの実行

fs_setup_7.1.1_mac.shを右クリックして保存します。ダウンロードに保存されたと仮定します。

ターミナルから以下のようにして実行します。

cd Downloads
chmod 755 fs_setup_7.1.1_mac.sh
./fs_setup_7.1.1_mac.sh

こうすると、
– Homebrewのセットアップ
– Xquartzのインストール
– FreeSurfer 7.1.1のダウンロード
– ダウンロードファイルが壊れていないかの確認
– FreeSurfer 7.1.1のインストール
– $HOME/freesurfer/subjects の準備
– Freeviewのテスト

が行われます。
なお、FreeSurfer6を残しておきたい方々もいると思いますので、このスクリプトでは、7.1.1のインストール先を/Applicationsではなく、/usr/localにしています。FSLも /usr/local にしているので、特に問題はないかと思います。macの方でアプリケーションは必ず /Applications じゃなければ嫌という方は、FS6とFS7の併存のためにパスを工夫する必要があります。

すんなりいけば、以下のようになるかと思います。

一応、スクリプトを以下に記載します。

#!/bin/bash
#fs_setup_7.1.1.sh
#Script to install freesurfer v7.1.1 on macOS
#This script downloads required files, install them, and configure that
#subject directory is under $HOME

#03 Oct 2020 K. Nemoto

echo "Begin installation of FreeSurfer"
echo
echo "This script will download and install Freesurfer on macOS"
echo "You need to prepare license.txt beforehand."
echo "license.txt should be placed in $HOME/Downloads"

##VERSION
ver=7.1.1

while true; do

echo "Are you sure you want to begin the installation of FreeSurfer? (yes/no)"
read answer
    case $answer in
        [Yy]*)
          echo "Begin installation."
      break
          ;;
        [Nn]*)
          echo "Abort installation."
          exit 1
          ;;
        *)
          echo -e "Please type yes or no. \n"
          ;;
    esac
done

##Homebrew
echo "Check if homebrew is installed"

which brew > /dev/null
if [ "$?" -ne 0 ]; then
  echo "install homebrew"
  bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
else
  echo "update homebrew"
  brew update
fi

##Xquartz
echo "install xquartz"
brew cask install xquartz

##Check license
echo "Check if you have license.txt in $HOME/Downloads"

if [ -e $HOME/Downloads/license.txt ]; then
    echo "license.txt exists. Continue installation."
else
    echo "You need to prepare license.txt"
    echo "Abort installation. Please run the script after you put license.txt in $HOME/Downloads"
fi

## Download freesurfer
if [ ! -e $HOME/Downloads/freesurfer-darwin-macOS-${ver}.tar.gz ]; then
    echo "Download Freesurfer to $HOME/Downloads"
    cd $HOME/Downloads
    curl -O https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/${ver}/freesurfer-darwin-macOS-${ver}.tar.gz
else
    echo "Freesurfer archive is found in $HOME/Downloads"
fi

## Check the archive
cd $HOME/Downloads
echo "Check if the downloaded archive is not corrupt."
echo "MD5(freesurfer-darwin-macOS-${ver}.tar.gz)= 6c304330b4b1765db99c00a56ef028bc" > freesurfer-darwin-macOS-${ver}.tar.gz.md5
openssl md5 freesurfer-darwin-macOS-${ver}.tar.gz | cmp freesurfer-darwin-macOS-${ver}.tar.gz.md5 -

while [ "$?" -ne 0 ]
do
    echo "Filesize is not correct. Re-try downloading."
    curl -O https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/${ver}/freesurfer-darwin-macOS-${ver}.tar.gz
    openssl md5 freesurfer-darwin-macOS-${ver}.tar.gz | cmp freesurfer-darwin-macOS-${ver}.tar.gz.md5 -
done

echo "Filesize is correct!"
rm freesurfer-darwin-macOS-${ver}.tar.gz.md5

## Install freesurfer
echo "Install freesurfer"
if [ ! -d /usr/local/freesurfer ]; then
  sudo mkdir /usr/local/freesurfer
fi

cd /usr/local/freesurfer
sudo tar xvzf $HOME/Downloads/freesurfer-darwin-macOS-${ver}.tar.gz
sudo mv freesurfer ${ver}

if [ -d "/usr/local/freesurfer/${ver}" ]; then
    sudo cp $HOME/Downloads/license.txt /usr/local/freesurfer/${ver}
else
    echo "freesurfer is not extracted correctly."
    exit 1
fi

## Prepare freesurfer directory in $HOME
echo "make freesurfer directory in $HOME"
cd $HOME
if [ ! -d freesurfer/${ver} ]; then
    mkdir -p freesurfer/${ver}
fi

cp -r /usr/local/freesurfer/${ver}/subjects $HOME/freesurfer/${ver}

## Append setting to .bash_profile
cat $HOME/.bash_profile | grep "freesurfer/${ver}"
if [ "$?" -eq 0 ]; then
    echo ".bash_profile is already set."
else
    echo >> $HOME/.bash_profile
    echo "#FreeSurfer ${ver}" >> $HOME/.bash_profile
    echo "export SUBJECTS_DIR=~/freesurfer/${ver}/subjects" >> $HOME/.bash_profile
    echo "export FREESURFER_HOME=/usr/local/freesurfer/${ver}" >> $HOME/.bash_profile
    echo 'source $FREESURFER_HOME/SetUpFreeSurfer.sh' >> $HOME/.bash_profile
fi

## Test installation
source $HOME/.bash_profile

while true; do

echo "Do you want to check if installation is done correctly? (yes/no)"
read answer
    case $answer in
        [Yy]*)
          echo "Freeview will run shortly."
      break
          ;;
        [Nn]*)
          echo "Finished installation."
          exit
          ;;
        *)
          echo -e "Please type yes or no. \n"
          ;;
    esac
done

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 &

exit

macOS への FreeSurfer 7.1.1 のコマンドラインを使ったインストール(スクリプト付き)” へのコメント

  1. いつもありがとうございます。ver6.0もapplication上に残しているのですが、普通にfreesurferを動かすと、ver6.0で処理をしてしみます。ver7.1.1を優先的に使うにはいかがすれば宜しいでしょうか?お忙しい中大変恐縮ではございますが何卒よろしくお願いいたします。

    • .bash_profileの設定をご覧ください。

      FS ver.7の設定とver.6の設定がどちらもあると思うんですね。
      もし、ver.7を使いたい場合は、ver.6の記述の先頭に # をつけていただき、コメントアウトしていただくのが現時点での解決法かと思います。
      試してみていただければと思います。わからなかったら教えてください。

      根本清貴

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください