【FreeSurfer】複数のRecon-allを並行して行う方法

FreeSurfer

FreeSurferでの解析を行う場合 [ Recon-all ] コマンドによるサブジェクトの生成が必要ですが、一つのサブジェクトを生成するためには15時間前後の長い時間を要するため、データ全体の解析には非常に時間がかかります。

しかし[ Parallel ] コマンドを使用し、複数の症例を同時に解析することで時間を短縮することが可能です。1症例の解析に必要な時間と同程度でサブジェクトの生成が可能です。

下記サイトを参考にしています。

FreeSurfer Tutorial #4: Running recon-all in Parallel

同時解析が可能な症例数の確認:論理コア数

同時に解析を行うことができる症例数は使用しているマシンの論理コア数に依存しています。

論理コア数:ハイパースレッディングにより、PCが実際に搭載しているコア(物理コア)数よりも多く認識する(解析に用いる)ことができるコア数。

下記コマンドで確認してください。

sysctl hw.physicalcpu hw.logicalcpu
  • hw.physicalcpu : 物理コア数 (4)
  • hw.logicalcpu:論理コア数 (8)

使用しているPCはクアッドコア(物理PC=4)ですが、論理コア数は8のため同時に8症例のRecon-allを行うことが可能だとわかりました。

Parallelコマンドを使用する準備

macターミナルでは [ parallel ] コマンドは標準搭載されていないため、Homebrew 経由でインストールする必要があります。

HomebrewとはMacports, Finkと並んで有名なパッケージ管理ソフトです。

インストール方法は公式サイトまたは当サイト該当ページを参照してください。

インストールが完了したら下記コマンドで[ parallel ]を使用できるようになります。

brew install parallel

Parallelコマンドを使用したRecon-all

subjects ディレクトリに解析を行うNIfTIファイルを入れた状態で下記コマンドを入力してください。その際ディレクトリ内に、解析する必要のない .nii ファイルは入れないように注意してください。

ls *.nii | parallel --jobs 8 recon-all -s {.} -i {} -all

ls *.nii:ディレクトリ内の .nii 拡張子ファイルを全て展開します。

–jobs 8:8 coreを使用して解析します。

-s {.}:出力サブジェクト名は各NIfTIファイルから.niiを取り除いたファイル名になります。

仮にディレクトリ内に test1.nii, test2.nii, test3.nii というファイルがあった場合、test1, test2, test3というサブジェクトが生成されます。同時に解析できる症例数は8症例まで(著者PCでは)ですが、ディレクトリ内に8つ以上のファイルがあった場合、1つのファイルの解析が終了しコアが使用可能になる毎に新しいファイルの解析を始めることができます。 尚、個々の症例を解析するためにかかる時間と同程度の時間で解析が可能です。

コメント

  1. Fujimori より:

    大変お世話になっております。1例ずつの解析が順調に進み始めたため、複数症例の同時解析を実行したいと思っております。
    Homebrewおよびparallelのインストールまで終了しました。
    ls *.nii | parallel –jobs 8 recon-all -s {.} -i {} -all
    とターミナルで入力したところ、
    ls: *.nii: No such file or directory
    と表示されてしまいました。

    HOME-freesurfer-subjectsのフォルダの中には、nc97_2.niiといったファイルが複数含まれています。
    試しに、アプリケーション-freesurfer-7.1.1-subjectsのフォルダの中に同じファイルをコピーアンドペーストしてから実行しましたが、同様の結果でした。

    何が間違っているのでしょうか?

    • HAL HAL より:

      ご連絡ありがとうございます。

      No such file or directoryはPassやディレクトリが間違っている際に表示されることが多いのですが
      Current directoryはNiftyファイルを入れているディレクトリに設定されておりますでしょうか?

      cd $SUBJECT_DIRを入力後に同様に実施頂き、再度同様のエラーがありましたら、ご連絡頂けますと幸いです。

タイトルとURLをコピーしました