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
いつもありがとうございます。ver6.0もapplication上に残しているのですが、普通にfreesurferを動かすと、ver6.0で処理をしてしみます。ver7.1.1を優先的に使うにはいかがすれば宜しいでしょうか?お忙しい中大変恐縮ではございますが何卒よろしくお願いいたします。
.bash_profileの設定をご覧ください。
FS ver.7の設定とver.6の設定がどちらもあると思うんですね。
もし、ver.7を使いたい場合は、ver.6の記述の先頭に # をつけていただき、コメントアウトしていただくのが現時点での解決法かと思います。
試してみていただければと思います。わからなかったら教えてください。
根本清貴
いつもありがとうございます。解決しました!
無事解決してよかったです。