FreeSurferとFSL 6.0.6以降を同時にインストールしている時に起きる事象への対処法

FreeSurfer と FSL 6.0.6以降を使っていると、ある事象が起きます。

  • Python3がFSLが提供するPython3になります。
  • dcm2niixがFSLが提供するdcm2niixになります。

これの影響を受けているかの確認法および対処法を最初に解説した後、その理由を述べます。

【影響を受けているかの確認法】

  • Pythonのパスを確認します
  • command -v python3
    

    この結果が、/usr/local/fsl/bin/python3 のように fsl/bin/python3 となっていると影響を受けています。

  • dcm2niixのパスを確認します
  • command -v dcm2niix
    

    この結果が、/usr/local/fsl/bin/dcm2niix のように fsl/bin/dcm2niix となっていると影響を受けています。

【対処法】

  • FreeSurferのディレクトリにあるFreeSurferEnv.sh ので、”FSL_DIR”を検索し、以下の箇所を修正します。
  • 修正前: export FSL_BIN=$FSL_DIR/bin
    修正後: export FSL_BIN=$FSL_DIR/share/fsl/bin
    

保存した後にターミナルを一度終了し、再度起動したうえで、改めて command -v python3 としてみてください。

【原因】

これは、FSLが6.0.6以降で、実行ファイルのパスを変更したことに起因します。6.0.6以前は、FSLのディレクトリを $FSLDIR とすると、実行ファイルは $FSLDIR/bin だったのですが、6.0.6以降は、 $FSLDIR/share/fsl/bin となりました。で、問題をややこしくしているのは、$FSLDIR/bin がなくなったわけではなく、そこに、pythonの実行ファイルだったり、dcm2niixだったり、FSLの実行ファイルの周辺ファイルがおさめられるようになったことです。
 FreeSurferは、この新しい変更にまだ対応が追いついていません。FreeSurferは、FreeSurferEnv.sh に、FSLの情報などが記載されています。この中に以下の情報があります。

#403行目
export FSL_BIN=$FSL_DIR/bin

#422行目
PATH=$FSL_BIN:$PATH

ここでの FSL_DIR という変数はFreeSurferが独自に定義している変数です。FSLがインストールされているディレクトリの下にある bin を FSL_BIN という変数で定義し、それを、パス変数の一番最初に指定しています。

このため、FSLを使う目的でなく、pythonを使いたくて、python と入力すると、パス変数の一番最初にある FSLの中にある python が呼び出されてしまうわけです。

ということで、対処法は、FSL_BIN を正しいものに変更してあげるということになります。

pythonでパッケージをインストールしている時に正しく確認していないと、想定外のところにインストールされたりしてしまうので、ぜひ確認してもらえたらと思います。

FreeSurferとFSL 6.0.6以降を同時にインストールしている時に起きる事象への対処法” へのコメント

  1. ピングバック: macOS の Python事情を理解する

コメントを残す

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