毎年開催している包括脳MRIチュートリアルですが、
今年は12月13日(土)に開催されることになりました。
詳しい案内はこちらをご覧ください。
VBMチュートリアルに関しては、席はあと20席程度残っているとのことです。
今回は、
・画像のQC(岩手医大山下先生)
・多重比較補正についての理解(京大川口先生)
・SPMの結果を論文に載せるまでの具体的手順
といった内容を計画しています。
関心のある方は、こちらにある申し込み方法をご覧のうえ、ご応募ください。
最近、以下のようなことをやる必要がありました。
ファイル名が
201105_ID.jpg
20120608_ID.jpg
20130704_ID.jpg
201409_ID.jpg
となっているファイル(年月が必ずあり、日が時についている)に対して、
年の後にアンダースコアを入れたい、つまり、
2011_05_ID.jpg
2012_0608_ID.jpg
2013_0704_ID.jpg
2014_09_ID.jpg
としたいわけです。
SPMのメーリングリストでSPMの中の人が明らかにしていますが、SPM12の正式版がそろそろ公開されるようです。SPM12が正式に公開されました。(2014年10月1日)
SPM12はいろいろよい点も加わっていますが、まだ、プラグインで対応していないものも多々あります。
このため、しばらくは、SPM8とSPM12が同時に動かせる環境にあった方がよいですよね。
いい方法がありますので、ご紹介します。
2019.10.11: すべての回答ができましたので、アップデートしました。
何人かの方々から、「心理のためのMatlabチュートリアル」の練習の解答がないか問い合わせを受けていました。
回答の完全版ができましたので、公開させていただきます。
Lin4Neuro was updated. This time the change was limited to kernel update and security updates.
I’m working on Xubuntu 14.04, but it seems to have several problems with neuroimaging software packages. So for now I keep updating Lin4Neuro based on Xubuntu 12.04.
You can download the latest Lin4Neuro from here.
研究でROC解析を行う必要があり、Rでどうやったらできるのか調べてみました。
そうしたところ、ROCRというパッケージが公開されており、比較的簡単にROC解析を行い、グラフを作成できることがわかりました。
既にRはインストールされているとします。Ubuntuの場合、ROCRパッケージはapt経由で簡単に入手できます。
$ sudo apt-get install r-cran-rocr
これでインストール完了です。
ROC解析に必要なものは、何らかの指標と、それが属するグループの一覧です。具体例を挙げると、以下のようになります。
第1列に指標、第2列に属するグループ(0か1)が記載されています。
これをroc_data.txtとという名前で保存することとします。保存したディレクトリをRのワーキングディレクトリとします。
0.9706 1 0.9572 1 0.4854 1 0.8003 1 0.1419 1 0.4218 1 0.9157 1 0.7922 1 0.9595 1 0.6557 1 0.0357 1 0.8491 1 0.934 1 0.6787 1 0.7577 1 0.7431 1 0.3922 1 0.6555 1 0.1712 1 0.706 1 0.4797 0 0.4551 0 0.0374 0 0.081 0 0.2984 0 0.7597 0 0.1404 0 0.3853 0 0.0238 0 0.5513 0 0.0551 0 0.306 0 0.4991 0 0.6909 0 0.7593 0 0.3472 0 0.0614 0 0.0507 0 0.0575 0 0.6407 0
ROCRはRを立ち上げた後に、library(ROCR)で起動できます。
$ R > library(ROCR)
先ほどのroc_data.txtをrocdataという変数に読み込みます。変数名は何でもいいのですが、ここではそうします。
read.tableという関数で表を読み込めるので、それを使います。
rocdata <- read.table("roc_data.txt")
ROCRのステップ1はpredictionで、値と属するグループを指定します。
今、rocdataは20行2列の行列になっています。1列目はrocdata[,1]で、2列目はrocdata[,2]であらわすことができますので、以下のように記載します。
pred <- prediction(rocdata[,1], rocdata[,2])
ここで、変数predはpredictionの頭文字4文字です。もちろん、別の名前でもかまいません。
私はよくカンマを忘れるので、カンマも忘れないようにしましょう。
ここで、何が行われているかというと、データを大きい順にソートし、真陽性(TP)、偽陽性(FP)、偽陰性(FN)、真陰性(TN) の数を算出します。
ROCRのステップ2はperformanceです。ここでは、感度、すなわち真陽性率 (TP/(TP+FN)で定義)と、1-特異度、すなわち偽陽性率(FP/(FP+TN)で定義)を求めます。以下のようにタイプします。
perf <- performance(pred, "tpr", "fpr")
ここでtprはtrue positive rateを、fprはfalse positive rateを意味します。
それでは、ROC曲線を描きます。非常に簡単です。
plot(perf)
そうすると、次のようなグラフが現れるはずです。
グラフをPNG形式で保存するには、次のように行うことで、roc-curve.pngという名前でワーキングディレクトリに保存されます。
png("roc-curve.png") plot(perf) dev.off()
先ほどのperformanceの際に”auc”と指定するとAUCも計算されます。ただ、1クッション入れる必要があります。具体的な方法はこちらのサイトに記載されていましたが、それを転載します。
auc.tmp <- performance(pred,"auc") auc <- as.numeric(auc.tmp@y.values)
performance(pred,”auc”)の結果をauc.tmpという変数に代入し、
auc.tmpの中からy.valuesの値を取り出して、その値を変数aucに代入します。
最後に変数aucを表示させてみます。
auc [1] 0.8
これでAUCが0.8だということがわかります。
ここからさらに一歩踏み込んで、正診率を求めたいと思います。
正診率、感度、特異度は以下で定義されます。
正診率=(TP+TN)/総数
感度(真陽性率)=TP/(TP+FN)
特異度=TN/(FP+TN)
今、総数は、rocdataの行数を求めればよいですから、nrow(rocdata)で求められます
カットオフ値を少しずつずらした時に、TP, FP, FN, TNは変わっていきますので、その一覧を表に出力しましょう。
表の列は以下のようにしたいと思います
Cutoff TP FP FN TN Sensitivity Specificity Accuracy
table <- data.frame(Cutoff=unlist(pred@cutoffs), TP=unlist(pred@tp), FP=unlist(pred@fp), FN=unlist(pred@fn), TN=unlist(pred@tn), Sensitivity=unlist(pred@tp)/(unlist(pred@tp)+unlist(pred@fn)), Specificity=unlist(pred@tn)/(unlist(pred@fp)+unlist(pred@tn)), Accuracy=((unlist(pred@tp)+unlist(pred@tn))/nrow(rocdata)) )
これで、tableを表示させると、以下のように表示されます。
> table Cutoff TP FP FN TN Sensitivity Specificity Accuracy 1 Inf 0 0 20 20 0.00 1.00 0.500 2 0.9706 1 0 19 20 0.05 1.00 0.525 3 0.9595 2 0 18 20 0.10 1.00 0.550 4 0.9572 3 0 17 20 0.15 1.00 0.575 5 0.9340 4 0 16 20 0.20 1.00 0.600 6 0.9157 5 0 15 20 0.25 1.00 0.625 7 0.8491 6 0 14 20 0.30 1.00 0.650 8 0.8003 7 0 13 20 0.35 1.00 0.675 9 0.7922 8 0 12 20 0.40 1.00 0.700 10 0.7597 8 1 12 19 0.40 0.95 0.675 11 0.7593 8 2 12 18 0.40 0.90 0.650 12 0.7577 9 2 11 18 0.45 0.90 0.675 13 0.7431 10 2 10 18 0.50 0.90 0.700 14 0.7060 11 2 9 18 0.55 0.90 0.725 15 0.6909 11 3 9 17 0.55 0.85 0.700 16 0.6787 12 3 8 17 0.60 0.85 0.725 17 0.6557 13 3 7 17 0.65 0.85 0.750 18 0.6555 14 3 6 17 0.70 0.85 0.775 19 0.6407 14 4 6 16 0.70 0.80 0.750 20 0.5513 14 5 6 15 0.70 0.75 0.725 21 0.4991 14 6 6 14 0.70 0.70 0.700 22 0.4854 15 6 5 14 0.75 0.70 0.725 23 0.4797 15 7 5 13 0.75 0.65 0.700 24 0.4551 15 8 5 12 0.75 0.60 0.675 25 0.4218 16 8 4 12 0.80 0.60 0.700 26 0.3922 17 8 3 12 0.85 0.60 0.725 27 0.3853 17 9 3 11 0.85 0.55 0.700 28 0.3472 17 10 3 10 0.85 0.50 0.675 29 0.3060 17 11 3 9 0.85 0.45 0.650 30 0.2984 17 12 3 8 0.85 0.40 0.625 31 0.1712 18 12 2 8 0.90 0.40 0.650 32 0.1419 19 12 1 8 0.95 0.40 0.675 33 0.1404 19 13 1 7 0.95 0.35 0.650 34 0.0810 19 14 1 6 0.95 0.30 0.625 35 0.0614 19 15 1 5 0.95 0.25 0.600 36 0.0575 19 16 1 4 0.95 0.20 0.575 37 0.0551 19 17 1 3 0.95 0.15 0.550 38 0.0507 19 18 1 2 0.95 0.10 0.525 39 0.0374 19 19 1 1 0.95 0.05 0.500 40 0.0357 20 19 0 1 1.00 0.05 0.525 41 0.0238 20 20 0 0 1.00 0.00 0.500
Accuracyがもっとも高いところを見つけるには、
max(table$Accuracy)
とします。そうすると、今は、
> max(table$Accuracy) [1] 0.775
となりますので、該当するところをみると、感度70%、特異度85%、正診率77.5%達成できるということがわかりました。
感度と特異度の曲線も簡単に書けます。predictionまで行った後に、次のようにします。
perf <- performance(pred, "sens", "spec") png("sens-spec-curve.png") plot(perf) dev.off()
これで、下図のような感度、特異度の曲線がsens-spec-curve.pngという名前で保存されます。
比較的簡単に求められるので便利です。
Remastersys is a very useful remastering tool though developing has ceased now.
Many reported that they could make Remastersys work on Ubuntu 14.04, but I encountered an error with Xubuntu 14.04.
I found workaround for this error.
Short answer: Comment out the line 245 of “/usr/bin/remastersys” beginning with [ “grep lightdm /etc/X11/default-display-manager
” != “” ]
Below is the long answer.
Installation is simple.
$ wget -O- http://www.remastersys.com/ubuntu/remastersys.gpg.key | sudo apt-key add -
Add the line to /etc/apt/sources.list
deb http://www.remastersys.com/ubuntu precise main
Please note that you don’t have to replace “precise” with “trusty.”
$ sudo apt-get update; sudo apt-get install remastersys
“sudo remastersys dist” terminated with error. The below is error message;
$ sudo remastersys dist
Distribution Mode Selected
Enabling remastersys-firstboot
Adding system startup for /etc/init.d/remastersys-firstboot …
/etc/rc0.d/K20remastersys-firstboot -> ../init.d/remastersys-firstboot
……
/etc/rc5.d/S20remastersys-firstboot -> ../init.d/remastersys-firstboot
Checking filesystem type of the Working Folder
/home/remastersys/remastersys is on a ext4 filesystem
Making sure popularity contest is not installed
Installing the Ubiquity GTK frontend
Lightdm not setup properly. You must set your default desktop with lightdm prior to remastering
I examined the script /usr/bin/remastersys with the keyword “Lightdm.” Then I found the description below in the line 245
[ “`grep lightdm /etc/X11/default-display-manager`” != “” ] && [ ! -f /etc/lightdm/lightdm.conf ] && [ ! -f /usr/share/xsessions/ubuntu.desktop ] && echo “Lightdm not setup properly. You must set your default desktop with lightdm prior to remastering” && echo “Lightdm not setup properly. You must set your default desktop with lightdm prior to remastering” >> $WORKDIR/remastersys.log && exit 1
Though this line checks if the file “/etc/lightdm/lightdm.conf” exists, The latest Xubuntu 14.04 doesn’t have that lightdm.conf file in /etc/lightdm.
So I commented out this line, just adding “#” to the beginning of the line.
Then I tried sudo remastersys dist again, with success!
If you want to use Remastersys in Xubuntu 14.04, it’s worth trying it.
Lin4Neuro was updated. The changes of this version were as follows;
Lin4Neuro is still based on Xubuntu 12.04. Now I’m working on Xubuntu 14.04, so hopefully the next version will be based on Xubuntu 14.04.
You can download the latest Lin4Neuro from here.
5人の方の申し込みをいただいたので、開催決定です!
岩手医大の山下典生先生も助っ人で参加してくださることになりました!
※場所が確定しました。秋葉原駅徒歩5分のAP秋葉原です。
※事前登録制です。参加希望の方はコメント欄からご連絡をお願いします。
すぐできるVBMが無事に出版に至りましたが、「本は買ったけれどもやる時間がない」という方もいらっしゃるのではないかと思います。また、「ここはどうなの?」と質問をしたいという方もいらっしゃると思います。
そこで、VBMのミニ勉強会を開催させていただきます。
日時:2014年6月28日(土)15:00-18:00
場所:AP秋葉原
参加費:3000円程度(会議室の実費代のみ。)
持参していただくもの:SPMがセットアップされている自分のパソコン
人数:最小5名〜最大20名
テキスト:「すぐできるVBM」(前もってご準備ください)
内容:実習形式
・VBMを実際に動かしてみる
・自分の解析でわからないことの質疑応答
参加希望の方は、下記コメントにお名前(ニックネーム可)とメールアドレスを書きこんでいただけますでしょうか。
VBMに関心のある方はご検討ください。
友人の山下典生先生が、2014年8月31日に『第1回 IMU脳画像解析セミナー「VBM/ROI解析を極める」』を開催します。
SPMでのVBMだけでなく、3D-SlicerやITK-SNAPも利用するとのこと。とても楽しみです。
早速申し込みしました。
関心のある方はこちらをごらんください。
「すぐできるVBM」に、全脳容積の求め方を記載していませんでした…。
以下の方法で、求めることができます。
必要なものは以下のとおりです。
容積を簡便に求めることができるスクリプトは、Ged Ridgway氏によるget_totals.mです。右クリックで「名前をつけて保存」とし、SPMのディレクトリに保存してください。
Segmentで最初に作られる画像であるc1*.niiとc2*.niiを準備します。ここで*はワイルドカードを意味し、「c1からはじまり、そのあとは何でもOKで、最後は.niiで終わる」という意味です。c1画像は厳密には確率画像なのですが、標準化前のこの画像のボクセル値は、ほぼ容積とイコールであると考えられています。
それでは実際にやっていきましょう。
まずは、灰白質の容積を求めます。Matlabのコマンドウィンドウから以下のようにタイプします。
gmv = get_totals
(gmvは変数名なので、gray_matterでも、gmでもかまいません)
そうすると、ファイルを選択するダイアログがあらわれます。ここで、容積を求めたいc1画像を指定してください。ここでは、ためしに5つのファイルを選びました。そうすると、以下のような表示になると思います。(もちろん、数字は選択した画像で変わります)
gmv =
640.9410
664.4302
617.7647
874.1366
670.1864
次に、白質の容積を求めます。Matlabのコマンドウィンドウから以下のようにタイプします。
wmv = get_totals
同様に、ファイルを選択するダイアログがあらわれますので、容積を求めたいc2画像を指定します。重要なのは、c1画像と同じ順番で選択してください。以下のような表示になると思います。
wmv =
431.9188
463.1192
418.5571
572.9889
488.4050
そうしたら、2つを足して全脳容積を求めましょう。
tbv = gmv + wmv
tbv =
1.0e+03 *
1.0729
1.1275
1.0363
1.4471
1.1586
これは、1.0×10^3(すなわち1000)にそれ以下の数字をかけたものということです。つまり、
tbv =
1072.9
1127.5
1036.3
1447.1
1158.6
ということになります。
これを選択してコピーしても使えますが、ファイルに書き出しましょう。
コンマ区切りファイルというものに出力することができます。
出力ファイル名をtotal_brain_volume.csvとします。
csvwrite('total_brain_volume.csv',tbv)
csvwriteの書式は csvwrite(出力ファイル名, 変数名) となります。
変数tbvの内容をtotal_brain_volume.csvに出力したいので、上記のようになります。
そうすると、ワーキングディレクトリにtotal_barin_volume.csvが生成され、Excelのような表計算ソフトでも、テキストエディタでも開くことができます。
最後に少し応用しましょう。灰白質容積(GMV), 白質容積(WMV), 全脳容積(TBV)をすべてCSVファイルに出力したいとしましょう。
その場合は、まず、すべての情報をひとつの変数volumesにまとめます。
Matlabのコマンドウィンドウから次のようにタイプしてください。
volumes = [gmv wmv tbv]
そうすると下記のようになります。
volumes =
1.0e+03 *
0.6409 0.4319 1.0729
0.6644 0.4631 1.1275
0.6178 0.4186 1.0363
0.8741 0.5730 1.4471
0.6702 0.4884 1.1586
左からgmv, wmv, tbvという順番になっています。
これを、先程と同じようにしてCSVファイルに保存します。ファイル名をvolumes.csvとします。
csvwrite('volumes.csv',volumes)
このようにして、脳容積の情報を保存できます。
臨床では、1人の症例で健常者と比較して容積低下部位を求めたいことがあります。
SPMでどのようにするかというと、シンプルです。
そうすると、Design matrixを作るための設定画面は下図のようになるはずです。
これを普通にEstimateして、Contrast managerで症例の容積が低下している領域を求めたかったら、[-1 1]とすれば大丈夫です。
Twitterで疑問を投げかけてくださった@silverjet_jpさん、ありがとうございました。
画像解析のためには、DICOM画像をNIFTI画像に変換する必要があります。
主に使われるソフトウェアとして、MRI Convertとdcm2niiがあります。
開発者からスクリーンショットを使ってよいという許可をいただきましたので、
MRI Convertおよびdcm2niiの使用方法をPDFで公開します。
様々な方々から「2群の縦断解析をしたいんだけれども、どうすればいいの?」と質問されてきて、その都度、きちんとした答えをできずにいました。
ちょうど、今日、ある方から質問をうけたので、これを機にまとめてみることにします。
一言で言うならば「Flexible factorial modelを使うといいよ」となります。しかし、これはそんな簡単ではありません。
以下にその方法をまとめます。
根拠となっている資料として、”Contrast weights in flexible factorial design with multiple groups of subjects“を挙げます。これは、SPMのML上で流れたドキュメントで、Flexible factorial designにおけるコントラストを様々な条件から検討しています。このドキュメントの他にも、SPM-ML上の議論も参考にしています。できるだけ正確を期していますが、間違っている可能性もゼロではありませんので、もし間違いを見つけた方がいらっしゃったらぜひご指摘ください。
例として、以下のような状況を想定します。上述のContrast weights in flexible factorial design with multiple groups of subjectsでとりあげられている状況と同じ状況です。
以下、SPM12bのスクリーンショットを用いながら説明します。基本的にSPM8でも同じです。
SPMのメニューから”Basic models”をクリックします。
まずは、DesignでFlexible factorialを指定します。その後、Factorを指定します。今、指定すべきFactorは3つです。各々に対してindependenceとvarianceを指定します。
これは必ず入れないといけないとのことです。independenceはyes, varianceはequalとなります。
次はgroupです。これはindependenceはyes, varianceはunequalとなります。
縦断解析ですので、timeが入ります。これはindependenceはno, varianceはequalとなります。
すぐに見直すことができるように表にしておきます。
factor | independence | variance |
subject | yes | equal |
group | yes | unequal |
time | no | equal |
Specify Subjects or all Scans & Factorsで、”Subjects”を選択します(all Scans & Factorsもいけそうなのですが、Design matrixがやや異なるので、ここは無難にSubjectsとします)。そして、Subjectsに、Subject 1のtime 1, 2, 3の3つのファイルを指定します。
Conditionは行列で指定します。行は画像の順番です。列は指定したFactorの順番です。Factor1のSubjectは今、ひとつひとつ指定することで考慮されていますので、groupとtimeを指定します。被験者1-6(S1-S6)はグループ1, S7-S11はグループ2ですので、S1-S6のconditionは次のようになります。
1 1
1 2
1 3
同様に、S7-S11のconditionは次のようになります。
2 1
2 2
2 3
その後、Main effects(主効果)とInteraction(交互作用)の指定をします。
subject, group, timeの主効果を見るために、Main effectとしてFactor 1, 2, 3をそれぞれ指定します。
さらに、group x timeの交互作用もみたいので、Interactionとして、2 3とします。(Factor2がgroup, Factor 3がtimeだからです)
それ以降の設定(mask, global normalization)は通常のVBMと同様です。
この設定を適当な名前(flex_fact_design_matrix)で保存し、実行して、次のようなDesign matrixが得られたらOKです。
ここで気を付けなくてはいけないのは、Subjectは最初に指定しても、Design matrix上では最後に来ることです。
最初の2列(赤)がgroupの主効果, 次の3列(黄緑)がtimeの主効果, 次の6列(青)がgroup x timeの交互作用, 最後の11列(紫)がsubjectの主効果となっています。
ここまでできたらEstimateしてください。
Design matrixの設定もややこしいのですが、コントラストはもっとややこしいことになっています。ここは上述の”Contrast weights in flexible factorial design with multiple groups of subjects”に従って説明します。
今、Design matrixの各列の要素を列挙すると以下のようになっています。
G1 | G2 | T1 | T2 | T3 | G1T1 | G1T2 | G1T3 | G2T1 | G2T2 | G2T3 | S1 | S2 | … | S6 | S7 | S8 | … | S11 |
ここでGはgroup, Tはtime, Sはsubjectを意味します。
これを見ると、Interactionの中にgroupとtimeの要素が入っていることがわかります。コントラスト作成の際には、ここのところに気をつける必要があります。nの数によってコントラストに重みづけをしなければならないからです。
G1 | G2 | T1 | T2 | T3 | G1T1 | G1T2 | G1T3 | G2T1 | G2T2 | G2T3 | S1 | S2 | … | S6 | S7 | S8 | … | S11 |
1 | -1 | 0 | 0 | 0 | 1/3 | 1/3 | 1/3 | -1/3 | -1/3 | -1/3 | 1/6 | 1/6 | … | 1/6 | -1/5 | -1/5 | … | -1/5 |
ここでG1T1, G1T2, G1T3は皆等分なので、シンプルに3で割っただけです。G2T1なども同様に-1/3となります。S1-S6, S7-S11は人数にあわせて1/6と-1/5となっています。
ただ、これをひたすらSPMに打つのは非常に苦痛ですね。ここで、Matlabの便利な機能を使います。
Matlabでは、1がn個続く時は、 ones(1,n) とします。
これは応用が効いて、もし、1/3がn個続く時は、 ones(1,n)/3 とします。
-1/4がn個続く時は、-ones(1,n)/4 となります。
そして、ゼロがn個続くときは zeros(1,n) となります。
従って、今の場合は、以下のように書くことができます。私はこれをSPMのcontrast managerに入力しています。
1 -1 zeros(1,3) ones(1,3)/3 -ones(1,3)/3 ones(1,6)/6 -ones(1,5)/5
すると、下図に示すようなコントラストになるはずです。
G1 | G2 | T1 | T2 | T3 | G1T1 | G1T2 | G1T3 | G2T1 | G2T2 | G2T3 | S1 | S2 | … | S6 | S7 | S8 | … | S11 |
0 | 0 | 1 | 0 | -1 | 6/11 | 0 | -6/11 | 5/11 | 0 | -5/11 | 0 | 0 | … | 0 | 0 | 0 | … | 0 |
timeの主効果は、経時的にvolumeが小さくなると仮定して、[1 0 -1]と考えています。G1T1, G1T2, G1T3に関しては、今はT1がG1とG2で不均等になっていますので、その比率を考慮して、G1T1, G1T2, G1T3に関しては、6/11×[1 0 -1], G2T1, G2T2, G2T3に関しては、5/11×[1 0 -1]となっています。そして、subjectのfactorに関してはこの中に3つの時系列をすべて包含していますので、コントラストに影響しませんので、すべて0となります。
これも先ほどと同様にonesとzerosを上手に使って書いてみましょう。以下をcontrast managerに入力します。
zeros(1,2) [1 0 -1] 6/11*[1 0 -1] 5/11*[1 0 -1] zeors(1,11)
すると、コントラストは下図のようになるはずです。
G1 | G2 | T1 | T2 | T3 | G1T1 | G1T2 | G1T3 | G2T1 | G2T2 | G2T3 | S1 | S2 | … | S6 | S7 | S8 | … | S11 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | -1 | -1 | 0 | 1 | 0 | 0 | … | 0 | 0 | 0 | … | 0 |
交互作用で用いられる項目は、GxTxのみです。これも次のように書きなおすことができます。
zeros(1,2) zeros(1,3) [1 0 -1] [-1 0 1] zeros(1,11)
コントラストは下図のようになります。
これでひと通り検定することができるはずです。
いざまとめてみると、結構すっきりした感じになりました。
縦断データをお持ちの方は、是非トライしてみてください。VBMだけでなく、脳血流SPECTなどにも応用可能です。
ある方に、
「ファイル名の最初に一括でzとつけたいのだけれども、どうしたらよいだろうか?」
と質問されました。
たとえば、
001.jpg 002.jpg 003.jpg 004.jpg
をすべて
z001.jpg z002.jpg z003.jpg z004.jpg
としたいというような時です。
ここで、Linuxではrenameというコマンドを使います。
renameは以下の書式を知っていれば応用が効きます。
rename 's/置換前文字列/置換後文字列/' ファイル名
この、’s/before/after/’はsedでの置換と同じ書式です。sはsubstituteの略です。
でも、今は置換ではなく、文字列を追加したいわけです。
こういう時、Linuxはたいしたもんだなと思うのですが、ファイルの頭は^という特殊文字で表現されます。
そして、ファイルの最後は$で表現されます。(正規表現ですね)
なので、今、ファイル名にzを追加したい時は、
「^をzに置換」してあげると考えるわけです。
したがって、以下のようになります。
rename 's/^/z/' 00*.jpg
もし、ファイル名の最後に.oldをつけたかったら以下のようになります。
rename 's/$/.old/' 00*.jpg
^と$についての知識がちょっとあるだけで、ずいぶん楽になりますね。
iTunes Matchが日本でもはじまりました。
しかし、多くの方がうまくいかずに苦しんでいます。私もその一人。
ネットには様々な情報が流れていますが、ステップ1、2で今まで一番うまくいったのは、
の2つでした。しかし、それでもステップ3で途中で止まってしまって先に行けないという現象に遭遇していました。
そこで、なぜ、上記の2つが有効なのか考えました。
基本的に、ネットワーク関連でうまくいかないときに一度止めて再度トライするとうまくいくことがあるというのは、基本的に情報のアップロードがうまくいっておらず、一度停止してリトライすることで新たにサーバーへの接続がなされるからということが多いからと思います(確証がないので断定しません)。サービス開始直後でアクセスが多いこともあると思いますが、おそらく、データのアップロードで情報がオーバーフローしているのではないか?と思いました。
そこで、帯域制限をしたらうまくいったという報告をしている人がいないかと思ったら、いらっしゃいました。
をぢの日記−意外な方法で、Music Matchが終わらない件が解決した
そこに以下のような記載があります。
iTunes Matchがアップロード帯域を使い果たしてしまい、そのためにiTunes自体がiTunesサーバにアクセスできず、 自己破綻してハングしているという説らしい。Apple Support Communityにも同様の投稿があった
私の推測は大きく間違っていないようです。
そこで、早速、私が音楽の管理のために使っているMac Book Proに、(一度、iTunes Matchを停止してから)上記サイトでも紹介されているSpeedLimitを導入してみました。
ちなみに、ダウンロードして普通にダブルクリックすると「セキュリティ上あけられません」などと言われると思いますので、
Finderを開き、ダウンロードフォルダに行ってから、右クリックで「開く」とするとインストールできます。
インストール後、環境設定に入りますので、立ち上げます。
そこで、Port80と443を選び、Speedを768k(DSL)を選び、”Slow Down”としました。私が現在使っている環境はネットワークがそこまで速くなかったからです。
この設定をして、再度iTunes Matchを走らせたところ、一度だけネットワークエラーで止まりましたが、その1回だけで結果的には丸2日間かけて3500曲のアップロードが完了しました。それまではせいぜい1時間以内で止まっていたことを考えると、帯域制限がいい方向に動いてくれているということになります。また、私はステップ3に行ってからこの方法を試したのでステップ1および2に及ぼす影響はよくわかりませんが、おそらくよい方向に働くのではないかと思います。
ということで、iTunes Matchで苦しんでいる方は、ネットワークの帯域を少し絞ってみるのがよいかもしれません。
ついにできました!VBMの教科書です。
薄い本(150ページ弱です)ですが、VBMについての基礎知識がぎっちり詰まっています。
この本のいいところは、以下のようなところです。
構成は以下の通りになっています。
第1章 はじめに
第2章 画像解析の準備
2.1 画像解析に必要なコンピュータのスペック
2.2 画像のファイル形式
2.3 画像解析の一連の流れ
2.4 SPMのインストール
2.5 サンプルデータ
第3章 SPMの動作の基本
3.1 SPMのウィンドウ構成
3.2 作業ディレクトリの設定
3.3 画像の表示
3.4 AC-PC位置合わせ
3.5 MATLABスクリプトを用いた半自動AC-PC補正プログラム
第4章 VBMの概要と前処理
4.1 VBMとは
4.2 分割化
4.3 DARTEL
4.4 バッチ(Batch)処理
第5章 統計モデルと結果表示
5.1 事前準備
5.2 群間比較(two-sample t-test)
5.3 相関解析
5.4 要因の分散分析
第6章 VBMの臨床への応用
6.1 VSRAD®
6.2 J-ADNI
6.3 VSRAD®の臨床応用例
ちなみに、総ページのだいたい半分が第5章に割かれています。VBMの前処理についての情報はそれなりにあるのですが、統計処理のところについての説明は非常に少ないので、統計処理について重点を置いています。
値段が5000円+消費税8%で5400円となっていますが、ここまで情報が詰め込まれているVBMの解説書はありませんので、形態MRI解析を志していて英語の文献を読むだけの気力がない方にはお手頃だと思います。(実は英語でもVBMの統計の部分の情報は系統的なものは少ないです…)
Amazonでも購入いただけます。リンクは下記。
Linuxでつまずきのひとつになるものに無線LAN子機があげられると思います。ネットを探しても情報は限られている印象があります。
動作するものとしないものとあり、動作しないといろいろ設定に苦しんでしまうというところがあります。私自身も以前かなり苦しんでいましたがうまくいかずにあきらめてしまっていました。
今回、オフィスの引越しに伴って自分の机がルーターから離れてしまったため、必要に駆られてXubuntuでも動作する無線LAN子機を探すことにしました。
ググったところ、こちらの記事を見つけました。Linux MintにI-O DATAのWN-G300Uシリーズが「何もせず」に動作したとのこと。
早速入手しました。
製品ホームページはこちら。2014年4月現在Amazonでは1763円で入手可能です。
それで、結果はどうかというと、
【何もせずに】動作しました!
USBにWN-G300を挿した状態でXubuntuを起動し、ネットワークのアイコンをクリックしたところ、普通にWi-fiのSSIDの一覧が表示され、自分がつなげたいSSIDを選択し、パスフレーズを入力するとあっさり接続です。
発売が2010年の機種ですが、現行で販売されていますので、Xubuntuで無駄な労力なくデスクトップで無線LAN環境を構築したい方にはおすすめの一品です。
Connectomeに関心が集まっている昨今、様々なソフトウェアが発表されています。
それらの中にConnectome Mapping Toolkitがあります。Connectome Mapperがその根幹をなすものですが、Connectome mapperを動かすためには、
を事前に準備しなくてはならず、そのうえでConnectome mapperを入れないといけません。
結構大変な作業です。
順天堂放射線科の神谷先生と情報交換をしながら、Ubuntuにこれらのソフトをいれ、Connectome mapperを起動させる手順書を作成しました。
悩んでいる人は試してみる価値があると思いますので、試してみてください。
PDFはこちらからダウンロードできます。
なお、Lin4Neuroの最新版(20140313)には、FreesurferとDiffusion Toolkitを除くこれらのソフトのすべてが入っています。めんどくさがりの方は、最新版のLin4Neuroを使用することをおすすめします。
I updated Lin4Neuro.
This time quite a few changes were made.
You can download the latest Lin4Neuro from here.