CONNチュートリアル 10: Setup – Covariates 2nd-level

続いてCovariates 2nd-levelの設定です。
このCovariates 2nd-levelは、今設定しなくても大丈夫です。
(逆に言うと、これまで設定してきたものは最初に設定する必要があります。)
2nd levelのCovariatesは解析を進めていくなかで追加したくなるものもありますので、そのような親切な設計になっています。

ただ、今は、設定しましょう。

楽をしたいので、Matlabの方で少し準備を進めます。

まず、Matlabで現在のディレクトリを確認します。

pwd

で確認できます。

conn037

もし、conn_practiceのディレクトリにいないようでしたら、移動します。

そして、さらにその下のsampleディレクトリに移動します。

cd sample

この中にSubjects.txtというファイルがあります。
これはMatlabで読み込むことができるように工夫してあります。

これをMatlabで読み込み、subjという変数に代入しましょう。
変数名は何でもいいのですが、タイプすることを考えると短い方がいいでしょう。

Matlabから

subj=load('subjects.txt');

とすると、右側のワークスペースにsubjという変数ができているのがわかります。

subj

でその内容を見ることができます。

conn038

ここで、第1列は、IDなので実際は使いません。
第2列は、診断(健常者か統合失調症か)
第3列は、年齢
第4列は、性別(男性が1、女性が2)

となっています。

Matlabでは、変数の中で特定の列だけ使いたい場合は、

変数(:,その列)

という表し方をします。

今の場合、診断だけ取り出したいのであれば、

subj(:,2)

で表すことができます。

それで、CONNはMatlabで動くので、今作った変数をそのまま使うことができます。

それでは、CONNに戻ります。

左側のメニューからCovariates 2nd-levelに進みます。
(バージョン17からQAの結果がCovariates 2nd-levelに自動で入るようになりました。)

そして、画面中央の左側にあるCovariatesで”All Subjects”とある下をクリックします(何もないところです)。
そうすると、右側にenter covariates name hereと出てきます。

これから、診断と年齢と性別を順番にいれていきましょう。

まずは診断です。もともとのファイルには、健常者0、統合失調症1となっていますが、今後、群間比較することを考えて、controlという変数とpatientという変数を準備します。

まず、健常者から準備しましょう。

covariates nameを “control” とします。

[0 0 0 … 0 0 0]と0が20個並んでいますが、これを削除し、以下のようにタイプしてEnterキーを押してください。

subj(:,2)==0

subj(:,2)は先ほど出てきたものです。

subj(:,2)==0は、Matlabでの論理値というもので、0であれば真の値として1を、それ以外は偽の値ということで0を返すものです。つまり、今の場合、健常者は0なので、0であれば1にして、それ以外(といっても1しかないのですが)は0にするというものです。

また、画面下の方の”Description”には説明をつけられるようになっています。なので、今は”Control subjects”と入れておきましょう。

そうすると、下のようになるはずです。

次に、patientを準備します。

covariates nameを “patient” とします。

Valuesは

subj(:,2)==1

となります。

Descriptionは必須ではないのでいれなくてもいいでしょう。
ここでわざわざControlとPatientをわけておく理由は、後で群間比較をするためです。いわゆるダミー変数です。

同様に、年齢、性別も入れていきましょう。

年齢は
covariates name: age
values: subj(:,3)

性別は
covariates name: gender
values: subj(:,4)
Description: Male=1; Female=2

とします。

その結果、図のようになります。

Descriptionを書いておくと、項目名のすぐ右側にそのDescriptionが表示されるのですね。便利ですね。

ここまでできれば、共変量の設定はおしまいです。

CONNチュートリアル 09: Setup – Conditions and Covariates 1st-level

Setupの確認はあともう一息です。

左メニューから”Conditions”をクリックします。
rs-fMRIの場合、Conditionsはいじらなくて大丈夫です。
なのでこんな感じとだけ見ておきましょう。

その次に、”Covariates 1st-level”をクリックします。

画面中央のやや左に”realignment”, “QA_timeseries”, “scrubbing”の3つがあるのが見えます。

realignmentは位置合わせの情報を読み込んでいます。
translation(水平移動)とpitch(回転)に関して、x, y, z方向に頭がどれだけ動いたかの指標になります。

QA_timeseriesは外れ値に関しての情報です。2つの外れ値があります。ひとつが、信号値をZ変換した後に、各ボリュームの全体の値がどれだけ平均から外れているかであり、もうひとつが、頭の動きです。

scrubbingは、外れ値になるスキャンがどこになるかを示したものです。
この詳しい説明はいつかすることとします。

個人によっては動きが非常に激しい人がいることがわかります。(例Subject 16)
これも解析に加味されます。

CONNチュートリアル 08: Setup – Preprocessingの確認 (Structural, Functional, and ROIs)

それでは、前処理の結果、どうなったか確認しましょう。

左のメニューから”Structural”をクリックします。

そうすると、脳が頭蓋骨が除かれ、標準化された脳になっていることがわかります。

右側にマウスを持ってくると、赤枠で示すようなスクロールバーと、スクロールバーの上にある○印が出てきます。○印はクリックすると、Axial → Coronal → Sagittal と変化していきます。

次に、左のメニューから”Functional”をクリックします。

そうすると、当初は [150 Files]となっていたものが、今は[144 Files]となっていることに気づきます。前処理で最初の 6スキャンを除くとしていたことがここに反映されているわけですね。また、脳も標準化されています。

その次に、左のメニューから”ROIs”をクリックします。

そうすると、”Grey Matter”, “White Matter”, “CSF”, “atlas”, “network”というROIがあるのがわかります。GM, WM, CSFに関しては、segmentationの結果がそのまま反映されています。WM, CSFはこの後、”Denoising”に用いられます。

“atlas”および”dmn”はもともとCONNに用意されているものです。
これがどのように作られたのか、CONNの中にきちんと書かれています。
CONNがインストールされたディレクトリの中にroisというサブディレクトリがあり、”atlas.info”, “dmn.info”というファイルがあります。そこの記載を抜粋します。

まずは、”atlas.info”から。

ROIS defined from:

1) Cortical ROIs from FSL Harvard-Oxford Atlas maximum likelihood cortical atlas (HarvardOxford-cort-maxprob-thr25-1mm.nii); divided bilateral areas into left/right hemisphere; (91 ROIs)

2) Subcortical ROIs from FSL Harvard-Oxford Atlas maximum likelihood subcortical atlas (HarvardOxford-sub-maxprob-thr25-1mm.nii); disregarded Cerebral White Matter, Cerebral Cortex, and Lateral Ventrical areas; (15 ROIs)

3) Cerebellar parcelation from AAL Atlas (26 ROIs)

次に、”dmn.info”から。

Atlas of commonly used networks:
Default Mode Network (4 ROIs)
SensoriMotor (3 ROIs)
Visual (4 ROIs)
Salience / Cingulo-Opercular (7 ROIs)
DorsalAttention (4 ROIs)
FrontoParietal / Central Executive (4 ROIs)
Language (4 ROIs)
Cerebellar (2 ROIs)

ROIs defined from CONN’s ICA analyses of HCP dataset (497 subjects)

アトラスはてっきりAALと思い込んでいましたが、上をみると、違いますね。複数のアトラスをもとに構成されているということがわかりますね。

また、ネットワークはバージョン16では、dmnしかありませんでしたが、17eでは、複数のネットワークが準備されているということになります。

CONNチュートリアル 07: Setup – Preprocessing

これまで、構造画像、機能画像を指定してきました。
次に Setup -> ROIs に行かずに、画面左下にあるPreprocessingにうつります。

(前処理が終わっているという場合は、中級編になりますので、まずは、前処理をしていない状態で説明していきます)

まずは基本からいきましょう。
Preprocessingをクリックしたあと、最初に出てくる画面で、

default preprocessing pipeline for volume-based analyses (direct normalization to MNI-space)

になっていることを確認したうえで、

画面右側にある”Add”をクリックします。

そうすると、下図のようになります。

これは前処理の順番が記載されています。

  • functional Realignment & unwarp (subject motion estimation and correction)
  • 機能画像の位置合わせとunwarp (被験者の動きの評価および補正)を行います。

  • functional Center to (0,0,0) coordinates (translation)
  • これはAC-PC位置合わせの簡易版と思ってください。画像の原点を画像の重心に持ってきます。たいていの場合、これでAC-PCに比較的近いところにきます。ただ、これは万能ではありませんので、注意は必要です。

  • functional Slice-timing correction
  • 機能画像のスライスタイミング補正を行います。

  • functional Outlier detection (ART-based identification of outlier scans for scrubbing)
  • これは機能画像で頭が過度に動いてしまったようなスライスを検出するという機能です。scrubbingと言います。AFNIではcensoringと呼ばれています。ちなみに、outlierは外れ値という意味です。CONNではscrubbingにARTというプログラムを用いています。

  • functional Direct Segmentation & Normalization (simultaneous Gray/White/CSF segmentation and MNI normalization)
  • 機能画像のSegmentationと解剖学的標準化を行います。

  • structural Center to (0,0,0) coordinates (translation)
  • 先ほどと同様に構造画像も画像の原点を画像の重心に持ってきます。

  • structural Segmentation & Normalization (simultaneous Gray/White/CSF segmentation and MNI normalization)
  • 構造画像の分割化と標準化を行います。ここでの標準化はDARTELでなく、低次元の標準化であることに注意してください

  • functional Smoothing (spatial convolution with Gaussian kernel)
  • 機能画像の平滑化を行います。

デフォルトでは、この順番で行います。この内容を変えたければ、適宜右側にあるAdd, Remove, Move Up, Move Downを使っていけばいいわけです。

まずは基本でこのままでもいいのですが、最初のスキャンを省きましょう。
fMRIでは最初の数スキャンは磁場が安定しないため、取り除いた方がいいと言われています。今回のCOBREのデータは、最初の4スキャンはすでに除かれているということですが、さらに6スキャン(トータル10スキャン)除いてみましょう。

Data Preprocessing stepのところで先ほどまでDefaultだったものから、

functional Removal of initial scans (disregard initial functional scans)

を選択し、Addをクリックします。

一番下に追加されますので、Move upで一番上に持って行きましょう。
取り除くので、一番最初にしてしまった方がいいと思いますので…。

下図のようになるはずです。

これで前処理の準備ができました。
“Start” をクリックしましょう。

そうすると、最初に平滑化のパラメータを聞かれます。デフォルトのまま8でOKです。

conn024

次に、fMRIのスライスオーダーを聞かれます。
COBREのデータセットのスライスオーダーはSiemensのinterleavedですので、

interleaved (Siemens)

を選択します。

conn025

次に、最初の何スキャンを取り除くかの画面が出ます。
今、ここでは6としておきます。
そうすると、すでに取り除かれている4スキャンとこの6スキャンでトータル10スキャンが取り除かれることになります。TRが2秒ですから、20秒分取り除くことになります。どのくらいかというのはいろいろあるようですので、各ラボごとに決めたらよいと思います。

conn030

次に、外れ値の閾値を設定する画面が出ます。

かつては、”liberal”か”conservative”しかなかったのですが、最近のバージョンでは、”intermediate”が付け加わりました。

以下のような関係になっています。

liberal: Global signal はZ値に換算して 9SD まで、被験者の動きは、2mm までは許容する。
intermediate: Global signal はZ値に換算して 5SD まで、被験者の動きは、0.9mm までは許容する。
conservative: Global signal はZ値に換算して 3SD まで、被験者の動きは、0.5mm までは許容する。

正直、conservativeだと厳しすぎるし、liberalだとゆるすぎるなと思っていたので、intermediateがいいなと思います。
実際、conn17eでは、intermediateがデフォルトになっています。

メニューから、デフォルトの

Use intermediate settings (97th percentiles in normative sample)

を選択してください。

そうすると、下図のようなメッセージが表示され、前処理がはじまります。
私の環境(Core i7, メモリ16GB, Thinkpad X250, Lin4Neuro based on Ubuntu 14.04) のノートPCで20例で4時間でした。1例あたり10分〜15分程度という感じです。しばらくゆっくりするしましょう。

前処理が終わると以下のメッセージが出ます。

次で、前処理の結果を確認します。

CONNチュートリアル 06: Setup – Functional

Structuralに続いてfMRI画像を指定します。

Setup -> Functional といきます。

先ほどと同じ要領で、まず、画面真ん中のSubjectを選択します。

次に、画面右側のフィルタに

F.*.nii

と入力し、”Find”をクリックします。そうすると、Fではじまる画像が出てきます。

これで先ほどと同様に画像を選択し、”Select”とクリックすれば、画像が割り当てられ、先ほどと同様に下のダイアログが表示されます。

ここで画面中央のSubjectに戻り、クリックするとfMRI画像が表示されます。
マウスを画像の上に持ってくると、下のように、画像のファイル名などを見ることができます。これで、構造画像と機能画像が同じ順番で並んでいるかを確認してください。

ちなみに、画像を選択する場面で、右上にある”ALT Select”がなんだろうと思った方がいらっしゃるかもしれません。これをクリックすると、SPMのファイル選択画面が出てきます。SPMに慣れている方はこちらを使うのも手です。

conn020

CONNチュートリアル 05: Setup – Structural

SetupでBasic infoを入力した後は、Structuralをクリックします。

そうすると、下図のようになっているかと思います。

重要なのは、真ん中のエリアと右側のエリアです。

まず、真ん中のエリアで、
Subject 1 〜 Subject 20までをすべて選びます。

ここで全部選んでおくと、これから先でファイルを選択した際にデータが一度に各Subjectに割り当てられます。(楽するためのコツです)

次に、右側のエリアにマウスをもっていきます。そうすると何もなかったところに表示が出てきます。CONNはこのような隠しメニューがいろいろあります。作者の方のセンスなのだと思います。メニューがびっしりのAFNIと対照的ですね。

そうしたら、ファイルを選択しますが、2つ方法を示します。

  1. ディレクトリを丁寧に追っていく方法
  2. ここにはひとつひとつ示しませんが、画面の上にあるディレクトリ(オレンジ色で示されています)をダブルクリックしながらデータのあるディレクトリまで進んでいく方法です。

  3. フィルタを上手に使う方法
  4. こちらはよりスマートな方法です。
    今、構造画像はファイル名がVから始まる画像です。
    そして最後が.niiで終わりますので、
    正規表現を用いて表すならば、

    V.*.nii

    と表すことができます。
    ひとつ気をつけなければ行けないのは、ここはワイルドカードではなく、正規表現ということです。

    正規表現において、*は、「前の0回以上の繰り返し」という意味があります。

    なので、

    V*.nii

    としてしまうと、Vは全く意味がなくなり、

    「終わりがniiで終わるもの」

    という意味になってしまいます。

    一方、正規表現では、.は「任意の一文字」という意味になりますので、

    V.*.nii

    だと、

    「最初がVでその後が何でもよくて最後がniiで終わるもの」

    という意味になります。

    これを画面下に入力し、そして、そのちょっと上にある “Find” をクリックします。

    そうすると、確かに、Vではじまるファイルがならび、その下に “20 files found” と出てきます。これが確かにほしいものです。

    conn013

    ここで、Vから始まるファイルをすべて選択したうえで、”Select”をクリックします。

    そうすると、

    と出ますので、そのままOKをクリックします。

そうしたら、画面の真ん中に戻って、Subjectを適当にクリックしてみてください。画面にそれぞれ割り当てられた画像が表示されます。

これで、構造画像の指定は終わりました。

CONNチュートリアル 04: Setup – Basic

さて、サンプルデータも手に入ったところで、設定を始めていきます。

CONNでは、画面上の“Setup” “Denoising” “first-level Analysis” “second-level Analysis” の順番に進んでいきますが、
各項目において、左側の見出しを設定していきます。

上が大項目、左が小項目と覚えておけばいいでしょう。

それでは、まず、Setup -> Basic と選択します。

Number of subjects: 今回使うサンプルデータは合計20例ですので、20と入力します。
Number of sessions: 上を20と入れると自然に 1 1 1 … 1 1 1と入るはずです。resting-state fMRIは基本的に1セッションですので、これでOKです。もし、タスクfMRIならば、セッション数は変わります。
Repetition Time: TRを入力します。サンプルデータのTRは2000msec、つまり2sです。今はそのままで大丈夫ですが、もし、2500msecでしたら、2.5と入力します。全部入力するのは、めんどくさいので、matlab の ones を上手に使います。

2.5を20個並べたかったら、

2.5*ones(1,20)

と入力し、Enterをおすと自動で2.5が20個並びます。

Acquisition type: デフォルトのままContinuousで結構です。

これでBasicのセットアップは終了です。

CONNチュートリアル 03: サンプルデータ

CONNを試したいけれどもデータがないという方のためにデータを準備しました。

COBREデータセットから、30代の健常者と統合失調症患者をそれぞれ10例ずつ集めてあります。

データはこちらからダウンロードしてください。500MB強あります。

ZIPファイルをダウンロードし、展開すると、そこにsampleフォルダがあります。
また、subjects.txtもあります。後ほど使います。
このsampleフォルダを先ほど作成したconn_practiceの下に置いてください。

CONNチュートリアル 02: プロジェクトの作成【重要】

CONNで絶対に忘れてはいけないことは、【最初にプロジェクトファイルを作成すること】です。

プロジェクトファイルに、すべての解析情報が残されます。
逆に、プロジェクトファイルを最初に作らないで解析をすると、
解析はできてしまうのですが、CONNを終了するとすべて消えます。

CONNの解析時間はそれなりにかかりますので、なくなった時の落胆は結構大きいです。
私はこのミスを3回やって、学びました。

「愚者は経験に学び、賢者は歴史に学ぶ。」という名言にあるように、
皆様は私のように愚者にならないでください。

こんなことを書いていたら、バージョン17eでは、新規ファイルを作成する際に最初にプロジェクトファイルを指定するようになりました。

プロジェクトファイルは以下の2つの方法のどちらかで、簡単にできます。

  • CONNの中央のNewをクリックする
  • CONNの左上のProject -> New(blank) を選ぶ。

そうすると、プロジェクトファイルを保存するダイアログが出てきます。

注意しておくことは、以下の2点です。

  • CONNのデータはかなり大きなものになります。十分に容量の大きい領域を選びます。
  • プロジェクト1つあたり、専用のディレクトリ(フォルダ)を作成してそこに保存するようにしましょう。そうしないと、後で後悔します。
  • 今、私は、自分が普段画像解析を行うディレクトリimg_dataの下にconn_practiceというディレクトリを作成し、その下にデフォルトのままconn_project01.matを保存することにしました。

    そうすると、CONNの一番下の画面にプロエジェクトが保存されているディレクトリが表示されます。

この下に、ハードディスクの空きがあとどのくらいあるかも示されます。CONNではひとつのプロジェクトで100GB程度使うことも稀ではありません。もし、ノートパソコンなどでトライされる場合には、十分な容量のある外付けHDDで作業をすることをオススメします。

この2つが準備されれば、次に進みましょう。

CONNチュートリアル 01: インストール

2016年4月にボストンで開催されたCONNのワークショップに参加してきました。

このワークショップに日本人で参加したのは私がはじめてということで、学んだことをこのブログでフィードバックしていきたいと思います。

  • 必要なソフトウェア
  • MatlabおよびSPM8以降が必要です。

  • ダウンロード
  • NITRCからダウンロードします。

    CONNのダウンロードページ

    2017年6月現在の最新バージョンは17.eです。conn17e.zipをダウンロードします。

  • インストール
  • インストールはSPMと同じ要領です。適当なところにダウンロードしたzipファイルを展開し、そのディレクトリをMatlabのパスに追加します。SPMよりも下に置いておいた方がいいと思います。

    Linux環境ですが、私の場合、下図conn000のようになっています。

  • 起動
  • 起動は簡単です。Matlabから

    conn
    

    とタイプするだけです。

    下図の画面が出れば成功です。

  • アップデート
  • CONNのアップデートは簡単です。画面左上の Help -> Update を選択するだけです。アップデートがあれば教えてくれます。

これでCONNのインストールは完了です。