包括脳2016 nodd iturorial_jpn_20160123_slideshare
TRANSCRIPT
NODDI神経突起方向散乱・密度イメージング―概論、導入方法、高速化―
金井良太 1 ・高橋康介 1,2 ・○松吉大輔 1,2,3
1 (株)アラヤ・ブレイン・イメージング2 東京大学先端科学技術研究センター
3 早稲田大学理工学術院
2016 年 1 月 23 日 ( 土 ) 包括脳 MRI 脳画像解析チュートリアル@東京大学医学部附属病院
○ スライド作成・発表
araya brain imaging inc.
www.araya.org
Topics• NODDI
– NODDI 概論– NODDI の導入方法
• NODDI の高速化( AMICO )– AMICO 概論– OS 別のコンパイル環境構築方法– AMICO の導入方法
Neurite |神経突起
Axons DendritesJacobs et al (1997) J Comp NeurolZhang et al (2012) ISMRM
加齢変化
Jacobs et al (1997) J Comp NeurolZhang et al (2012) ISMRM
脳微細構造のイメージング
• FA や MD 等、伝統的な DTI 測度は非特異的 (Pierpaoli et al., 1996).
• FA の減少は、神経突起密度の減少なのか、神経突起散乱の増大なのか分からない
• これを解決しようとするのが NODDI 。
脳微細構造のイメージング
• NODDI とは・・・– Neurite Orientation Dispersion and Density
Imaging– 神経突起方向散乱・密度イメージング
• NODDI は DWI に対して 1) 神経突起散乱と 2) 神経突起密度、 3) CSF それぞれに対応するモデルを当てはめて「分離」する。
NODDI’s compartment model
• V_iso: CSF の volume fraction (体積分率)• V_ic: 細胞内区間(軸索と樹状突起)の体積分率
• A_ec: 細胞外区間(グリア・灰白質では細胞体)の拡散信号– 自由拡散(阻害拡散)。異方ガウシアン。
• A_iso: CSF の拡散信号– 自由拡散。等方ガウシアン。
• A_ic: 細胞内区間の拡散信号– シリンダーモデル(太さ 0 )。ワトソン分布ベース。
CSF細胞外細胞内
NODDI’s compartment model
Zhang et al (2012) NeuroimageZhang et al (2012) ISMRM
• ワトソン分布に基づく方向散乱シリンダーモデル
NODDI’s compartment model
b: b 値 , q: MPG の方向 , n: 拡散方向(実際は stick の方向)d||: diffusivity
M: 超幾何分布系の何か(合流型超幾何関数)μ: 方向の平均κ: μ についての concentration parameter
Zhang et al (2012) Neuroimage
3種の NODDI 画像
Zhang et al (2012) Neuroimage
• Orientation Dispersion Index (ODI)– 神経突起の方向散乱の程度(散らばり)
• Intracellular Volume Fraction (ICVF)– 神経突起密度(詰まり具合)
• Isotropic Volume Fraction (ISO)– 脳脊髄液( CSF )
NODDI と FA の関係
Zhang et al (2012) Neuroimage
Zhang et al (2012) Neuroimage
Zhang et al (2012) Neuroimage
NODDI の可能性
Winston et al (2014) Epilepsy Res
• 局所皮質形成異常 (focal cortical dysplasia)– FCD が判別しやすい!
NODDI の可能性
Nazeri et al. (2015) J Neurosci
• 年齢予測– FA よりも格段に予測力が高い!
NODDI の可能性
• FA より灰白質の情報が多い– FA では灰白質はかなり低い値に偏るが、
NODDI では広く分布する。
NODDI の可能性
• FA より灰白質の情報が多い– FA では灰白質はかなり低い値に偏るが、
NODDI では広く分布する。
p(GM), p(WM) ≥ 80%
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
NODDI に必要なもの
• 必要ではないがあった方がいいもの– Parallel Computing Toolbox ( 有料 )
• 複数の CPU コアを使って解析を高速化
• 1コア (2.4 GHz, 8GB RAM のマシン )– 約 3 日間
• 8コア( Parallel computing toolbox 使用)– 約 9時間
チュートリアルの推奨環境
• マシンスペック– 2.0 GHz 以上の CPU– 6 GB 以上の RAM
• Windows– Windows 7 SP1 (64 bit)
• Mac– Mac OS X 10.7 (Lion) 以降
• OS X 10.11 (El Capitan) は注意が必要。
• Linux ※ チュートリアルではサポート外
–一部のディストリビューションで動かない。
( 2016 年 1 月 23 日現在)
チュートリアルの推奨環境
• Windows のバージョン– Windows 7 SP1 (64 bit) を推奨します。– Windows 8 でもおそらく動きます。– Windows 10 では、本スライドで紹介する方
法では動かない可能性が高いです。• 現状では MATLAB はじめ、 Windows10への細
かな対応が不十分です。• 環境によっては動く可能性はあります。• アップデートした Windows 10 の場合、状況が千差万別なので、解決が困難です。
チュートリアルの推奨環境
• ユーザーネームについての注意– ユーザーネームが日本語等 2バイト文字、
あるいは空白を含む場合、うまく動かない可能性があります。
– 上記に該当する場合、半角英数字のみからなるユーザーネームを持つ、解析用の新しいアカウントを作成して下さい。
環境構築前の注意
• これから行う操作は 2016 年 1 月の時点で複数の環境でテストしていますが、全ての環境で成功することを保証できません。
• OS/ プログラムのそれなりに深い部分を操作しますので、場合によっては深刻な事態が生じる可能性がありますが、本スライドに従った作業による損害に対して一切責任は負いません。
• ご自身の責任において操作して下さい。• チュートリアルのために簡略化しています。
研究目的に応じて、各自が手法を工夫・最適化する必要があります。
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
NODDI に必要な DWI• 2 Shells 以上
– Shell とは b0 以外の b 値の数– b0, b1000, b2000 で撮像= 2 shells
• 画像が綺麗になる“ Rule of Thumb”– Shell 数が多い– Gradient orientation の数が多い
• 臨床的実用性を考慮したshell/orientation 数の見極めが重要
ODI | Shell 数の影響
Zhang et al (2012) Neuroimage
ODI | Shell 数の影響
Zhang et al (2012) Neuroimage
フルデータセット (4 shells)b=711 (30 軸 )b=1000 (30 軸 )b=2000 (60 軸 )b=2855 (60 軸 )
ODI | Shell 数の影響
Zhang et al (2012) Neuroimage
b=711 (30) b=2000 (60)
分割データセット (2 shells)
b=711 (30) b=2855 (60)
b=1000 (30)b=2000 (60)
b=1000 (30)b=2855 (60)
ODI | Shell 数の影響
Zhang et al (2012) Neuroimage
分割データセット (2 shells)
b=711 (15) b=2855 (30)
b=711 (10) b=2855 (20)
軸数を削減!
ODI | Shell 数の影響
Zhang et al (2012) Neuroimageb=711 (30)
分割データセット (1 shell)
b=1000 (30) b=2000 (60) b=2855 (60)
ODI | Shell 数の影響
Zhang et al (2012) Neuroimage
ODI | Shell 数の影響
論文: 1 shell でも十分・・・
実際: 2 shells 以上をお薦め(これまでの経験上、
1 shell ではかなり汚い画像しか出ません)
ICVF | Shell 数の影響
Zhang et al (2012) Neuroimage
ICVF | Shell 数の影響
Zhang et al (2012) Neuroimage
論文: 2 shells 以上が必要
ただし、これまでの経験上、Direction 数 30-30 程度では
論文ほど綺麗にはなりません…
実際: 2 shells 以上( high b-value で 60 directions 程度あると
さらに良い)
ISO | Shell 数の影響
Zhang et al (2012) Neuroimage
ISO | Shell 数の影響
Zhang et al (2012) Neuroimage
論文: Low b-value の 1 shell でまあまあ2 shells 以上で十分
実際:論文の通り
まとめ: Shell 数の影響
2 shells 以上が必要Low b-value: 30 directionsHigh b-value: 30 directions
論文ほど綺麗ではないが、上記で使えるレベルの画像にはなる
(余裕があれば、High b-value を 60 directions で…)
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
MATLAB• Mathworks社開発の
プログラミング言語・開発環境
Academic価格で約 10万円
Optimization Toolbox• MATLAB の toolbox
– MATLAB に追加購入する便利なスクリプト群
Academic価格で約 4万円
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
NODDI スクリプト
https://www.nitrc.org/projects/noddi_toolbox/
リストボックスから適切なものを選び、赤い矢印ボタンを押してダウンロードします。
NODDI スクリプト
https://www.nitrc.org/projects/noddi_toolbox/
が、その前に・・・
NODDI スクリプト
https://www.nitrc.org/projects/noddi_toolbox/
ダウンロードのために、 NITRCのアカウント登録が必要です。
NODDI スクリプト
NITRC (Neuroimaging Informatics Tools and Resources Clearinghouse) とは・・・
https://www.nitrc.org/include/about_us.php
https://www.nitrc.org/projects/noddi_toolbox/
NODDI スクリプト
登録後、メールが届くので、記載の URL にアクセスして、アカウントを有効にします。
NODDI スクリプト
https://www.nitrc.org/projects/noddi_toolbox/
リストボックスから適切なものを選び、赤い矢印ボタンを押してダウンロードします。
1. NODDI_toolbox_v0.9.tar.gz (NODDI スクリプト )
2. NODDI_example_dataset.zip (サンプルデータ )
NODDI スクリプト
https://www.nitrc.org/projects/noddi_toolbox/
ライセンス条項をよく読み、Agreeボタンを押してダウンロードします。
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
niftimatlibhttp://sourceforge.net/projects/niftilib/files/niftimatlib/niftimatlib-1.2/
niftimatlib-1.2.tar.gzをクリックしてダウンロード。
[補足 ] tar.gz とは・・・• ファイル圧縮方式の 1 つ• [Windows] Lhaplus などで解凍できます。
http://www.vector.co.jp/soft/dl/win95/util/se169348.html
• [Mac] 1. ダブルクリックで解凍できます。2. Unarchiver などで解凍できます。https://itunes.apple.com/jp/app/the-unarchiver/id425424353
3. ターミナルからも解凍できますtar zxvf NODDI_toolbox_v0.9.tar.gz
[補足 ] Lhaplus• インストール後・・・
– C:\Program Files (x86)\Lhaplus\Lhaplus.exeを右クリック→ [管理者として実行 ] クリック
– [ 関連づけ / シェル ]“gz” をチェック
–適用ボタンをクリック– OK をクリック
– これで解凍できます。
ファイルの解凍先
• 2つのファイルを解凍しましょう。niftimatlib-1.2.tar.gzNODDI_toolbox_v0.9.tar.gz
• 解凍先はどこでも構いません が、分か・・・りやすい場所に置きましょう。例えば[Win] C:\Users\username\matlab\[Mac] /Users/username/matlab/など
username にはご自身のログイン名が入ります!
ファイルの解凍先
• 【補足】 Users の場所[Win] C:\Users\usernameは【コンピュータ→ C ドライブ→ユーザー】の中にあります。[Mac] /Users/username/は【Machintosh HD→ユーザ】の中にあります。
• 自分のログイン名の下に matlabフォルダを作りましょう。
ファイルの解凍先
• matlabフォルダの下に、さらにniftimatlib-1.2NODDI_toolbox_v0.9というフォルダを作って、その中にフォルダを解凍して下さい。
• ただし、大体の場合、ファイル名と同じ名前のフォルダが自動的に作られます。
[注意 !] NODDI スクリプト
• MATLAB 2013b 以降でうまく動かないことが知られています。
1. 修正スクリプトを用意したので、https://github.com/dicemt/NODDIfix/から batch_fitting.m をダウンロード。
2. NODDI_toolbox_v0.9→fittingフォルダの中にある batch_fitting.m を上書き。
[注意 !] NODDI スクリプト
• https://github.com/dicemt/NODDIfix/
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
NODDI に必要なもの
• 必要条件1. 2 shells 以上の DWI ( 例えば
b0,b1000,b2000)2. MATLAB ( 有料 )3. Optimization Toolbox ( 有料 )4. NODDI スクリプト (MATLAB)
https://www.nitrc.org/projects/noddi_toolbox/5. niftimatlib (MATLAB) http
://sourceforge.net/projects/niftilib/files/niftimatlib/
DWI データ
• 今回は先ほどダウンロードしたサンプルデータを使用します。NODDI_example_dataset.zip
• 解凍すると、以下のようなファイルが出来ます。
NODDI_example_dataset output解析前 解析後
DWI データ
• [フォルダ ] NODDI_example_dataset
全脳のマスク
関心領域 1 スライスだけのマスク
DWI 画像DWI に対応する b-valuesDWI に対応する Gradient directions
解析前
DWI データ
• [フォルダ ] output
xyz各軸の線維方向
Intracellular Volume FractionIsotropic Volume Fraction
Concentration parameterOrientation Dispersion Index
Fitting objective function values
フィットパラメタ関心領域 (ROI) に関する情報
解析後
NODDI 解析の中身
1. 関心領域 (ROI, region of interest) の設定
2. DWI 情報(撮像条件)の読み込み3. NODDI モデルの作成4. NODDI モデルのフィッティング5. 画像出力
NODDI の動かし方
• MATLAB の起動– [Win] スタートボタン→全てのプログラム→
MATLAB– [Mac] アプリケーション→MATLAB
NODDI の動かし方
• エディタを開きます– [新規スクリプト ]ボタンをクリック
NODDI の動かし方
• エディタが開きます– この中にスクリプトを書いていきます。
NODDI の動かし方
• 出来上がりは 8行のスクリプトです。– 要素ごとに説明をしていきます。– https://github.com/dicemt/CBSN_NODDIから
ダウンロード可能です。※ CBSN_NODDI_ から始まるファイル
addpath(genpath('C:\Users\username\matlab\NODDI_toolbox_v0.9'));addpath(genpath('C:\Users\username\matlab\niftimatlib-1.2'));cd 'C:\Users\username\matlab\NODDI_example_dataset'CreateROI('NODDI_DWI.hdr', ‘roi_mask.hdr', 'NODDI_roi.mat');protocol = FSL2Protocol('NODDI_protocol.bval', 'NODDI_protocol.bvec');noddi = MakeModel('WatsonSHStickTortIsoV_B0');batch_fitting('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat', 2);SaveParamsAsNIfTI('FittedParams.mat', 'NODDI_roi.mat', 'brain_mask.hdr', 'example');
NODDI の動かし方
• スクリプトの説明– CBSN_NODDI_OS名 _ コア _ROI( 解析対象 ).mという順番で名前を付けています。
• [Win マルチコア 1 スライス ] CBSN_NODDI_Win_Multi_1Slice.m• [Win1 コア 1 スライス ] CBSN_NODDI_Win_Single_1Slice.m• [Win マルチコア全脳 ] CBSN_NODDI_Win_Multi_WholeBrain.m• [Win1 コア全脳 ] CBSN_NODDI_Win_Single_WholeBrain.m• [Mac マルチコア 1 スライス ] CBSN_NODDI_Mac_Multi_1Slice.m• [Mac1 コア 1 スライス ] CBSN_NODDI_Mac_Single_1Slice.m• [Mac マルチコア全脳 ] CBSN_NODDI_Mac_Multi_WholeBrain.m• [Mac1 コア全脳 ] CBSN_NODDI_Mac_Single_WholeBrain.m
NODDI の動かし方
• スクリプトの説明– CBSN_NODDI_OS名 _ コア _ROI( 解析対象 ).m
という順番で名前を付けています。• [Win マルチコア 1 スライス ] CBSN_NODDI_Win_Multi_1Slice.m• [Win1 コア 1 スライス ] CBSN_NODDI_Win_Single_1Slice.m• [Win マルチコア全脳 ] CBSN_NODDI_Win_Multi_WholeBrain.m• [Win1 コア全脳 ] CBSN_NODDI_Win_Single_WholeBrain.m• [Mac マルチコア 1 スライス ] CBSN_NODDI_Mac_Multi_1Slice.m• [Mac1 コア 1 スライス ] CBSN_NODDI_Mac_Single_1Slice.m• [Mac マルチコア全脳 ] CBSN_NODDI_Mac_Multi_WholeBrain.m• [Mac1 コア全脳 ] CBSN_NODDI_Mac_Single_WholeBrain.m
– チュートリアルではまず「 1 スライス」のものを使います。
NODDI の動かし方
• スクリプトの説明– CBSN_NODDI_OS名 _ コア _ROI( 解析対象 ).m
という順番で名前を付けています。• [Win マルチコア 1 スライス ] CBSN_NODDI_Win_Multi_1Slice.m• [Win1 コア 1 スライス ] CBSN_NODDI_Win_Single_1Slice.m• [Win マルチコア全脳 ] CBSN_NODDI_Win_Multi_WholeBrain.m• [Win1 コア全脳 ] CBSN_NODDI_Win_Single_WholeBrain.m• [Mac マルチコア 1 スライス ] CBSN_NODDI_Mac_Multi_1Slice.m• [Mac1 コア 1 スライス ] CBSN_NODDI_Mac_Single_1Slice.m• [Mac マルチコア全脳 ] CBSN_NODDI_Mac_Multi_WholeBrain.m• [Mac1 コア全脳 ] CBSN_NODDI_Mac_Single_WholeBrain.m
– チュートリアルではまず「 1 スライス」のものを使います。マルチコア版を使うには、 Parallel Computing
Toolbox の購入が必須です!
NODDI の動かし方
1. MATLAB のパスの設定– スクリプトがどこにあるかを MATLAB に認識させます。
[Win]addpath(genpath('C:\Users\username\matlab\NODDI_toolbox_v0.9'))addpath(genpath('C:\Users\username\matlab\niftimatlib-1.2'))
[Mac]addpath(genpath('/Users/username/matlab/NODDI_toolbox_v0.9'))addpath(genpath('/Users/username/matlab/niftimatlib-1.2'))
username にはご自身のログイン名が入ります!
NODDI の動かし方
2. roi.mat を作成– NODDI 内部で使いやすいように
ROI の情報が入ったファイルを作成します。[Win]cd 'C:\Users\username\matlab\NODDI_example_dataset'CreateROI('NODDI_DWI.hdr', 'roi_mask.hdr', 'NODDI_roi.mat');
[Mac]cd '/Users/username/matlab/NODDI_example_dataset'CreateROI('NODDI_DWI.hdr', 'roi_mask.hdr', 'NODDI_roi.mat');
NODDI の動かし方
3. bval/bvecファイル変換– NODDI 内部で使いやすいように bval/bvec
の情報が入ったファイルを作成します。
[Win/Mac共通 ]protocol = FSL2Protocol('NODDI_protocol.bval', 'NODDI_protocol.bvec');
NODDI の動かし方
4. NODDI モデルの作成– 分布に基づいて NODDI モデルを作成します。
[Win/Mac共通 ]noddi = MakeModel('WatsonSHStickTortIsoV_B0');
NODDI の動かし方
5. NODDI モデルのフィッティング– 実際の解析を行うプログラムです。
[Win/Mac共通 ]A. Parallel computing toolbox がある場合batch_fitting('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat', 8);
B. Parallel computing toolbox がない場合batch_fitting_single('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat');
解析に使用するCPU コア数
[補足 ] コア数の確認方法
• MATLAB コマンドウィンドウ上で下記コマンドを打つと
feature('numCores')
以下のような出力が出てきますMATLAB detected: 4 physical cores.MATLAB detected: 8 logical cores.MATLAB was assigned: 8 logical cores by the OS.MATLAB is using: 4 logical cores.MATLAB is not using all logical cores because hyper-threading is enabled.
ans =
4解析に使用可能な最大 CPU コア数
MATLAB のバージョンによってはこの部分のメッセージは表示されません
[補足 ] コア数の確認方法
• 全てのコアを使用すると、解析中は他の作業ができなくなります。
• 解析専用マシンでない場合や、他の人も使用する場合は、使用する CPU コア数を減らしましょう。– 4 コアあるなら、 3 コア使用など。
batch_fitting('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat', 3);
NODDI の動かし方
6. NIfTI 画像の保存– 解析結果を NIfTI 画像として保存します。
[Win/Mac共通 ]SaveParamsAsNIfTI('FittedParams.mat', 'NODDI_roi.mat', 'brain_mask.hdr', 'example');
NODDI の動かし方
7. スクリプトを動かす– 出来上がったスクリプトをエディタから
MATLAB のコマンドウィンドウにコピーします。
NODDI の動かし方
7. 解析が始まります・・・– Parallel Toolbox 使用の場合、以下のような
ウインドウが出てくるので、計算終了まで待ちます。
※ 2 コア CPU の標準的マシンで 1時間弱。
※ 計算時間は環境に大きく依存します。– MATLAB 内に” 5478 of voxels to fit” と表示されているか確認しましょう。
NODDI の動かし方
8. 解析が終了しました。– 以下のような画像が出力されます。
example_odi.nii (Orientation Dispersion)example_ficvf.nii (Intracellular Volume Fraction)example_fiso.nii (Isotropic Volume Fraction)example_fiberdirs_{x,y,z}vec.nii (Fiber Direction)example_kappa.nii (Concentration Parameter)example_fmin.nii (Fitting objective function values)example_error_code.nii (Error)
– ‘output’フォルダの画像と比較しましょう。– z=26 のスライスに画像が表示されるはずです。
[補足 ] mricron のインストール
• 脳画像を見るには、 mricron が便利です。
http://www.mccauslandcenter.sc.edu/mricro/mricron/install.html– 画像を見るだけじゃなく、 ROI の作成や 3D
レンダリングなど、色々なことが出来ます。• 上記ページから、ダウンロードサイトに飛び 1JUNE2015版を選びましょう。– Win/Mac/Linux で使用可能です。
NODDI の動かし方(全脳)
1. スライス 1枚分の解析が終わったので、次は全脳を解析します。– スクリプトの一部分だけを変えます。
addpath(genpath('C:\Users\username\matlab\NODDI_toolbox_v0.9'));addpath(genpath('C:\Users\username\matlab\niftimatlib-1.2'));cd 'C:\Users\username\matlab\NODDI_example_dataset'CreateROI('NODDI_DWI.hdr', 'brain_mask.hdr', 'NODDI_roi.mat');protocol = FSL2Protocol('NODDI_protocol.bval', 'NODDI_protocol.bvec');noddi = MakeModel('WatsonSHStickTortIsoV_B0');batch_fitting('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat', 2);SaveParamsAsNIfTI('FittedParams.mat', 'NODDI_roi.mat', 'brain_mask.hdr', 'example');
※ 「スライス 1枚」での解析結果が残っていると「全脳」の解析ができなくなるので、解析によって作成された niiファイルや matファイルは、別のフォルダを作って格納しておきましょう。
NODDI の動かし方(全脳)
2. スクリプトを動かす– 出来上がったスクリプトをエディタから
MATLAB のコマンドウィンドウにコピーします。
NODDI の動かし方(全脳)
3. 解析が始まります・・・– しばし待ちます・・・※ 2 コア CPU の標準的なマシンで約 1 日。
※ 計算時間は環境に大きく依存します。– MATLAB 内に” 178924 of voxels to fit” と
表示されているか確認しましょう。
NODDI の動かし方(全脳)
4. 解析が終了しました。– 以下のような画像が出力されます。
example_odi.nii (Orientation Dispersion)example_ficvf.nii (Intracellular Volume Fraction)example_fiso.nii (Isotropic Volume Fraction)example_fiberdirs_{x,y,z}vec.nii (Fiber Direction)example_kappa.nii (Concentration Parameter)example_fmin.nii (Fitting objective function values)example_error_code.nii (Error)
–全脳で解析がされているのを確認しましょう。
スクリプト打つのが面倒・・・• 本日使用したスクリプトは、下記からダウンロードできます。https://github.com/dicemt/CBSN_NODDI– 全部で 8 種類のスクリプト– Win or Mac ×
マルチコア or シングルコア × 1 スライス or 全脳
– Windows でマルチコアで全脳解析したい→ CBSN_Win_Multi_WholeBrain.m
スクリプト打つのが面倒・・・
NODDI の高速化
凸最適化による微細構造イメージング高速化
( AMICO )
NODDI の計算時間
• データ– b0=1枚、 b1000=30枚、 b2000=30枚– 120×120×80
• 1コア– 約 3 日間
• 8コア( Parallel computing toolbox 使用)– 約 9時間
ちょっと時間がかかり過ぎる・・・
AMICO による高速化
• AMICO (Accelerated Microstructure Imaging via Convex Optimization)– Daducci et al (2015) Neuroimage–凸最適化による微細構造イメージング高速化
10 分3 日 (1 コア )
9時間 (8 コア )
オリジナル AMICO
[注意 ] ただし・・・• オリジナルの NODDI 画像と AMICO の
NODDI 画像は同一ではない。• AMICO はあくまで「オリジナル NODDI の
非線形計算の部分を線形に定式化して、解析解を求められるようにしたもの」
• どちらが「良い」「正しい」かは未知。• ある種の疾患 / 条件において、不適な場合
があるかもしれないしないかもしれない。
[注意 ] ただし・・・Q1. では、どうすればよいか?A1. 両方やる。
Q2. 時間コストが・・・A2. 二者の比較をするだけでも、 十分よい研究になりえる。 重要な情報が埋もれている可能性も。
オリジナル NODDI と AMICO
Daducci et al (2015) Neuroimage
どうやって高速化しているか
• NODDI の非線形を線形に定式化–計算を
1. ボクセル内の線維幾何の再構成 と2. 微細構造特性 の 2 つに分離。
– 1 は DTI 、 2 は凸最適化(線形化)で計算。• 凸最適化 (Convex optimization)
–最小二乗法や線形計画法と同じく、数学的最適化の一種(最小二乗法は凸最適化の一部・特殊例=制約なしの凸最適化)
– 局所解に囚われず大域解が求まる
どうやって高速化しているか
• 凸最適化 (Convex optimization)–凸関数
–凸集合
Boyd & Vandenberghe (2004)
非凸
どうやって高速化しているか
• 凸最適化 (Convex optimization)–目的関数と制約関数の両方が凸関数である最適化問題あるいはその解法。
• ベクトル x は最適化変数、 は目的関数、
は制約関数• 目的関数と制約関数は凸関数
Boyd & Vandenberghe (2004)
どうやって高速化しているか
• AMICO の凸最適化
Daducci et al (2015) Neuroimage
: l2 norm
: generic regularization function
: 正則化項の重み付け係数(0 なら最小二乗となる )
: linear operator (dictionary)
どうやって高速化しているか
• AMICO-NODDI の凸最適化
Daducci et al (2015) Neuroimage
: l1 norm
: intracellular volume fraction
: concentration parameter
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
AMICO に必要なもの
• CAMINO toolkit– UCL で作成されているオープンソースの
拡散強調MRI用ソフトウェア・コマンド群。– 元は C や JAVA で書かれている。
• SPArse Modeling Software (SPAMS) – フランス INRIA (国立計算機科学・応用数
学研究所)で作成されている数学的な最適化のためのソフトウェア・コマンド群。
– 元は C で書かれている。
AMICO に必要なもの
• C や JAVA ・・・– そのままでは使えないプログラミング言語。– コンパイル(機械が分かるように翻訳)
する必要。
– コンパイルの環境は OS によって大きく異なります。
– ひとまず AMICO から離れて、 OSごとに最低限のコンパイルの仕方を説明します。
コンパイル
• コンパイルは結構大変です。– コンパイラは Windows や Mac などの OS
にはデフォルトでは付属していません。– 色々インストールしてやる必要。– 環境整えても、些細なバージョンや環境の違いで動かないことがよくあります。
– ソースを読まないと(あるいは読んでも)分からないことがよくあります。
– それなりに茨の道です。
AMICOコンパイル環境の構築
Windows編
[Win] コンパイル環境
• Windows にはコンパイラが付属していないので、色々インストール&アンインストールしていきます。
– 【要注意】手順を厳守して下さい!– プログラムの依存関係があり、順番を変え
たり、欲張って色々オリジナルなことをしようとすると、エラーが生じ得ます。
[Win] コンパイル環境
• まずは環境を確認します。– スタートボタン→コントロールパネル→プログラムと機能 をクリック
– プログラムのアンインストールまたは変更という画面が表示されます。
[Win] コンパイル環境
• 以下がある否かチェックします。• Microsoft.NET Framework 4.6• Microsoft.NET Framework 4.6.1※あるいは Microsoft.NET Framework 4.6.1 以上• Microsoft Visual C++ 2010 x64 Redistributable• Microsoft Visual C++ 2010 x86 Redistributable
[Win] コンパイル環境
• あれば「アンインストール」します!– Microsoft Visual C++ 2010 Redistributable
は後で再インストールしますが、Microsoft.NET Framework 4.6 は本チュートリアルにおいては再インストールしません。
– 環境によっては、上記に依存していたソフト(特に新しいもの)が動かなくなることが稀にあるかもしれません。
– だいたいは大丈夫ですが、保証はできません。
[Win] コンパイル環境
• アンインストールの仕方1. プログラム名を 1 つクリックします。
• Microsoft.NET Framework 4.6• Microsoft.NET Framework 4.6.1(あるいは Microsoft.NET Framework 4.6.1 以上)• Microsoft Visual C++ 2010 x64 Redistributable• Microsoft Visual C++ 2010 x86 Redistributable
2. アンインストールをクリックします。3. 後は、教示に従って下さい。4. 1 にあげたプログラムが全てなくなるまで、
1-3 を繰り返します。
[Win] コンパイル環境
• アンインストールの仕方
1. プログラムを選択
2. アンインストールをクリック
[Win] コンパイル環境
• 次は色々「インストール」・・・– 「必ず」順番を守って下さい。– 新しければいいというわけではありません。– むしろ、新しいと動かないことがよくあり
ます。– 欲張ってオプションを増やそうとすると、失敗します。
“ 二兎を追う者は一兎をも得ず”
[Win] コンパイル環境
• Microsoft.NET Framework 4.5.2– 以下からダウンロードします。https://www.microsoft.com/ja-JP/download/details.aspx?id=42643
[Win] コンパイル環境
• Microsoft.NET Framework 4.5.2– ダウンロードした NDP452-KB2901954-
Web.exe をダブルクリックして、インストールします。
[Win] コンパイル環境
• Microsoft Windows SDK for Windows 7 and .NET Framework 4
– 以下からダウンロードします。https://www.microsoft.com/en-us/download/details.aspx?id=8279
[Win] コンパイル環境
• Microsoft Windows SDK for Windows 7 and .NET Framework 4
1. ダウンロードした winsdk_web.exe をダブルクリックします。
[Win] コンパイル環境
• Microsoft Windows SDK for Windows 7 and .NET Framework 4
2. Visual C++ Compilers にチェックを入れます
[Win] コンパイル環境
• Microsoft Windows SDK for Windows 7 and .NET Framework 4
3. Microsoft Visual C++ 2010 のチェックを外します。(絶対にチェックしないこと!)
[Win] コンパイル環境
• Microsoft Windows SDK for Windows 7 and .NET Framework 4
4. Next をクリックしてインストール。
[Win] コンパイル環境
• Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x64)
– 以下からダウンロードします。https://www.microsoft.com/ja-jp/download/details.aspx?id=13523
– ダウンロードした vcredist_x64.exe をダブルクリックしてインストールします。
[Win] コンパイル環境
• Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)
– 以下からダウンロードします。https://www.microsoft.com/ja-jp/download/details.aspx?id=8328
– ダウンロードした vcredist_x86.exe をダブルクリックしてインストールします。
[Win] コンパイル環境
• Windows Update します。– スタートメニュー→すべてのプログラム→
– 原則、全てにチェックを入れておきましょう。– セキュリティ関連のアップデートが沢山あります。
– Windows 10 を入れてしまわないように気をつけましょう!
– 2,3回 Update する必要があるかもしれません。
[Win] コンパイル環境
• Cygwin– Windows で動作する UNIX/Linux の様な環
境https://www.cygwin.com/
全く同じ・・・ではない
[Win] コンパイル環境
• Cygwin– Windows で動作する UNIX/Linux の様な環
境https://www.cygwin.com/
これを使ってコンパイルします。
[Win] コンパイル環境
• Cygwin– Install Cygwin をクリック
[Win] コンパイル環境
• Cygwin– 64bit 版をインストールします。– setup-x86_64.exe をクリックして
ダウンロード。
[Win] コンパイル環境
• Cygwin– setup-x86_64.exe をダブルクリックしてイ
ンストールします。
– 本チュートリアルで示すインストールのために、 C ドライブには約 7GB の空き容量が必要です!
[Win] コンパイル環境
• Cygwin1. 以下のような画面が出たら、次へをクリッ
ク。
[Win] コンパイル環境
• Cygwin2. [ ダウンロード方法 ] 特段理由がなければ、
デフォルトの Install from Internet を選択したまま、次へをクリック。
[Win] コンパイル環境
• Cygwin3. [ インストール先 ] 特段理由がなければ、デフォルトのまま、次へをクリック。
[Win] コンパイル環境
• Cygwin4. [ インストール用ファイルのダウンロード
先 ] 特段理由がなければ、デフォルトのまま、次へをクリック。
[Win] コンパイル環境
• Cygwin5. [ インターネット接続方法 ] 環境に合わせて設定して下さい。大学等の場合、プロキシが設定されていることがあります。
[Win] コンパイル環境
• Cygwin6. [ ダウンロードに使うサイト ] JAIST 、山形
大学、 iij の 3 つの .jp中から 1 つを選び、次へをクリック。
[Win] コンパイル環境
• Cygwin7. [ パッケージ選択 ] Devel を探して、 をクリックして、 に変更し、次へをクリック。
[Win] コンパイル環境
• Cygwin8. 他に必要なコンポーネントが自動でインス
トールされます。次へをクリックします。
[Win] コンパイル環境
• Cygwin9. ダウンロード&インストールが開始されま
す。しばらく待ちます 環境によって、・・・数十分 - 数時間かかります。
[Win] コンパイル環境
• Cygwin10.インストールが終了したら、アイコンをど
こに作成するか聞かれます。両方を選択し、完了をクリックします。
[Win] コンパイル環境
• Cygwin11.コンピュータ→Windows7_OS (C ドライ
ブ ) の中に cygwin64フォルダが出来ていることを確認しましょう。
[Win] コンパイル環境
• Cygwin12.デスクトップにできたアイコン
あるいは、スタートメニュー→ Cygwin→Cygwin64 Terminal をクリックします。
[Win] コンパイル環境
• Cygwin13.このような画面が出てきたら、成功です。
AMICOコンパイル環境の構築
Windows編
DONE
AMICOコンパイル環境の構築
Mac編
[Mac] コンパイル環境
• 続いて Mac でのコンパイル環境を説明します。
– こちらは比較的簡単です。– が、 Mac は頻繁に OS やコンパイラのアッ
プデートがあり、環境によっては対処が必要です。
– 例えば、長年使用している Mac を El Capitan にした場合の不具合がよく報告されています。
[Mac] コンパイル環境
• Xcode のインストール– App Store で xcode を検索
1. 「 Xcode 」で検索
2. 「インストール」をクリック
[Mac] コンパイル環境
• Xcode のインストール– 4GB強をダウンロード後、自動的にインス
トールされます。– しばらく待ちます (環境による)・・・
「インストール中」と表示
[Mac] コンパイル環境
• Xcode のインストール– App Store の「購入済み」ボタンを押すと、残り時間などが表示されます。
[Mac] コンパイル環境
• Xcode のインストール– ダウンロードが終了すると、規約画面が出
てきます。 OK なら Agreeボタンを押します。
[Mac] コンパイル環境
• Xcode のインストール– 下記のウインドウが出てきたら、成功です。– あるいは、アプリケーションから
「 Xcode 」を開いてください。
[Mac] コンパイル環境
• しかし・・・– MATLAB ( 少なくとも 2015b 以前 ) はまだ
Xcode7 に対応していません 。・・・– 対処用のパッチを用意しました。https://github.com/dicemt/CBSN_NODDI1. ファイル xcode7matlab.m をダウンロードし、
MATLAB の「現在のフォルダー」にドラッグ&ドロップ。
2. MATLAB のコマンドウィンドウ中で、 xcode7matlabとうち、 Enter を押す。
[Mac] コンパイル環境
3. xcode7matlab と打ち Enterキーを押した後、下記のような画面が表示されたら、成功です。
※ 2016 年 3 月リリース予定の MATLAB 2016a 以降では、この作業が不要になると思われます。(未確認)
[Mac] コンパイル環境
• [Tips…] xcode7matlab スクリプトを使った後でも、コンパイルできない場合・・・
1. 違うマシンを使う。2. Xcode のバージョンを変える。
https://developer.apple.com/downloads/3. OS のバージョンを変える
[Mac] コンパイル環境
• [Tips…] Xcode のバージョン変更方法1. 既存の Xcode をアンインストールする。2. 下記サイトにアクセスする。 https://
developer.apple.com/downloads/3. 利用規約に同意する。4. “Downloads for Apple Developers” が開く。5. 検索窓で「 xcode 6 」を検索。6. XCode6.4 の横にある+ボタンをクリック。7. Xcode 6.4.dmgファイルをダウンロードし
て、インストールする。
AMICOコンパイル環境の構築
Mac編
DONE
AMICO 関連プログラムのコンパイル
Win & Macほぼ共通
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
Java のインストール
• コンパイル前に・・・ Java をインストールhttp://www.oracle.com/technetwork/java/javase/downloads/
JDK と JRE の 2 つをインストールします
Java のインストール
• JRE (Java Runtime Environment)
1. 規約を読み、 Accept のボタンを押します。
2. 自分の OS に対応したファイルを選択してダウンロードします。Windows なら exeMac なら dmgを選ぶと楽です。
Java のインストール
• JDK (Java Development Kit)
1. 規約を読み、 Accept のボタンを押します。 2. 自分の OS に対応
したファイルを選択してダウンロードします。Windows なら exeMac なら dmgを選ぶと楽です。
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
Camino のコンパイル
• まず camino をダウンロードhttp://camino.cs.ucl.ac.uk/index.php?n=Main.Clickthrough
規約を読んでチェックを入れます。
Camino のコンパイル
• まず camino をダウンロードhttp://camino.cs.ucl.ac.uk/index.php?n=Main.Clickthrough
チェックするとすぐにダウンロードが始まります。
Camino のコンパイル
• かなり長い名前のファイルがダウンロードされます。
– 例) camino-code-d64fe361776a8ee02a41f13e6b180ddd574f8882.zip
• 解凍先はどこでも構いません が、分か・・・りやすい場所に置きましょう。例えば[Win] C:\Users\username\camino[Mac] /Users/username/caminoなど
Camino のコンパイル
• Cygwin64 もしくはターミナルを開き、camino のディレクトリに移動して、コンパイルを行います。
[Win]export PATH=$PATH:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /cygdrive/Users/username/camino/make[Mac]cd /Users/username/camino/make
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
SPAMS のコンパイル
• まず SPAMS をダウンロードhttp://spams-devel.gforge.inria.fr/downloads.html
Version 2.5 の matlab interfaceをダウンロードします。
SPAMS のコンパイル
• 以下のような名前のファイルがダウンロードされます。spams-matlab-v2.5-svn2014-07-04.tar.gz
• 解凍先はどこでも構いません が、分・・・かりやすい場所に置きましょう。例えば
[Win] C:\Users\username\matlab\spams[Mac] /Users/username/matlab/spamsなど
SPAMS のコンパイル
• そのままでは動かないので、設定を行います。
– 解凍した compile.m を MATLAB で開きます。
SPAMS のコンパイル
• エディタが開くので、編集していきます。– [Win&Mac共通 ] 18行目を compiler=’mex’;
に。– [Win&Mac共通 ] 34行目を
use_multithread=false; に。– [Mac] 134行目を自分の OSバージョンに変更。add_flag=' -mmacosx-version-min=10.6'
• [Mac] OS のバージョン確認方法– アップルマーク→この Mac について– 「バージョン」の横にある数字です。
• 下の図では 10.11 。それ以下の数字は無視
SPAMS のコンパイル
SPAMS のコンパイル
• MATLAB にコンパイラを認識させる– MATLAB を開き、コマンドウィンドウに下記を打ち込みます。mex -setup
– Would you like to locate compilers?と聞かれるので、 y と打ち込みます。
SPAMS のコンパイル
• MATLAB の設定を行いますSelect a compiler: と聞かれるので、Windows の場合はMicrosoft Software Development Kit (SDK) 7.1Mac の場合はXcode with Clangに対応する番号を打ち込みます。
SPAMS のコンパイル
• MATLAB の設定を行います– Please verify your choices:
と聞かれるので、Windows の場合はMicrosoft Software Development Kit (SDK) Mac の場合はXcode with Clangになっているのを確認後 y と打ち込みます。
SPAMS のコンパイル
• MATLAB の設定を行います– Warning が出てきますが、 Done… となっ
ていれば成功なので、気にする必要はありません。
SPAMS のコンパイル
• MATLAB で SPAMS をコンパイルします。
spams のディレクトリに移動( 1行目) 、コンパイルを行います( 2行目) 。
[Win]cd 'C:\Users\username\matlab\spams'compile[Mac]cd /Users/username/matlab/spamscompile
SPAMS のコンパイル
• こんな感じの文字列が続き・・・最後に文字が入力可能な状態になれば成功です。
入力可能な状態
AMICO の動かし方
Win & Macほぼ共通
AMICO の動かし方
• 長いコンパイルのための作業が終わり、ようやく AMICO を動かすプログラムに入ります。
• AMICO は MATLAB で動作する、オープンソースのプログラムです。
AMICO に必要なもの
• 必要条件1. NODDI に必要なもの 5 つ2. JAVA
http://www.oracle.com/technetwork/java/javase/downloads/
3. CAMINO toolkithttp://camino.cs.ucl.ac.uk/
4. SPArse Modeling Software (SPAMS) http://spams-devel.gforge.inria.fr/
5. AMICOhttps://github.com/daducci/AMICO/
AMICO スクリプト
• まず、 AMICO をダウンロードします。https://github.com/daducci/AMICO/
Download ZIPをクリックします
AMICO スクリプト
• 以下のような名前のファイルがダウンロードされます。AMICO-master.zip
• 解凍したフォルダ中の matlabフォルダの中身を以下のような分かりやすい場所に置きましょう。例えば
[Win] C:\Users\username\matlab\amico[Mac] /Users/username/matlab/amicoなど
AMICO の動かし方
• フォルダ中の AMICO_Setup.txt を複製して、 AMICO_Setup.m に名前を変更します。
• AMICO_Setup.m を MATLAB で開き、以下の 5 つのパスを記入していきます
– AMICO のコードが置いてある場所– AMICO の DWI データが置いてある場所– CAMINO のコードが置いてある場所– NODDI のコードが置いてある場所 – SPAMS のコードが置いてある場所
AMICO の動かし方
• あるいは、スライドに示してある場所にそのまま置いていた場合、https://github.com/dicemt/CBSN_NODDIに入力後のファイルを置いています。
– Windows用は AMICO_SetupWin.m 、Mac用は AMICO_SetupMac.m としてありますので、 AMICO_Setup.m に名前変更して AMICO のコードが置いてあるフォルダに保存して下さい。
※ファイル中、 username となっている箇所を自分のユーザーネームに変更して下さい。
AMICO の動かし方
• AMICO 解析のためのフォルダ構造– AMICO では効率的・構造的に解析を行うた
め、 1.親フォルダ→ 2. プロトコルフォルダ→ 3.被験者 /患者フォルダという階層に分かれています。
• DWI が入るのは被験者 /患者フォルダです。
AMICO の動かし方
• AMICO の DWI データ– Original の NODDI と同じものを使います。– 今回は AMICO_Data というフォルダを作り、
さらにその中に NoddiTutorial というフォルダを作ります。さらにその中に Tutorial というフォルダを作ります。[Win] C:\Users\username\matlab\AMICO_Data\NoddiTutorial\Tutorial
[Mac] /Users/username/MATLAB/AMICO_Data/NoddiTutorial/Tutorial
– Original の NODDI で使ったサンプルデータを Tutorialフォルダの中にコピーします。
AMICO の動かし方
• 出来上がりは 16行のスクリプトです。– https://github.com/dicemt/CBSN_NODDI
CBSN_AMICO_Win.m or CBSN_AMICO_Mac.mcd '/Users/username/matlab/amico'clearvars, clearvars -global, clcAMICO_SetupAMICO_PrecomputeRotationMatrices();AMICO_SetSubject( 'NoddiTutorial', 'Tutorial' );CONFIG.dwiFilename = fullfile( CONFIG.DATA_path, 'NODDI_DWI.hdr' );CONFIG.maskFilename = fullfile( CONFIG.DATA_path, 'brain_mask.hdr' );schemeFilename = fullfile( CONFIG.DATA_path, 'NODDI_DWI.scheme' );AMICO_fsl2scheme( fullfile( CONFIG.DATA_path, 'NODDI_protocol.bval' ),... fullfile( CONFIG.DATA_path, 'NODDI_protocol.bvec' ), schemeFilename);CONFIG.schemeFilename = schemeFilename;AMICO_LoadDataAMICO_SetModel( 'NODDI' );AMICO_GenerateKernels( false );AMICO_ResampleKernels();AMICO_Fit()
AMICO の動かし方
0. ディレクトリの移動– MATLAB の作業ディレクトリを amico の
入っているフォルダに移動します。[Win]cd 'C:\Users\username\matlab\amico'[Mac]cd '/Users/username/matlab/amico'
AMICO の動かし方
1. メモリ消去– MATLAB のメモリにある変数などを消去しま
す。clearvars, clearvars -global, clc
2. セットアップ– AMICO 解析に必要な環境を整えます。
AMICO_Setup
AMICO の動かし方
3. 行列計算–計算を高速化するための事前の行列計算
AMICO_PrecomputeRotationMatrices();
4. データフォルダの指定– データフォルダ内の構造を指定します。–今回は NoddiTutorial のプロトコルで– Tutorial という患者/被験者について解析
AMICO_SetSubject( 'NoddiTutorial', 'Tutorial' );
AMICO の動かし方
5. ファイル名の指定– DWI 、マスク画像、 schemeファイルを指定
– それぞれの環境で変えます(青文字の所)CONFIG.dwiFilename = fullfile( CONFIG.DATA_path, 'NODDI_DWI.hdr' );CONFIG.maskFilename = fullfile( CONFIG.DATA_path, 'brain_mask.hdr' );schemeFilename = fullfile( CONFIG.DATA_path, 'NODDI_DWI.scheme' );AMICO_fsl2scheme( fullfile( CONFIG.DATA_path, 'NODDI_protocol.bval' ),... fullfile( CONFIG.DATA_path, 'NODDI_protocol.bvec' ), schemeFilename);CONFIG.schemeFilename = schemeFilename;
6. データを読み込むAMICO_LoadData
AMICO の動かし方
7. モデルの設定– NODDI モデルを使用する。
AMICO_SetModel( 'NODDI' );
8. プロトコル用カーネルの生成AMICO_GenerateKernels( false );
9. 被験者/患者用カーネル生成AMICO_ResampleKernels();
AMICO の動かし方
10.モデルのフィッティング– データに対してモデルをフィッティングして
いきます。– ここで画像も出力されます。
AMICO_Fit()
11.スクリプトを動かす–出来上がったスクリプトをエディタから
MATLAB のコマンドウィンドウにコピーします。
– 10 分ほどで解析が終了します。
AMICO の動かし方
12.ファイルの確認– “AMICO”フォルダの中にある“ NODDI”フォ
ルダの中に、以下のようなファイルが出力されているのを確認しましょう。
FIT_OD.img/.hdr (Orientation Dispersion)FIT_ICVF.img/.hdr (Intracellular Volume Fraction)FIT_ISOVF.img/.hdr (Isotropic Volume Fraction)FIT_dir.img/.hdr (Fiber Direction)
–オリジナル NODDI の結果と比較しましょう。
スクリプト打つのが面倒・・・• オリジナル NODDI同様、下記からダウンロードできます。https://github.com/dicemt/CBSN_NODDICBSN_AMICO_Win.mCBSN_AMICO_Mac.m
文献• NODDIZhang H, Schneider T, Wheeler-Kingshott CA, Alexander DC (2012) NODDI:
Practical in vivo neurite orientation dispersion and density imaging of the human brain. Neuroimage 61:1000-1016.
• NODDI計算過程の詳細Alexander DC, Hubbard PL, Hall MG, Moore EA, Ptito M, Parker GJM, Dyrby
TB (2010) Orientationally invariant indices of axon diameter and density from diffusion MRI. Neuroimage 52:1374-1389.
Zhang H, Hubbard PL, Parker GJM, Alexander DC (2011) Axon diameter mapping in the presence of orientation dispersion with diffusion MRI. Neuroimage 56:1301-1315.
• AMICODaducci A, Canales-Rodríguez EJ, Zhang H, Dyrby TB, Alexander DC, Thiran
J-P (2015) Accelerated Microstructure Imaging via Convex Optimization (AMICO) from diffusion MRI data. Neuroimage 105:32-44.
文献• 凸最適化Boyd, S., Vandenberghe, L. (2004). Convex Optimization. Cambridge:
Cambridge University Press.
• NODDI を使った研究Kodiweera C, Alexander AL, Harezlak J, McAllister TW, Wu Y-C (in press) Age
effects and sex differences in human brain white matter of young to middle-aged adults: A DTI, NODDI, and q-space study. Neuroimage.
Nazeri A, Chakravarty MM, Rotenberg DJ, Rajji TK, Rathi Y, Michailovich OV, Voineskos AN (2015) Functional consequences of neurite orientation dispersion and density in humans across the adult lifespan. J Neurosci 35:1753-1762.
Winston GP, Micallef C, Symms MR, Alexander DC, Duncan JS, Zhang H (2014) Advanced diffusion imaging sequences could aid assessing patients with focal cortical dysplasia and epilepsy. Epilepsy Res 108:336-339.
araya brain imaging inc.
www.araya.org
[PR] アラヤでご提供可能なこと
• 画像解析・統計解析のサポート– 解析の受託–最新の画像解析導入サポート– ex-vivo 画像等、非定型な画像解析サポート– 解析高速化・自動化サポート– 画像診断フローのコンサルティング– 実験・計測・検査のサポート
www.araya.org
araya brain imaging inc.
www.araya.org
araya brain imaging inc.
www.araya.org
araya brain imaging inc.
www.araya.org
thank you
appendices
[Mac] NODDI 解析時のエラー
• NODDI 解析中にjava.net.unknownhostexception…といったエラーが出る場合1. Parallel Toolboxへの対処
• MATLAB 上部にあるパネル→環境→並列→クラスタープロファイルの管理
• クラスタープロファイルマネージャーが開くので、「検証」ボタンをクリック。
• 検証結果が全て「パス」になっていることを確認します。
[Mac] NODDI 解析時のエラー
• java.net.unknownhostexception…といったエラーが出る場合2. /etc/hosts への対処
• Finder→ アプリケーション→ユーティリティー→ターミナル .app
ここに書いてある文字列をコピーします。※ 「:~」の前
[Mac] NODDI 解析時のエラー
• java.net.unknownhostexception…といったエラーが出る場合2. /etc/hosts への対処
• ターミナルで以下のコマンドを打ちます。sudo nano /private/etc/hosts
• 上のコマンドをうった後に、管理者パスワードを入力します。https://support.apple.com/ja-jp/HT202860 を参照
• GNU nano( コマンドラインテキストエディタ ) なるものが起動するので、十字キーを押して一番下の行まで移動します。
※::1 localhost などと書いてある行の下
[Mac] NODDI 解析時のエラー
• java.net.unknownhostexception…といったエラーが出る場合2. /etc/hosts への対処
• 以下のようにうちこみます。127.0.0.1 X.localdomain X
• X の部分を先ほどコピーしたもので置換えます(ペーストします)。
• ファイルの保存( Ctrl+O )を押した後に決定し( Enter )、終了( Ctrl+X )と順番にキーを押していきます。
[Win] コンパイル環境
• Cygwin7. [ パッケージ選択 ] 全てをインストールすれ
ば数十 GB にもなってしまいます。以下の必要なものだけを選択すれば、数百MB 程度のインストールで済みます。• Develカテゴリ内の gcc-core• Develカテゴリ内の gcc-g++• Develカテゴリ内の make
[Win] コンパイル環境
• Cygwin7. Develカテゴリ内の gcc-core, gcc-g++
アイコンをクリックするとアイコンの横が Skip から数字に変化し、それがインストールされることを表しています。
[Win] コンパイル環境
• Cygwin7. Develカテゴリ内の make
• 3 つを選択したら、次へをクリックします。