CONNチュートリアル (20.b対応): SETUP – Preprocessing

構造画像と機能画像を指定したら、前処理 Preprocessing を行います。

最初に、前処理のパイプラインを選択します。通常は、一番上のものを選ぶことで問題ないです。

そうすると、以下のパイプラインがセットされます。

具体的な流れは以下になります。

  • 脳機能画像を、”original data” としてラベル付けします。
  • 脳機能画像の Realignment を行います。
  • 脳機能画像の origin を (0,0,0) にセットします。
  • 脳機能画像の Slice-Timing Correctionを行います。
  • 脳機能画像の外れ画像の検出を行います。
  • 脳機能画像の分割化 & 標準化 を行います。
  • 標準化が終わった脳機能画像を “mni-space data” としてラベル付けします。
  • 構造画像の origin を (0,0,0) にセットします。
  • 構造画像の分割化 & 標準化 を行います。
  • 脳機能画像の平滑化を行います。
  • 脳機能画像を “smoothed data” としてラベル付けします。

この流れにもうひとつプロセスを付け加えましょう。それは、「最初の数スキャンを除去する」です。
fMRIは最初の数スキャンはT1効果が安定状態(飽和状態)になっていないため、信号値が高信号を示す傾向にあります。このため、最初の10秒程度を捨てスキャンとして除きます。TRが2秒の時、10秒は5スキャンにあたります。このため、今回は最初の5スキャンを取り除くこととします。

前処理のパイプラインのダイアログの右側の “Add” をクリックし、“functional Removal of inital scans (disregard initial functional scans)”を選択します。そうすると、パイプラインの一番下にセットされますので、右側の”Move Up”をクリックして、”functional Label current functional files as “original data””の下にセットします。この流れをアニメーションGIFにしましたので、ご覧ください。

ここまですると前処理の設定が完了しました。最後に並列処理の設定を紹介します。macOSとLinuxの方で、CPUのコア数が多く、かつ、メモリがふんだんにある場合は非常に有用です。目安として、前処理を並列で行う場合、1列でメモリを最大3GB消費します。このため、メモリが8GBの方は、最大2列程度、メモリが16GBの方は最大4列程度、並列処理が行なえます。コア数よりもメモリに依存すると考えてよいでしょう。

並列処理をしたい場合は、前処理のウィンドウの右下の “local processing (run on this computer)” をクリックし、”distributed process (run on Background process (Unix,Mac))” を選択します。

ここまで設定できたら、“Start” をクリックします。そうすると、以下の画面が出てきます。

  • 並列処理を設定した場合は、いくつに分散するかのウィンドウが出ます。今、サンプルデータは 8コア CPU, メモリ 16GBのノートPCで処理したいので、4つに分散することにします。(最大12GBのメモリが使われることが想定されます)

  • Slice Orderを指定する画面が出ます。今回のサンプルデータは interleaved (Siemens) ですので、それを選んでOKをクリックします。

  • 最初のスキャンをいくつ取り除くかのウィンドウが出ます。10秒 = 5TR 分のスキャンを取り除くので、5 と入力 してOKをクリックします。

  • 外れスキャンの設定画面が出ます。これを “scrubbing”“censoring” と言います。ここではデフォルトの”User intermediate settings (97th percentiles in normative sample)” を選びます。下にあるように、Global signal のZ値が5以上外れた場合、そして、動きが0.9mm以上ある場合には外れスキャンとして扱われます。もし、conservative (95th percentiles)にした場合は、Z値が3以上、動きが0.5mm以上で外れスキャンとして扱われます。デフォルトのままOKをクリックします。

  • Segmentationの設定ウィンドウが出ます。基本、デフォルトのままで大丈夫です。デフォルト設定では、SegmentationにSPMで提供されているTissue Probability Mapを使います。そして、標準化後、構造画像のボクセルサイズは 1mm x 1mm x 1mm に、機能画像のボクセルサイズは 2mm x 2mm x 2mm に設定します。Bounding boxは[-90 -126 -72;90 90 108]となります。Bounding boxについて知りたい方は、こちらの記事をご参照ください。そのままOKをクリックします。

  • 平滑化の kernelサイズを設定します。デフォルトでは 8mm ですが、最近、6mm の設定の場合が多いので 6 に変更します。そのうえでOKをクリックします。

  • こうすると前処理がはじまります。並列処理をした場合は、下のようなウィンドウが表示されます。すべて処理が終わるとFinishedになります。

しばらく時間がかかりますので待ちます。

CONNチュートリアル (20.b対応): SETUP – Preprocessing” へのコメント

  1. 吉池と申します。
    いつも先生のWebsiteで、SPMやCONNの勉強を実施しています。

    今日は、ここのCONN(20.b)並列処理で、MATLAB 計算環境の事で、ご教示ください。
    (IT環境なので、見当違いなら申し訳ございません)

    それは、前処理の箇所ですが、先生のWebsiteでは、
    「distributed processing (run on Background process (Windows))」
    (先生の事例は、Unix,Macですが、私はWindows 10で解析しています。)
    をご紹介されています。

    さて、本日の質問は、この二つ上のラジオボタンの「queue/script it (save as scripts to be run later)」の機能に関して、どういった機能なのか、また、CONN前処理時にMATLABとどういった
    スクリプトを繋げる方法など、ご存じでしたら、ぜひご教授頂きたく、投稿致しました。よろしくお願い致します。

    • 吉池さん

      この queue / script に関しては、私自身、そこまで使ったことはないですが、たとえば、100人の処理をする際に、4つの並列処理をしたい場合、25人分の処理をひとつのスクリプトとして4つのスクリプトを保存する感じです。
      distributed processing は一気に始まってしまいますが、スクリプトとして保存すれば、実際に実行するのは後でもいいので、自分で実行するタイミングをコントロールできます。

      いずれにしてもシェルスクリプトとして吐き出されますので、mac/unix環境と考えてもらった方がいいかなと思います。

      • 根本先生

        早速のお返事、本当に御礼申し上げます。
        「シェルスクリプトとして吐き出される」の件、教えて頂きまして、本当に感謝申し上げます。

        今後も、引き続きよろしくお願い致します。吉池。

コメントを残す

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