したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

解析関係

1MRT:2007/03/02(金) 18:27:36
解析に関する話題はここでお願いします.
SPMのUpdateや外部ツール,統計に関する話題なども

2MRT:2007/03/02(金) 20:48:39
<SPMの改造について>

SPMのフォルダにあるspm_defaults.mを書き換えると
Estimationが高速化されます.

書き換える場所は34行目です.
前:defaults.stats.maxmem = 2^20;
後:defaults.stats.maxmem = 2^24;

書き換えはEstimation時に読み込むデータの量を
2^20bから2^24bに増やすという意味です.
これにより1回に処理するデータ量が
倍増するので処理全体が速くなります.

実際のところ読み込み量は8倍になっていますが,
処理速度は2〜4倍程度です.
例:30分 >> 10分
データの読み書きの時間がボトルネックになっているためかもしれません.

今のところ私のPCでは安定して動いていますが,
改造は各自の責任でお願いします.
(処理速度の問題だけで結果には全く影響しません.)

ちなみに「MAXMEM」問題はSPMのMailListでも議論されています.
ttp://www.jiscmail.ac.uk/cgi-bin/wa.exe?S1=SPM

3MRT:2007/03/06(火) 18:58:33
<SPM.matの内部構造について>

Estimationで出来上がるSPM.matの中身を見る方法を説明します.
SPM.matの中には元画像データの情報や場所,
モデルの内容などの様々な情報が格納されています.
普段それを見ることはありませんが,見ることも「できます」.

まぁ 見てどうなるものでもありませんが,
暇つぶしがてらに覗く価値はあると思います.
先ず,MatLabのコマンドウインドウでspm.matを読み込みます.
読み込みは”load”とspm.matがあるフォルダまでのpass名を
スペース区切りで打てばできます

例: >>load Z:\ProjAnimacy\morito\Result

その後,「SPM」と大文字で打つと以下のような情報が引き出せます.

>>SPM

SPM =
xY: [1x1 struct]
xBF: [1x1 struct]
nscan: [132 132 132 132 132]
Sess: [1x5 struct]
xGX: [1x1 struct]
xX: [1x1 struct]
xVi: [1x1 struct]
SPMid: 'SPM5: spm_spm (v$Rev: 649 $)'
xM: [1x1 struct]
xsDes: [1x1 struct]
xVol: [1x1 struct]
Vbeta: [1x35 struct]
VResMS: [1x1 struct]
VM: [1x1 struct]
xCon: [1x9 struct]
swd: Z:\ProjAnimacy\morito\Result

これはSPM.matの中にあるデータの内部構造をあらわしています(フォルダのような概念).
さらに「SPM.xY」や「SPM.xBF」のよう「SPM」に「.」をつけて
先ほどの名前を打つとさらに下位の情報が引き出せます.


>> SPM.xY
ans =
RT: 2
P: [660x55 char]
VY: [660x1 struct]

さらに「SPM.xY.P」と打つと...

まぁこんな感じで,後は各自で色々と試してみてください.

4MRT:2007/03/06(火) 19:13:45
すみません
上のmatファイルの読み込みの例が少し間違えています

× >>load Z:\ProjAnimacy\morito\Result\
○ >>load Z:\ProjAnimacy\morito\Result\spm.mat

上記のように訂正お願いします.

5 DNS:2007/03/08(木) 18:17:04
Diag_imgs
UHTさんへ

Matlabの新規mファイルで、下記のスクリプトをコピペして
"diag_imgs.m"として保存してください

使用する際には、SPM99かSPM2のフォルダに入れて実行してください
(SPM5を使用しているなら、パスの切り替えもしてください)

Matlab起動後、diag_imgsと入力し実行。
あとはウィンドウの指示に従って下さい。
Analyze formatの画像の1 volumeの信号の平均値をプロットしてくれます

MRI装置の不調等で、信号が安定してない場合は
これを実行するとある程度分かります

Figureには出ないですが、Matlabの方に計算が終われば、
MeanとSDが出ますので、それも参考になります

なお、このスクリプトは、ミスター河内山の作品ですので
スクリプトを実行するするたびに、感謝の言葉を口ずさんでください
(このスクリプトのクレームは、ミスターの方にお願いします)

また使用方法で分からなければ、お知らせ下さい

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [gl] = diag_imgs
% Usage
% >>diag_imgs;
% or
% >>[global_value] = diag_imgs;
% This program checks estimated globals calculated by spm_global.m
%-------------------------------------------------------
% Takanori Kochiyama

mx = -Inf;
mn = Inf;

V = spm_vol(spm_get(Inf,'*.img','Select images...'));
n = length(V);
gl = zeros(n,1);

for i=1:n
gl(i) = spm_global(V(i));
end

mean_gl = mean(gl);
sd_gl = std(gl);
min2max_gl = max(gl) -min(gl);
pmmin2max_gl = min2max_gl/mean_gl;

fprintf(['Grand Mean = ' num2str(mean_gl) ';\n'])
fprintf(['SD of GM = ' num2str(sd_gl) ';\n'])
fprintf(['CV of GM = ' num2str(sd_gl/mean_gl) ';\n'])
fprintf(['Max to min/GM = ' num2str(pmmin2max_gl) ';\n'])

figure(1);hold off
plot([1:n],gl,'b');hold on
plot([1:n],(mean_gl)*ones(n,1),'m.')
plot([1:n],(mean_gl-2*sd_gl)*ones(n,1),'r.')
plot([1:n],(mean_gl+2*sd_gl)*ones(n,1),'r.')
set(gca,'xlim',[1 n])
title('Estimated globals')
legend('Globals','G. Mean','GM+/-2*SD')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

6MRT:2007/03/18(日) 10:28:53
<刺激の制御について>

現在,MRIの実験では「Presentation」を使用して
実験および刺激の制御をしている方が多いと思います.

DelphiやC#など新しい言語を身につけるのも良いと思いますが,
「MatLab」を用いて刺激の制御をする方法もあります.
MatLab上でSPMを動かすように,外部ツールをMatLabに入れると
比較的簡単に刺激の制御や信号処理ができるようになるようです.

どうせこの先SPMで研究を続けていくなら,ついでにMatLabを勉強し,
刺激の制御も覚えておくと色々と便利かもしれません
以下に,使えそうなソフトやハードをあげておきますので
ご興味がある方はどうぞ.

Cogent2000(無料):  ttp://www.vislab.ucl.ac.uk/Cogent2000/index.html
PsychoToolBox(無料):ttp://psychtoolbox.org/wikka.php?wakka=HomePage
VSG(\240万): ttp://www.namoto.com/web/Vision_WEB/Vision_CRS/Device/ViSaGe/ViSaGe_Main_Bottom.htm

ちなみにVSGはMRI室にもあり,小松研の方々はこれで刺激の制御や猿の眼球運動
などを計測・制御しておられるようです.
個人的にはWindowアプリケーションは「C#」か「Delphi」で作り,
刺激の制御は「MatLab」ベースに変えていこうかと考えています.

蛇足:
VSGはC#やDelphi,Basicでも使えますが将来的にはMatLab
一本に絞っていくそうです(ナモト貿易さん談)

7MRT:2007/03/18(日) 10:32:35
なんか段落間のつながりが意味不明ですね...

要は「Presentation」はバカみたいに高くて応用性が無いので,
無料で簡単に使える資源(ソフト)があったらそっちに乗り換えた方がいいんじゃないの?
ってことが言いたい訳です ハイ d(`・ω・´;)

8MRT:2007/03/20(火) 03:01:12
<Batch処理>

大体の人は知っておられると思いますが,
SPM5はBatchを使うことでほぼ自動でPreprocessからModelEstimateまでできます.

と,ここまでは当たり前でこっからが少し小ネタです.

で,実はSPM5は別々に作った複数のBatchを
新たに「Batch処理(メタBatch?)」することもできます.

[方法]
①別の名前をつけたBacthを複数用意する(例えばSub①〜Sub⑩の前処理など).
②GraphicsWindow右上の「TASKS」の「Batch」を選択する.
③GraphicsWindow内の「New"Util"」を選択する
④「Util」内の「"Excute Batch Jobs"」を選択する.
⑤「Batch files ->X」の「SpecifyFiles」を選び対象となるBatchを指定する(複数可)

これでできたBatchを走らせると選択したBatchファイル全てを
連続的に処理することができます.

これにより1つのBatchに詰め込みすぎることで起こる妙な入力時のタイムラグや
打ち込みやコピーミスによるヒューマンエラーが低減できます.

9HTU:2007/03/21(水) 14:51:15
MRIcro

教えてください。ちょっと困っています。
鳥取で取ったデータをDICOMからanalyzeに変換すると
sagittalで撮像しているためなのか、3方向でviewすると
cornalの場所にAxialが
sagittalの場所にcoronalが
axialの場所にsagittalがきてしまいます。

表示してからどこかをいじることで変換できるのでしょうか?
ご存知の方、よろしくお願いいたします。
今DICOMデータはないのですがanalyzeデータは手元にあります。

10DNS:2007/03/22(木) 16:02:51
>>HTU

MRIcroで変換するときにどこかのチェックボックスに
チェックを入れるとうまいこといくかもしれません
変換し終わってからだとどうすればいいか分かりませんが、、、

もしくは、SPMで読み込んで、
Displayの所の回転させるやつで、好きな方向に回せると思うので
それで保存してはいかがでしょうか?
回転させるパラメータを全てのEPIに対して当てはめてやれば
良いと思います
(この場合、回転させた方向が間違うと左右が変になりそうなので、
タッピングなどの左右がはっきり分かる課題で試してみた方が良いと思います)

他の方法では、Matlabでスクリプトを書くというのがあるとおもいます
EPI画像をひたすらFlipするだけのがどこかにあると思いますので
それを改変してみてはいかがでしょうか?
ありました、"spm_flip.m"です
###########################################
function spm_flip
% FORMAT spm_flip
% flips images from right to left
%___________________________________________________________________________


% get images
%---------------------------------------------------------------------------
P = spm_get(Inf,'*.img',{'select images for flipping'});

% flip
%---------------------------------------------------------------------------
spm_progress_bar('Init',length(P),'flipping','');
for i = 1:length(P)

[p,f,e,v] = fileparts(P{i});
Vi = spm_vol(P{i});
Vo = Vi;
Vo.fname = fullfile(p,['f' f e]);
Vo.descrip = [Vo.descrip ' - flipped'];
Vo = spm_imcalc(Vi,Vo,'flipud(i1)');

% progress
%-------------------------------------------------------------------
spm_progress_bar('Set',i);
end
spm_progress_bar('Clear')
#############################################################

他にも、昔どこからか手に入れた、
MPRAGEを回転させるスクリプトがありますので
必要なら送ります

11MJH:2007/03/30(金) 18:17:08
MJHのデビューです。

MRTさんに質問なのですが、
<刺激の制御について>の件についてで紹介していただいたCogent2000の使用を考えています。
そこで
・従来のPresentationに比べてCogent2000などが優れている理由
(応用性がPresentationよりあるとの事でしたが、特にどのような刺激提示においてCogent2000のadvantageがあるのでしょうか)
・Cogent2000はWindows2000上でMatlab ver6.0もしくはMatlab ver6.1で走らせることを推奨しています。
MRTさんはXP上のMatlab7以上で走らせてみたご経験などありましたら、問題なかったか、教えてください。

よろしくお願いいたします。

12MRT:2007/03/31(土) 02:17:36
Cogent2000の利点についてです.

...初め長々と書いたのですがくどくなったので実例から (・・;

・運動刺激を提示する場合
・複雑な幾何図形の描画
・実験中や直前における刺激の修正(先生や被験者のクレームなど)
・数学的な画像処理(周波数フィルター処理)をする場合
・反応データの処理(実験中に刺激に反映させる場合など)

以上のような場合に紙芝居式のPresentationでは一々画像を作り直さないといけません.
もちろんPresentationにあらかじめある関数を使えば多少の描画は出来ますが,
それ専用に作られているわけではないので限界があります.しかも,数学的な処理などでは
プログラムで書かないと物理的に作成そのものができません.

またプログラムで刺激を制御すると自分の想像を超えた刺激を作ることも出来ます.
例えば,色の調合や多項式制御された刺激の運動,独立した時間変化を行う刺激など.

紙芝居式に刺激を制御すると,その紙を作る段階で思考が具体化されすぎるので
思考そのものの応用性も下がるように感じます(個人的感想ですが...)
思考実験を具体化することも比較的簡単にでき,新しい実験の発想が湧くことも多々あります.

後半半分は私的な感想ですが,利点としてはこんな感じです.

次いでXP上での動作についてですが,
正直なところまだXP上では動かしてないので今まさに調べているところです.
(無事に動くと言う話は伝え聞きましたが...)
ちなみに依然,私が試してみたときはWin2000のMatlab5.3くらいでした.

ただMatlabだけでもそこそこ刺激の制御が出来るので,Cogent2000の関数を
補助的に使うと言う形で刺激の制御をすれば問題はないかと思われます.

また私の方でも何か分かればおって連絡させて頂きます (`・ω・´)ゝ

13MJH:2007/04/02(月) 11:29:58
MRTさん>>なるほどー。明快なご回答、ありがとうございました。
とてもわかりやすかったです。
感覚認知系の実験では特に有効なツールになりそうですね。
私も使ってみてわかったことなどはここにフィードバックしていきたいと思います。
ありがとうございました。

14MJH:2007/04/07(土) 15:47:30
下のTESTのスレにMRTさんの書きこみがあったので・・・
<MarsBarでtimecourseをplotする>
私の知っている限りのことですが、書いておきます。(一部サイボウズに載せたときの抜粋があります)
なにか間違いなどあればご指摘いただけると助かります。

現在SPM extentionでHPからDLできるのはSPM2対応Versionですが、SPM5対応のものは開発中のようです。
SPM5対応版のdevelop versionは
ttp://sourceforge.net/project/showfiles.php?group_id=76381
からDownloadできます。
Package: marsbar-devel
Release: 0.41
が、SPM5 compatibleのdeveloping versionです。
ttp://sourceforge.net/search/?ml_name=marsbar-users&type_of_search=mlists&group_id=76381&words=SPM5
にはmailing listに届いているバグの報告などがあります。
ちなみに私はRelease:0.40で、Matlab ver.7でちゃんと走っています。
(Release 0.41については試していません)

それからMarsBarのHPは
ttp://marsbar.sourceforge.net/
tutorialもあるので、使い方の詳細はそれをダウンロードしてもらえればOKだと思います。

解凍したMarsBarフォルダをSPM5の中のtoolboxフォルダに入れた後、Matlabでパスを設定すれば、SPM5内のtoolboxボタンでMarsBarの文字が出てくるはずです。
(MarsBarを解凍すると、marsbar”〜”と、余分なものがついていますが、〜の部分は消して、フォルダ名をmarsbarとしてください)

timecourseは以下の手順で取得します。
①Marsbarを立ち上げる(なぜか魚の絵が出てくる)
②ROI definition → Build
ココでROIを決定します。
③Data > Extract ROI data (full option) ←必ずfull optionの方を選択してください。
    > use SPM design ←estimateしたSPM.matを選ぶ
   > 続いてデータを取り出したいsession数を入力し、sessionごとにsw___.imgを選んでいく。
    > Scaling form ←データをscalingしたい場合はsession specifiedを選択。信号値そのままがほしい場合はrawで。
    > すべて選択が終わると、計算が始まる。終わるとGraphic windowにサマリーが出てくる。
④Data > Save data to file データを保存
    > Export data ←これでMatlabの変数名を指定して出力、もしくはtext, xlsなど、好みの形式で保存できる。

結果は、timepointごとの値が一列に並んで表示される。
このようなデータを全被験者で取り出して、平均するなりして、graphを作成する。
きっとどこかにグラフにすることとかできる機能があると思うんですが、私はしりません。
以上、MarsBarでtimecorseのコーナーでした。

15MJH:2007/04/07(土) 16:11:52
ついでに
<Display slices機能でactivation mapを作る!>

解剖画像にactivation mapを乗せて、全脳をスライス表示したい!
そんな方におすすめな今日の目玉商品、display slices.
ボタンをぽちぽち押すだけで、だれでも簡単に頭をスライスできます!!

方法をば。。。
ありがたいことに、SPM2ではextensionとして、入れなければいけなかったのですが、SPM5でははじめから実装されています。
①コマンドラインで slover('basic_ui') と入力。
②表示したいcontrastのcon image(複数枚可)と、解剖画像を選択。
③左下の画面で、それぞれのimgが何を示しているのか聞かれる。
 contrast imgは"Blobs"を選択。解剖画像はstructualを選択。

  Blobsの場合はどんな色で表示するか聞いてくるので、好みの色を入力。
  (color mapはいろいろ選べたと思うけど、どんなのがあったかは忘れちゃいました)
  私は通常、positiveはhot, negativeはwinterで表示します。
  続けて、表示する閾値を聞いてきますので、表示したい統計値の範囲を指定してください。
  
  解剖画像の場合は Axial, Coronal, Saggitalのどの面で切るか聞いてきます。
  続けてslice to displayで、slice面の範囲と間隔を聞いてきます。
  一番下のz座標:スライス間隔:一番上のz座標 (axialの場合)このように入力します。
  例)-20:4:80 (z=-20からz=80まで、4mm間隔のスライスを表示)

④これでGraphic Windowにスライスが表示されます。

以上、<Display slices機能でactivation mapを作る!>のコーナーでした。

16MJH:2007/04/07(土) 16:23:47
おまけ

Display slicesのようなマップを作る方法はもう一つあります。
それがMRIcroを使った方法です。

それぞれの利点ですが、
Display slices
・複数毎のcontrastを重ねられる。
・スライス面が好みの範囲で一覧表示できる。
MRIcro
・単一のblobしか乗せられないが、Blobの透け具合が調整できるのでsulcusが見やすい。

これらの点から、普段はdisplay sliceを使いますが、論文のFigureなどで、個人レベルでsulcusとの位置関係を見やすく示したい場合はMRIcroを使っています。

以前に一度サイボウズにも乗せましたが、MRIcroを使ったactivation mapの使い方を書いておきます(サイボウズから抜粋)。

作成方法についてですが、
1,MRIcroのメニュー「File」から、Open image...でanatomical image(個人の3dなど)を指定し、開く。
2,メニュー「Overlay」からLoad functional overlay...で見たいconイメージを指定する。
3,続けて出てくるwindowで、表示するrangeと、negative,positive,もしくはその両方を表示するのか指定する。

これで表示できるはずです。
メニュー「Overlay」のTransparencyでoverlayさせるimageの透け具合を調節できます。
また、「View」のSelect MNI/Tarairach coordinateを選べば、スライス面を指定できます。(RLはdefaultでは逆になっているので注意が必要です。)

使い方は
ttp://www.sph.sc.edu/comd/rorden/overlay.html
に少し詳しく書いてあります。

15>で書き損ねましたが、Display sliceについての解説は、
ttp://imaging.mrc-cbu.cam.ac.uk/imaging/DisplaySlices
にあります。

17MRT:2007/04/07(土) 16:29:08
詳細な解説ありがとうでした. (`・ω・´)ゝ
また他に便利な機能でもあればまたオネガイシマス.

18HTU:2007/05/01(火) 16:35:20
9,10への自己レスです。
今後3dを撮像の関係上saggitalで撮る方もいると思いますので
書いておきます。

MRIcroでやるとpreviewできるので便利です。
File
→Save as Rotated/Clipped
→左下WindowからFormatをSagittal-leftに変える。
→Previewを押すと確認画面が現れるのでその画面どおりになっているか
 確認した後にSave[intel]を押して別名保存する。(Save [sun]との違いはわかりません)
→できたファイルは頭にxがつく。
(軸の変換が完了する)

19MRT:2007/05/13(日) 20:09:51
気分転換がてらに小ネタを一つ

MRIで出たResultを3D脳イメージに貼り付ける方法
(こんな感じの→ttp://brainimaging.waisman.wisc.edu/~oakes/20000906_173700_3dbr.jpg)

元々はMriCroでもできる機能だったのですが,
なんかバグとやらで現在はできるとかできないとか...?

そこでMricronという上位ソフトを使います.
ソフト自体は以下のフォルダにおいておきます
\\Ppspc2\common\Social_Brain
mricrond.zipというファイルを展開してインストールすれば使用できます.

さて件の展開の方法です.

①構造画像を読み込む
*「file」→「OpenTemplate」→「ch2bet.nii.gz」を選択するとMNI仕様の構造画像が読み出せます.
この画像はSPMのsingle_sub_T1.niiと同形でかつ解像度も高く,頭蓋を外してあります.
 ちなみに頭蓋つきは「ch2.nii.gz」で呼び出せます.

②構造画像に機能画像を貼り付ける
 *「Overlay」の「Add」を選択し,対応するイメージファイル(spmTやcon_image)を選択します.

③3DのRender画像を表示する
 *「Window」の「Render」を選択

④Render画像をカットする
 *開いたRender用Windowの「Backgrund」の「Cut」を選択する

⑤Cut位置を決める
 *X,Y,Z座標上での切り取り範囲を数字で入力する
 *「ShowCut」にチェックを入れておくと分かりよいです.

⑥切り取った画像を保存する
 *「File」の「Save as bitmap」を選択する

以上で3Dの構造画像に機能画像を貼り付けた絵ができるはずです

20MRT:2008/10/29(水) 12:18:06
小ネタですがMNI座標とTal座標を「双方向」で変換する
Excelファイルを作ってみましたので以下のフォルダに置いときます

\\Pps-nraid\common\Morito2Others\2All\座標変換

まぁTAL→MNIはあまり使わないけどね (・・;)ヾ

21MRT:2008/10/29(水) 12:50:04
小ネタの続き 「解析ソフト情報」

まだβ版ですがSPM8が公開されたようです
更新が多いので興味深いですが
解析に使うにはまだちょと怖いですね (・・;)

talairach daemonが微妙に更新されている模様(H08/09)
名前も「TalairachClient 2.4.2」となって
微妙なバグが消えてるので少し使いやすなったかも

MRIcronもマイナーチェンジがあった模様(H08/09)
Multislice機能などの新機能がちょこちょこ増えてるみたいです


プリンタ室のMacG5(OsX 10.4)を掃除して
FSLとFreeSurferを使えるようにしました

UNIX,Mac系の解析ソフトでどれもフリーです
脳溝を展開したい人やMac派,MatLabが高くてやってられない人向けです (・・;)

ちなみにAFNIとCaretも追加インストール予定です (`・ω・´)ゝ

FSL:ttp://www.fmrib.ox.ac.uk/fsl/index.html
FreeSurfer:ttp://surfer.nmr.mgh.harvard.edu/fswiki
AFNI:ttp://afni.nimh.nih.gov/afni
Caret:ttp://brainmap.wustl.edu/caret/

まぁ SPMがあれば大抵は事足りますが,
名前くらいは知っておいた方が良いかと d(・・;)

22MRT:2009/05/27(水) 16:02:20
SPM5がWinVista 64bit(Matlab2008a)でバグるのですが,
誰か聞いたことあります?

どうも一部のCプログラム(spm_sample_vol関係:データ読み込み)
をリコンパイルしないといけないようで...

ちなみにSPM8だと上記の環境でも普通に走るようです d(・・ )

24MRT:2010/01/26(火) 19:49:42
ちょっとした小ネタ

A,B,C,Dの4つの条件で実験する
各条件は2つの下位条件に分離できるとする(例:A = A' + A'')
(ちなみに各主条件は1Session中2回繰り返しで計4Session撮像.下位条件はその半分 )

で,これを2つのモデルで解析する
モデル①:Regressor=A, B, C, D の4つ
モデル②:Regressor=A', A''...D', D'' の8つ

するとそれぞれのβ値は
 「モデル①の条件A = モデル②の条件(A'+A'')/2」 となる

もちろん多少はずれる.
誤差を計算すると3%くらい
(誤差 = (A - (A'+A'') / 2) / A

理屈を考えたら,まぁ当たり前の話なんだけど
Regressorを分解してもきちんと重回帰係数の独立性が保たれているのは
ちょっとスゴイなぁと感心してしまいました. (・・ )~°


ただ条件間(下位も含む)の直行性が大事です!
はじめから狙ってたので結構,気を使って組みました (;・・)ヾ

25KI:2010/01/28(木) 19:03:57
みなさんこれxjview知ってますか?結果SPMの見るときに便利です。
ttp://www.alivelearn.net/xjview8/

結果を表示させるツールですが、①普通にやると閾値を変えるたびに結果を出し直す
必要があるがxjview上で見た場合p値を自由に上げ下げできる、②sloverのコマンドで
作っていたrenderの図がボタン一つで可能。主に便利なのはこの辺ですが、他にもいろ
いろいじれます。結果を探索的に見たい場合は使えると思います。

使い方;
①上記のHPで適当に登録などして必要なファイルをダウンロード
②ダウンロードしたファイルをMatlabフォルダのToolboxフォルダに入れる
(パスがきってあればどこでもよいはず)
③パスがきってあることを確認し、Matlab上でxjviewとうって、Enter
④xjviewが開いたらFileメニューからOpen images、表示したコントラストのspmT
のファイルを選ぶ
あとは適当にボタンいじってみて下さい。

26MRT:2010/02/02(火) 15:14:11
ちょっと試してみてあまりの便利さに笑いそうになりました
こんなに使えるソフトだとは... (・・;

SPMのツールを読みこんでるみたいで使い勝手も良いし,
NegativeBold切ったり,TD DataBase使ってROI名示したり
かゆい所に手が届いて良い感じです

欲を言えばcon-image名だけで判断するので
ちゃんと整理してないと迷うけど
SPMと併用すれば隙が無いですね

27MRT:2010/02/02(火) 15:21:24
Overlayのアトラス重畳機能は解剖の勉強にも使えそうですね
内側部の脳溝の分布状態が分かりやすくて助かります

28KI:2010/02/03(水) 20:23:36
さすがMRTさん早いっすね。アトラス重畳機能とかオレまだ試してないです。
やってみよ。

29MRT:2010/03/05(金) 16:12:14
統計についての質問です
ただの思いつきなので適当に聞き流してください

質問の肝は「1つの刺激に対するActivationの有意性は検定はできるのか?」という話です.

普通,MR解析の時に条件の単純主効果を示すときは
条件Aのβ値を算出して,その値がベースラインより大きいかどうかを検定しますよね d(・・ )

ただ,この方法だと根本的に次元と視点の問題から,
1試行分のActivationが有意かどうかを検定できません.

「1試行分のActivationが有意性」を検定したい場合,
その1試行のActivation,例えばhdrのピークに相当するデータを
Slice Timing Correctionと同じアルゴリズムで計算し,
3D-MR信号データを抜き出し「A1」とする

そのA1と同様の方法でn回の試行に相当するRestのActivation「R1」〜「Rn」を算出し,
n個の差分データ「A1-R1」,「A1-R2」...「A1-Rn」を作る

これらの値にone-sample t 検定を適用すれば,A1データ
つまり1試行分のActivationがRestに対して有意かどうか検定したことになるのかな? d(・・ )

30MRT:2010/03/05(金) 16:17:45
元データの妥当性の問題から
「Restとタスクに十分なDulationをもつBlockデザインである」
という前提は必要になる.

この方法の問題点てのは,概念的には基礎統計で習いそうな話だけど
誰か知ってる人いたら教えて欲しい <(_ _)>

31KI:2010/03/05(金) 20:02:19
レベルは違いますが構造的には特殊なPatient Studyの実験と同じ感じですね。
ラルフのところのポスドクが去年Nature Neuroscienceに出したPersonal Space
のペーパーはMRTさんの言うやり方と基本的に同じことをしていると思います
よ。つまりこの場合は一人の患者が有意に統制群と違うかということを検定して
ます。もちろんデータの取り出し方という点ではこれはなんの参考にもなりませ
んが。

検定についてもこれは特殊なPatientだから許されてるのかもしれませんね。
やっぱ一番ありえる突っ込みはもっと試行数を増やせですよね。もちろんMRT
さんのケースもそれが難しい事情があるのだと思いますが。

ざっくりしたコメントでした。とんちんかんなこと言ってたらすいません。

32MRT:2010/03/05(金) 21:16:18
参考になります.

統計上のロジックとしての疑問なので
例に挙げてくださったPaitient Studyと同じだと思います

疑問の始まりはCategory Localizer実験をやったときに
同じカテゴリー内の各刺激の依存性を個別に評価する方法はないかな?というところでした.

応用例としては個別のActivation Mapができれば,
その3D-Correlationを全脳,機能部位,Voxelの3つのレベルで計算して
Objectの内的(心的)構造を階層化できるのではないか,と

発想としてはKriegeskorte.N (2008) Neuronの研究の簡易版てとこです.
ttp://www.ncbi.nlm.nih.gov/pubmed/19109916

私のほうもまだぼんやりしてるのでもう少し煮詰めてみます.

33MRT:2010/05/10(月) 14:28:29
データプロットについての質問です

【目的】
複数セッション分のVOIデータを9mm Sphereでまとめて収集したい

【問題点】
① MarsbarだとSession effectが混ざる(Sessionごとに階段状の下駄がはかされる)
② VOI機能(eigenvariate)だと1Sessionずつしか抜けないので手間
③ Plot機能(adjust/predict)だと1voxelずつしか抜けない


ここに来て以前,KI君がしていた質問の意図が分かった気がするけど
なんか上手い方法ないですかね?

34KI:2010/05/11(火) 01:04:30
Marsbar使ったことないですがSession effectが入るという点が特殊なんですね。
これもいいのか悪いのか微妙ですね。Session間を比べないならこれもありなん
でしょうかね。

ちなみにMRTさんの希望に添えるかどうかわからない完全なる丸投げですが、
rfxplotなるMatlabで動くtoolboxがあります。使っている人の話ではかなり
便利だとか。開発者は数カ月前に家を譲り受けるかもしれなかったドイツの
ぶーやんです。

ttp://rfxplot.sourceforge.net/index.html

35MRT:2010/05/11(火) 15:25:20
情報ありがとです
早速,試してみますね

40HSTR:2010/05/13(木) 13:01:24
MarsbarでEffect of InterestのFコントラストを使えばsession effectって抜けないんでしたっけ??
相当昔にやった上かなりおぼろげな知識で自信ありませんが。
ここまで書いてなんか違う気もしてきました、が、せっかく書いたので書き込みます。

41HTU:2010/06/20(日) 23:48:43
flipしたniiファイルをつくりたいのですが、
その作成方法、どなたかご存知の方、お願いします。
基本的なことかもしれませんが、教えて下さい。

こどもの標準脳つくってますが、ICBM templateって
左右差を消すため(?)にflipした画像も加えて作成されて
るんですね。恥ずかしながら知りませんでした。

42KI:2010/06/23(水) 14:48:29
HTUさん

Flipの仕方さっぱりわかりませんね。簡単な気がしますが他の人に期待。
テンプレート作りからとは、やっぱり子供のデータをとるのは大変ですね。
標準脳作るのに左右差消すことはないような気もしますがどうなんでしょ
うね。たくさんの人の脳を平均した結果左右差があってもそれが標準とい
うことでいいような気もしますが。

43MRT:2010/06/28(月) 02:05:23
>>41
遅レスですが
構造画像ならSPMのDisplayで変換・保存すれば良いかも

多数をまとめてするならSPMの設定でFlipの項があり,
1を-1に変えるだけでFlipのOn-Offができたような

ttp://atonal.ucdavis.edu/lab_howto/fmri/image_orient_display.htm
↑の下のほうに記述があります

44HTU:2010/06/28(月) 09:58:20
コメントありがとうございます。
Displayだと回転や移動はできたんですが反転はできませんでした。。。
HPも含めて、今一度確認してみます。

45HSTR:2010/06/28(月) 10:02:23
>>41
これが正しいかどうかわかりませんが、
昔nii変換をMRIcroだかcroNだかでやったところ、
R is Lの絵になったのを覚えています。
本当の意味でのflipになっているかは??ですが、
一応ご参考までに。

46MRT:2010/06/28(月) 15:00:52
>>44

Displayのresizeを1→-1にすれば反転できますよ

MRcroなら「RtoL」ボタン
MRCronならView→FlipL/Rで保存すれば反転できます d(・・ )

47KI:2010/07/02(金) 03:17:21
ちょっと別の質問ですが、解析時にマスクを使った場合と使わなかった場合で
uncorrectedの閾値で結果を出せばマスク内に関しては全く同じ値が再現される
と思いきやそうではないようなのですが(微妙だけど違う)、この理由が分か
る人います?

すげー簡単に言えばGLMのいろんなtermを計算するときに今まで全脳を使って
いたものがマスクの中だけを使うようになったからということでしょうか?

シグナルは確か全脳の値でnormalizeされますよね、マスクするとそうじゃな
くなる?

48MRT:2010/07/02(金) 08:53:23
>解析時にマスクを使った場合と使わなかった場合

マスクを使うと「リセル」の値が
変わってくるんじゃなかったっけ?

あと根っこが同じ話になりますが,
Randam field theoryにおける母集団の状態が変わるので
uncorrectedの統計値にも影響するのかもです.

Randam field theory:
空間状での乱雑な凹凸が,どのくらいの確立で閾値を越えるのかを予想する幾何理論
3Dのstatistical mapを幾何的な凹凸に見立てて第一種の過誤を予測している.

>今まで全脳を使っていたものが
>マスクの中だけを使うようになったからということでしょうか?

処理のどの段階までがマスクに限定されるのかは不明ですが
基本的にはこの理解で正しいと思います.

49KI:2010/07/03(土) 01:08:09
なるほどー、とにかく分析上のミスってことではないですよね。

MRTさんありがとうございました。

50HTU:2010/07/03(土) 02:43:29
>46
MRTくん、ありがとう。
簡単にできました。
(HSTRくんもコメントありがとう)

あと、ちなみにコマンドだと
spm_flip
と入力し、flipさせたいimgファイルを選択するようです。
これだと複数枚を一度に選択できました。
結果はファイル名の前に"f"の付いたflip画像が出来ます。
ただ、imgなら行けるけど、niiはダメでした。

51HSTR:2010/07/05(月) 13:03:11
SPM8で構造画像系の処理をすると「メモリが足りません」エラーが頻発するのですが、
誰か同じ目にあっている人います?
僕が遭遇したのは、
構造画像のdicom importで、以下のようなエラーがでます。

Failed 'DICOM Import'
エラー: ==> zeros
メモリが足りません.HELP MEMORYとタイプしてオプションを確認してください
In file "X:\Matlab\spm8\spm_dicom_convert.m" (v3307), function "write_volume" at line 564.
In file "X:\Matlab\spm8\spm_dicom_convert.m" (v3307), function "convert_standard" at line 222.
In file "X:\Matlab\spm8\spm_dicom_convert.m" (v3307), function "spm_dicom_convert" at line 52.
In file "X:\Matlab\spm8\config\spm_run_dicom.m" (v2094), function "spm_run_dicom" at line 32.

The following modules did not run:
Failed: DICOM Import

segmentでも同じようなエラーがでます。

matlabは7.1と7.4で試しましたがいずれもだめで、物理メモリは上限までつんでいます。
spm5では同じ処理でエラーがでないので、spm8のなんかがおかしい気がするのですが。
ちなみに64bit機だとエラーなく動くので、今は必要なときだけ64bit機で部分的に解析をしています。

試してみてだめだった処理は以下の通りです。
(1)spm_defaultsのdefaults.stats.maxmemの値をいじる
(2)windowsの仮想メモリの値を増やす
(3)Matlabの考えられる設定の変更
SPMのmailing-listにも時々out of memory errorの報告があるのですが、
参考になるのは見つからず、でした。

どうも変換後のファイルを生成する直前に、
zerosで空のデータを作るときに容量オーバーするみたいなんですが、、。

52MRT:2010/07/05(月) 19:05:35
>>51
こちらで使っている分には特に問題は無いようでした
SPM8,Matlab2008a,WinVista64bitです

SPMのr3684だとspm_dicom_convert.mが10/01/14に更新されてるけど
r3307だと09/05/??くらいの更新じゃなかったっけ?

ver upしてみればなおるかも

53MRT:2010/07/05(月) 19:25:05
Realignに関する質問です.

6sessionの実験で3session目に一回,被験者を出して休ませ,
もう一度,入れ直した場合,脳の位置が多少ずれますよね d(・・ )

この場合に6回分を貫通させてRealignかけた方が良いのか?
というのが質問です.

個人的には3回分ずつにRealignをかけて一旦,Normalizeし,
その後にもう一度6回分まとめてRealignかけ直した方が
良いような気がするのだけど, どうでしょう?

理由は下記の通りです.

Realignの手順としては,
先ず,Sessionごとの1枚目の画像でSession間のRealignをかけ,
その後にSession内の画像でRealignをし,
1段階目のSession間パラメーターを加味してHeaderを書き直していたと記憶しています

で,この1段階目の処理の時にSesion間で画像の質が違いすぎる,
例えば,スライス1枚分ずれてしまうと
剛体変換をベースにしたRealign処理が上手くいかないのではないかと感じました

そこで,間にNoramlize処理をかませて非剛体変換を経由し,
形状を似せてから合わせた方から2度目のRealignをした方が合いやすいのではないかと考えました.

もちろんRealign処理の過程でSmoothingされてしまうので(Defaultで5mm),
2回目のRealign処理時にはSmootingパラメーターを0mmに変更する必要があるかと思いますが d(・・;)

実験中に一度,被験者を出すことって
たまにありますが皆さんどのように処理しています?

54MRT:2010/07/05(月) 20:00:19
今更ですが...

SPM8のButchにあるUtil→Reorient Images
で簡単に複数のファイルをまとめてFlipできるようです
かなりお手軽です.

以下,ReorientMatrixのHelp(ButchWindowの下段)に詳細有り

55KI:2010/07/06(火) 02:26:13
>53

一回出して休ませてからもう一回ってことやったことがあります。私は一発のrealign
でやりました。PPSにいたころTYD先生と一度しゃべったことがありますが、ようは
どれだけrealignを信頼するかということだと思います。私は一発でやっても見た目
上おかしなことになっている感じは全ての被験者でなかったのでそのままやりました。

ただもちろん厳密にやりたい場合はMRTさんの提案とか、あとはcoregisterを利用す
るとか方法はあると思います。ただMRTさんの提案の同じ人のデータとは言え別々に
normalizeしたものをrealignするというのもちょっと気持ち悪いような気もします。
normalize後の画像って前半と後半で完全に一致はしなくないですか?そしてそのま
ま残りの解析をするってことですよね。まあこれはほぼ一致としても問題ない範囲と
いうことなんでしょうが。

56MRT:2010/07/06(火) 04:33:31
なるほどです

一発Realignは異なる角が欠けたサイコロの位置を合わせるような
感じがしてちょっと気になったのですが

要はRealignを信じるかNormalizeを信じるかってことですね
確かに言われてみると五十歩百歩な気もしますね


>同じ人のデータとは言え別々にnormalizeしたものを
>realignするというのもちょっと気持ち悪いような気もします

そうなんですよねー
私もここが気持ち悪くてなんか押し切れないのです


>normalize後の画像って前半と後半で完全に一致はしなくないですか?

Normalizeは1つのパラメーターで全部のデータに同じ処理をかけるので
前半後半で一致しないということは「Normalize前」のデータが一致してないことになるハズ

つまりRealignがあまり上手く行ってないってことなので
そのデータはちょっと注意が要るかもです

57HSTR:2010/07/06(火) 11:14:15
>MRTさん
レスありがとうございます。
verは最新版なはずです、が、確認してみます。
v3307はSPMのverではなく、dicom importのver何だと思ってました。

僕も64bit機ではうまくいくんですよ。
64bit機でも処理が終わる寸前に使用メモリ量が4GBを超えるので、そのときに32bit機ではとまってしまうみたいなんです。

58HSTR:2010/07/06(火) 11:21:32
>53
僕も1回出してもう1回の実験をやっています。
処理はRealignを一発でやっていて、MRTさんの書いている方法のまんまです。
KI君と同様、ぱっと見問題なさそうだったのでそのままその方法を使っています。
まえにKCYMさんに質問したときは、
Norm SD > Realign SD
だから個別Normalizeよりも一発Realignのほうがよいといわれたような気がします。
が、KCYMさんコメントはうろ覚え情報なので参考までに聞き流しておいてください。

59MRT:2010/07/06(火) 12:13:33
>>57
>v3307はSPMのverではなく、dicom importのver何だと思ってました

それはそれで合ってますよ d(・・ )
SPMは小さいver upを繰り返していてその都度VerNoを更新しているようです
たまにまとめて上げるときに公式に載せてるだけてな感じのようです

>58
そっかー
やっぱり一発Realignなのかー

KI君もHSTR君もありがとう

61MRT:2010/07/30(金) 15:11:56
今,気がついたんですが
現役PPSでここに来てるのってSSK君とOGT君,
あとはたまにROMってるKTDさんくらいか (・・;)

何気にOB板化してきてますね.

62MRT:2010/08/10(火) 14:11:44
トレーニングコースの関係でSPMを勉強し直していたら見つけました
ttp://www.geocities.jp/fmri_lab_1968/spm5_use/spm5_use.html

そいや,前にも聞いたことあったなぁ,と (・・;)

63KMD:2010/08/10(火) 23:22:45
MRTさん
どうもありがとうございます。
実は、これ最近探していたところです。
SPM8版も、あったりしませんかねえ。

64MRT:2010/09/09(木) 20:25:59
DCMのROIを抜き出すときのデザインマトリクス補正(Highpass・共分散)
をするための河内山さんマニュアルってどなたか持ってます?
(複数セッションのデータを強引に繋げ直すところ)

一応,自分で書いた補正用のMatlab Programはあるのですが
理論的なところをちょっと確認したくて探してます.

65YM:2010/09/10(金) 00:03:34
上記のマニュアルがあれば私も頂きたいです。
こちらではDCM解析を始めましたが、探索的なのでドツボにはまりがちです。。
DCM解析の理論や解釈方法で役立ちそうな論文があれば、共有できるとありがたいです。
どうぞよろしくおねがいしますm(_ _)m。

66MRT:2010/09/10(金) 19:37:30
DCM用に作ったデザインマトリクス補正用のプログラム書いたけど興味ある人おられます?
(複数セッションを1セッションにまとめたときのHighpassおよび共分散構造補正)

Session数や条件数などのモデルパラメーターを数か所書き換えるだけで
複数のspm.matを一括変換してくれるようにしてみました.

そんなに難しいことはしていないので問題は無いと思いますが,
プログラムの中身を検証してくれる人がおられると助かります (・・;)

67YM:2010/09/11(土) 07:11:46
↑デザインマトリクス補正用のプログラム、興味あります!
便利なプログラムですね。今のところ1セッションだけの解析をしているので
大丈夫ですが、いずれ複数セッションの実験をした際に使わせていただければ
ありがたく思います。もしよければ、いただけないでしょうか?
メールで添付とかでも可能ですか??

68DNS:2010/09/12(日) 19:14:01
僕も、興味有ります
良かったら見せて下さい

69MRT:2010/09/12(日) 20:49:32
了解です

明日にでもお送りいたします (`・ω・´)ゝ

70YM:2010/09/13(月) 12:52:58
MRTさん
ありがとうございます。お手数をお掛けしますがどうぞよろしくお願いします!

71MRT:2010/09/13(月) 19:07:46
>DNSさん
gmailに送りました (`・ω・´)

>YMさん
東北大のメールアドレスはまだ生きてる?
新しいのがあればそっちに送ります

72YM:2010/09/13(月) 21:41:34
MRTさん
東北大のメアドはまだ使えるのでそちらに送っていただけると助かります。
よろしくお願いします。

73MRT:2010/09/14(火) 15:01:55
>YMさん
idac.tohokuに送りました (`・ω・´)

74YM:2010/09/14(火) 23:33:11
>MRTさん
ありがとうございます。無事に受け取りました!

75MJH:2010/09/19(日) 04:48:56
VBM, DTIの解析をしたいと思っています。
素人な質問で申し訳ないですが、VBMはSPM, DTIはFreesurferで解析されてますか?
それとも他に良い方法ありますか?

また、具体的に何というツールボックスを使っているか、よいマニュアルなどもあれば紹介してもらえると助かります。

76HTU:2010/09/21(火) 09:47:07
VBMならChristian Gaserのvbm5よりもspm8のDARTELがいいようです。
詳しくはspm8のフォルダ内\manにあるmanual.pdfを参照。
FreesurferのVBM解析もregistrationが時間がかかるけど、思いの外いいみたい。
(by TTR S先生)

DTIはよく知らないです。

77MJH:2010/09/30(木) 02:20:34
<Graphics windowのフォントサイズの変更>
トレーニングコースなどでノートPCで作業をしていると、必ず「もっと解析結果のテーブルのフォント、でかくなりませんか?」って質問があると思います。
何年か前のトレーニングコースの時にだれかが説明してくれたはずなんですが、私はすっかりどのファイルをいじればいいか忘れてしまっていましたが、最近これを調べる機会があったので書いておきます。
spm.mを開けて、607行目付近に下記の記述あり。(SPM8のバージョンによっては多少位置がずれてるかも。)

%=======================================================================
case {'fontsize','fontsizes','fontscale'} %-Font scaling
%=======================================================================
% [FS,sf] = spm('FontSize',FS)
% [FS,sf] = spm('FontSizes',FS)
% sf = spm('FontScale')
%-----------------------------------------------------------------------
if nargin<2, FS=1:36; else FS=varargin{2}; end

ここの最後の行の、FS=1:36; を FS=2:36; とか FS=3:36; とかに変えてあげるとGraphicWindow内のフォントサイズが変わるはず。

78MJH:2010/09/30(木) 02:50:38
そういえば以前話題に上がっていましたが、イギリスに来てから刺激の呈示にPsychtoolboxを使っています。
Behaviorで使っているだけでMRIではまだ試していませんが、参考までにちょっとレポート。
・ライセンス料タダってのはイイ
Matlabで走らせるので。Presentationないところでも実験できますね。
・刺激のランダマイズ時間制御、被験者のフィードバックを利用した制御がしやすい。
bmpなどを読むのは少し遅いが(fMRIでは全く問題にならない程度)、プログラム上での図形を描画がしやすい。
被験者のフィードバックを利用して次の刺激を出すのも容易にできるはず。
・ログを即座に解析可能
Matlab上で走らせるので、別に解析プログラムを組んでおけば出力したログを即座に解析できる。

特に一つ目と三つ目のメリットはかなり大きい気がします。

80MRT:2010/10/04(月) 15:56:30
>>78
実験心理屋さん,特に視覚屋さん御用達のToolBoxですね

MatlabベースなのでI/O関係もかなり柔軟に対応できるのも特徴ですね.
MR実験だとResponceやMRパルスを収集するのが
ハード的(装置環境)に限定されることが多いので
結構,大事なポイントだったりします.

C#はGUIプログラミングできるから刺激制御は楽なんだけど
普通にやってるとパラレルポートが読めないからなぁ...(−−;)

81KI:2010/10/05(火) 01:08:52
オレもこっちでpsychotoolbox使い始めた。fMRIやってそれをSPMで解析すること
をgivenとすると、matlabは既にあるので金がかからないのはいいね。

まあ、オレはpsychophysicsとかやるわけではないので、どっちでもいいかなって
気がするけどMatlabで解析をできるようになりたいのが動機かな。

82YM:2010/10/15(金) 03:09:33
DCMの結果に関して、基本的な質問があります。
DCM.B(connectivity strength)やDCM.C(direct input strength)を開いた際に出てくる結果で”マイナス−”の
値が含まれていますが、このnegative connectivityの意味はどういったことなのでしょうか?

1)負の結合強度(結合が極めて弱い?)
または
2)逆向きの結合強度(領域A1→領域A2の結合強度が-1の場合は、領域A2→領域A1の結合強度が1という意味?)
のどちらかかなと思ったのですが・・・。

とても基本的な質問で申し訳ないのですが、どなたかご存知の方がいらっしゃったら教えていただけますと幸いです。
どうぞよろしくお願いいたします。

83MRT:2010/10/15(金) 13:47:45
式から考えると分かりやすいと思います
DCMのモデルは下記の式で表されます

Z' = (A + ΣuB)Z + Cu
ttp://www.fil.ion.ucl.ac.uk/~mgray/Presentations/DCM%20for%20fMRI%20Theory.ppt
(本HPのPPTが比較的分かりやすい.8枚目あたりに式の詳細)

この式の意味合いは,
ある部位の時系列変化量Z'(時間データの微分項)を他の部位の時系列データZで表現し,
それを一つの系の中で整合性が取れるようにパラメータA,B,Cを計算しているのがDCMです

例えば

Z1' = {[a11 a12 a13 0] + u3[0 b12 0 0]}[Z1 Z2 Z3 Z4]T + [0 C12 0][u1 u2 u3]T
とし,(前述のスライドに準拠.Tは転置の意)

上の式をもう少し簡略化すると下記のようになります
Z1' = a11*Z1 +(z12 + u3*b12) Z2+ a13*Z3 +C12*u2

,b12の値がマイナスになるとすると,
この式に示した通りZ1’を説明するためのZ2の影響が負に出ていることを指します
微妙に異なりますが,これはSPMの通常解析でいうところの
β値が負であることの意味合いと同じです
(Z1’とZ2の次元が違うので厳密には異なる)

84MRT:2010/10/15(金) 14:10:12
>>82の問いに戻ると

>1)負の結合強度(結合が極めて弱い?)

結合力が負であるというだけで,
結合が弱いわけではありません.

>2)逆向きの結合強度
ベクトルの向きは別の係数で表現されるので,
逆向きでもありません.


先ほどの式をもっと簡略化して考えると
Z1' = u3*b12*Z2 + A+ C

u3はタスクのON/OFFによる矩形関数なので
「Task RelatedなZ2の活動を反転させた信号がZ1の活動に影響を及ぼす」

つまり,
Task RelatedなZ2の活動がRestに対してポジティブならネガティブな影響を与えているし,
Task RelatedなZ2の活動がRestに対してネガティブならポジティブな影響を与えていると思われます.

「影響力」という意味で論じるならネガでもポジでもそのスカラー量が大きいなら
影響力も大きいので,例え負にでてもその値が0より有意に大きいのであれば
「何らかの関係性はある」と言えます.

最後に生理的な意味合いについてですが,
それぞれのタスクや実験内容によっても変わってくるので
それに応じてDiscussionで論じれば良いのではないでしょうか

85MRT:2010/10/15(金) 14:12:08
蛇足になりますが,
一般的にはDCMのROI決めの時に通常の解析で得られたβが
Restに対してポジティブに出ている領域を使うので

結合力が負になった時は
「抑制的な影響を与えている」と言ってよいのかもしれません.

86YM:2010/10/16(土) 01:25:55
MRTさん
大変丁寧に教えていただきありがとうございました。
とても分かりやすいので、分かった気になっているだけかもしれませんが・・・、
DCMではconnectivity間の抑制と促進の両方を見られるものなのですね。
確かに抑制でも促進でも、何らかの影響を与えることには変わりないので、
納得できました。
お忙しい中、本当にありがとうございました。

87MRT:2010/11/11(木) 19:57:26
SPM8のResultsってコントラスト変えるとき,
わざわざSPM.mの選択まで戻らなくて良くなったのですね

Orthogonalityを見る「Design」の隣に
「contrust」ボタンができてるようで地味に便利!!

88KMD:2010/11/12(金) 23:30:59
ほんと便利ですね。
水曜までシカゴでSPM8コースを受けていて、初めてSPM8を使ってみました。
それにしても、PPSのと違って、不親切極まりないトレーニングコースでした。。
PPSのSPMコースは、かゆいところに手が届く感じで丁寧でしたからねー。

89KI:2010/11/22(月) 06:46:56
久々にSPMをいじってみて、「Contrast」ボタン感動しました。閾値変えるのも
同じところからできますね。

90MRT:2011/01/17(月) 18:36:43
知り合いから聞かれたのですが,
下記の現象について何かご存知の方おられますか?

特に福井のGE使いの方からコメント貰えると幸いです

> (1) GE の MRI (Signa HDxt) で撮像したデータが、SPM2 あるいは
> SPM8 の DICOM import ファンクションではうまく扱えない
>
> SPM8では、Read DICOM header の段階で "Unknown odd numbered
> Value Length (44c55)" というエラーメッセージが出で、その後に
> "Cant find appropriate modality information for 〜" というエラ
> メッセージが出ます。NIfTIファイルは作成されません。
>
>
> (2) 上記のデータを MRIcroで Analyze に変換した場合、anonymize
> されたデータから変換すると、slice thickness が元のデータの3倍
> (あるいは6倍や9倍)になる

91HSTR:2011/01/18(火) 12:00:00
>>90
エラーの内容は違いますが、SPM8の3D変換で一部エラーを出しました。
3D-T1の画像のファイルサイズが岡崎の数倍だか十数倍だかで、
メモリーがオーバしてしまい止まる、というものでした。
たしかSPM5では同様のエラーがでなかったような気がします。
この問題はSPM8 on 64 bit OSを使うことで解決しました。
僕の場合はEPIでは特に問題がでていません。

92MRT:2011/01/18(火) 14:32:46
返信ありがとう

やっぱりデータエラーが起こるのですね
どうも変換時にデータが数倍に膨れ上がるそうですが,

64Bit機を使うとデータの膨張も防げるのですか?
それともメモリ枠が大きいのでエラーを起こさないだけ?

93HSTR:2011/01/18(火) 15:05:29
>>92
たぶん後者です。
メモリ使用量をモニタしていると、処理の一番最後のフェーズで激しい増加が起きます。
32 bit機ではそれが上限を振り切っている感じでした。

94MRT:2011/01/18(火) 18:42:09
なるほどです.
あくまで対処療法しかないワケですね (・ω・`)

SPMのメーリングリストにもつい最近,コレとかぶる質問がでていたので
そちらの方の様子も見ておきます
ttps://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=ind1101&L=SPM&P=R22517&1=SPM&9=A&I=-3&J=on&d=No+Match%3BMatch%3BMatches&z=4

色々ありがとう.

95YM:2011/03/03(木) 05:45:01
functional connectivity解析に関してお尋ねしたいことがあります。

質問1)CONN toolを用いて解析を行う際に、segmentationが必要なようですが、普段の一般的なSPM解析ではsegmentationをあまり用いたいため、segmentationをかけていないpreprocessingデータ(smoothingが終わったとこまでのデータ:sw__.img)を用いて良いのか、やはり最初のrawデータを用いてsegmentationからかけなおした方が良いのかどちらが正しいでしょうか?
segmentationはnormalize後にはかけてもあまり意味がないというかかけてはいけないものですよね?!(基本的なことですみません。。)

質問2)基本的な質問なのですが、見たいROIのマスクを作るために、pickatlas(またはmarsbar)を用いてマスク画像を作成すると、.roiファイルができるのですが、これと同じ内容のものを、.imgまたは.nii画像として保存するにはどのような方法があるでしょうか?
CONN toolにROIを入力する箇所があるのですが、.imgか.nii形式のファイルしか読み込めないようです。
たとえば、集団解析のピーク値でマスクを作成して、余分な個所をほかのマスクで消去して、見たいROIだけ抽出するなどの方法でもOKです!
どなたか教えていただけるととても助かります。どうぞよろしくお願いします。

96YM:2011/03/03(木) 05:56:45
度々すみません。。
質問2)に関して解決しましたのでご報告します。
marsbarのROI definition内のexportで作成した.roiファイルを選び、次にBase space for ROIsを選んで保存すると自動的に.niiファイルが作成できるようでした。

97MRT:2011/03/03(木) 19:23:44
conn toolってコレのこと?
ttp://web.mit.edu/swg/software.htm

Segmentationからほぼ全部Batch経由で自動化してるぽいけど,
その自動化を使って一からデータを整形するか,
以前にPreProcessしたデータを転用できるのかが分からないってことかな?

少なくともSmoothingをかけたデータにSegmentationかけると
白質と灰白質を上手く分離できないと思います

Normalize後にSegmentationをかけることも
それ自体は問題無いと思いますが,
ROI設定に用いるマスクの扱いが変わりませんか?

マニュアルにはSkipもできると書いてありますが,
慣れてないなら素直に全部conn tool内(経由)でやった方が良い気がします

ちなみにconn toolの中のソースも読んでみましたが
ちょくちょくSPMの関数使っていますが基本的には自作部分が多いかも.

98YM:2011/03/04(金) 02:15:09
MRTさん
早速アドバイスいただきありがとうございます。
やはり最初からpreprocessingをやり直そうと思います。
ありがとうございました!

99YM:2011/03/05(土) 04:31:38
度々すみません。。
Normalize前にSegmentationをすると、preprocessingのデータにも影響が出るものでしょうか?
Normalize後にかけた場合は、影響がありそうですが、前の場合は画像への上書きがあまり影響しないのかなと思いましたがどうなのでしょうか?

100KI:2011/07/30(土) 05:49:50
MRIcronに二つの活動Mapをoverlayして見ると明らかにoverlapする部分があるのに
ImCalcで同様の二つの画像のoverlapの画像を作る(i1.*i2>0)と、あったはずの
場所にoverlapがない場合があります。誰かこの理由わかりますか?

MRIcronが不完全でoverlapがあるように見えているだけなんですかね。

それともImCalcでの入力(i1.*i2>0)がまずいんでしょうか。

誰かー。ヘルプミー。

101MRT:2011/07/30(土) 06:31:56
閾値の問題?
MRIcronでoverlayするときに使った画像(spmT or con)の色の表示範囲は同じになってます?
MRIcronは画像読み込みの時に画像に含まれる輝度(信号値)の値がもっとも映えるように
勝手に値の提示範囲を調整するので,閾値以下の値も表示してしまっている可能性があります.

i1,i2に対応するResultを一度,SPM上で表示 and Saveしたもの(同じ閾値)を
MRIcronでoverlayするとImCalcと同じになるかと思われます.

要はi1,i2の画像の閾値以下の値を初めから0にしておけば,
閾値の問題は回避できるのではないか,という話 d(・・ )

102MRT:2011/07/30(土) 06:49:23
蛇足.

i1.*i2>0で作った画像は「式の結果が0以上のVoxel全てに1が突っ込まれる」ので
定量的な評価はできないです. (・・;)

MRcronにoverlayする画像にcon.imgは使わないほうが良い.
con.imgにはβ値が保存されているため統計的に有意でないvoxelまで表示される
というか,con.imgでは統計的な閾値が分からない...

spmT.imgには閾値以下の値も格納されてるので
Figure用に加工する場合はあらかじめSPMのSave機能で閾値以下の値を切っておくと処理が楽
でないと,閾値以下の値をもつvoxelまでMRIcronに表示されてしまう(>>101の話)

この場合,MRIcronの表示範囲に閾値を設定してやれば閾値以下は消えるのだけど,
そうすると今度は閾値付近の表示色が黒っぽくなって見栄えが悪くなる.


以上,すでに知ってることが多いとは思うけど蛇足まで (・・;)ヾ

103MRT:2011/07/30(土) 06:51:55
ANDの領域のt-MAPを作りたいのか,Maskを作りたいのか?

Figure用の加工画像を作りたいのか,結果考察用に画像を表示させたいだけなのか?

など,目的によってやり方が変わるかも d(・・;

104KI:2011/07/31(日) 05:46:00
MRTさんありがとうございます。

ただすでにMRTさんのおっしゃるように「i1,i2に対応するResultを一度,SPM上で
表示 and Saveしたもの(同じ閾値)をMRIcronでoverlay」して、overlapを確認
してる(Transparency on other overlaysでAdditiveにして色が変わっていると
ころがある)のですが、ImCalcの出力と同じになりません。なぞです。。

ちなみに二つの画像の共通領域を作る前に、それぞれの画像をImCalcでi1>0に
加工してからやってみるとoverlapが出てきました。これも意味不明ですよね。

ただ、これでやったのとMRIcronでのoverlapは若干形がことなります。
さらに意味不明で、混乱してます。

105MRT:2011/07/31(日) 08:52:07
なるほどです

あとImcalcでかけたときに桁落ちが起こってるかと思ったのですが
閾下でSaveした画像だと最低でもT値は3は超えてそうだし(unc p<.001)...

こうなると確かに謎ですね (−−;)

モノ(Saveした画像2枚)と出たり消えたりするROI座標をメールで送ってもらえれば
こちらでも見てみますよ? 壁|ω・;)

106KI:2011/08/01(月) 02:27:14
MRTさん

ありがとうございます。なんか二つの画像のうちの一つがおかしいような気が
してるんですか、わからぬままです。もうちょっといろいろ試してみてストレ
スの限界に達したらMRTさんにお願いするかもしれません。

107MRT:2011/08/01(月) 03:18:11
了解です (`・ω・´)ゝ

またなんかあったらお気軽に.

108MRT:2011/08/22(月) 18:20:42
今更ですが,上記の件,MRICronの表示上の問題だったみたい
Cronで図表を作る人は注意です.

一応,注意レスまで d(・・ )


*原因
Cronはoverlayする画像に勝手にsoomtingをかけてるため(3mm程度?),
活動のすそ野が広がり,表示される値もちょっと変わる.

109MRT:2011/12/06(火) 16:53:31
SPMのFigを「別名保存」してIllustratorなどで編集すると結構,バグる.

以前はTIFFなどで保存すれば勝手に図表のObjectを分割認識してくれたのだけど,
最近,どの形式で保存してもバグる.とにかくバグる!これでもかとバグる!!

で,その修正方法がみつかったので少し d(・・ )

SPMで結果を出した後,MatlabのFigureWindow右上にある「SPM Figure」を使う.
このプルダウンの中の「Specify file」を選択すると
PS形式で画像が保存される.

一旦,PDFに変換してもいいけどIllustratorはPS形式を読めるので
このまま読み込むとObjectごとに分割認識してくれる

sloverなどを使って作ったDisplaySlice画像の場合は
PSでも若干バグる(座標値が消える)ので一旦,PDFにすると直る.

Fig作成時に困ってる方はお試しあれ ヾ(`・ω・´)ノ

110MRT:2011/12/06(火) 17:31:57
↑の件ですが,画像によっては保存時に
フォントやライセンスがどうこうケチをつけてくることがあります

その場合は読み込んだ画像を全選択して
CenturyなどIllustratorで使用できるフォントに変えてしまえば
クリアできます.

111YM:2012/08/01(水) 08:58:36
SPM8に関する質問をさせていただきたいと思います。
現在、Windows7でSPM8を立ち上げようとしているのですが、下記のエラーメッセージが出て立ち上がりません。
何が原因かおわかりの方がいらっしゃいましたら教えていただけると大変助かります。
どうぞよろしくお願いします。ちなみにSPM5は同じ環境でも問題なく立ち上がりました。
<エラーメッセージ>
>> spm fmri
Error using spm_check_installation>check_basic (line 86)
There appears to be some problem with the installation.
The original spm8.zip distribution should be installed
and the updates installed on top of this. If in doubt,
consult your local network administrator.

Error in spm_check_installation (line 25)
check_basic;

Error in spm (line 330)
spm_check_installation('basic');

112HSTR:2012/08/01(水) 18:05:34
>>111
前にデスクトップのテーマをwindowsのクラシックに変えたら動いたことがありました。
matlabのエラーだったかSPMだったかは忘れてしまいましたが。

113OGT:2012/08/01(水) 18:13:53
>>111
YMさん
問題のエラー発生条件を当たってみたところ、
SPMをアップデートなどした際にどこかのファイルが上書きされなかったorファイルが足りない
などの時に起こるエラーのようです。

ちなみに問題のソースコードは
%-Ensure that the original release - as well as the updates - was installed
%--------------------------------------------------------------------------
if ~exist(fullfile(d,'@nifti','create.m'),'file') % File that should not have changed
if isunix
error(sprintf([...
'There appears to be some problem with the installation.\n'...
'The original spm8.zip distribution should be installed\n'...
'and the updates installed on top of this. Unix commands\n'...
'to do this are:\n'...
' unzip spm8.zip\n'...
' unzip -o spm8_updates_r????.zip -d spm8']));
else
error(sprintf([...
'There appears to be some problem with the installation.\n'...
'The original spm8.zip distribution should be installed\n'...
'and the updates installed on top of this.']));
end
end

なので、SPM内@niftyフォルダ内の何かファイルが足りないなどの理由で引っかかっているのでは、と思います。
安っぽい解決策ですが、SPM本体と、アップデートの方をインストールし直してみるのが良いかと。

ちなみに、現在自分もWindows7 Professional(32bit)でSPM8を使用しているので、
Win7特有の問題ではないと思われます。

もし見当違いの事を言っていたら申し訳ありません。
一助になれば幸いです。

(´〜`)。。oO(間違ってたらMRTさんが華麗に訂正してくれるはず……)

114YM:2012/08/01(水) 20:52:00
HSTRさん、OGTさん
色々とアドバイスいただきましてありがとうございます。
Windows7特有の問題ではないことが分かり安心しました。
もう一度SPM8をインストールしなおしてみようかと思います。
本当に助かりました!

115YM:2012/08/02(木) 05:32:40
OGTさんがおっしゃったように、ファイルが欠損していたようで、
SPM8の最新版をupdateしたら使えるようになりました。
本当にどうもありがとうございました。

116MRT:2012/08/07(火) 13:53:48
MRICronに「GL」ってのがでてます.
ttp://www.mccauslandcenter.sc.edu/mricrogl/

Rendering機能が強化されていて
Renderの視点移動やCuttingのユーザビリティが上がっていて地味に便利

取りあえずは,Fig作成用にどうぞ
(他の機能は今一かも?)

117MRT:2013/02/07(木) 16:03:13
SPM12のβ版がでてるけど誰か使ってる? 壁|ω・)?

118MRT:2013/02/07(木) 16:37:09
今,軽くのぞいてみたけどNormalizeの方法が結構変わってる

DARTELを使ってるぽい?誰か詳しい人いたら教えてほしい 壁|ω・)
ttp://brainmap.wisc.edu/pages/8-Normalizing-DARTEL-Templates-to-MNI-Space

あとAffine Regularisationに
「European Brain」と「East Asian brains」の選択ができたりしてる

他にも解析のモデル関係も結構,いじってそうですね.
そろそろ乗り換えも考えてみようかなぁ

119MJH:2013/02/16(土) 22:57:39
まだ使ってないですねぇ。
前にMRTさんが紹介してくださったMRIcronGLはいじってみました。
操作性かいいですね。MRIcronだと3Dで表示させたときに脳をカットしたりするのに時間がかかりましたが、タイムラグもなくて扱いやすいと思いました。

120MRT:2013/03/18(月) 15:40:42
ニッチすぎる小ネタをひとつ

SPMで3D構造画像をNormalizeすると脳だけが残るように
前後左右がカットされる.解析時はそれで良いのだけど,

目や鼻を残したままで構造テンプレートを作りたい場合
NormalizeパラメーターのBoundingBoxを下記のパラメータに書き換える  d(・・ )
-100 -130 -80
100 100 100
(デフォルトを前後左右に拡張させただけ)

でもって,これをMRICronGLに読ませて
機能画像をAddすると

広報用の画像を作る時に見栄えが良くなる!!    

...気持ち分だけね (・・;)

構造画像を公開する際にクレジットがいらなくなる!!

...MNI使うのに気にする人もいないけどね (・・;)

121MJH:2015/01/31(土) 12:51:02
どなたかご存知でしたらアドバイスください。

Matlab R2013b(64bit, Mac)でイメージングのデータを解析をしています。
処理速度をもっと上げたいのですが、いまの速度しか出ない理由(何が処理速度のボトルネックになってるか)がよくわからず、速度を上げるためにハードをアップグレードする必要があるのか、ソフトウェア上のなんらかの設定の変更で高速化できるのかがわかりません。
処理に時間のかかるプログラムを走らせている間のCPU, メモリ、ディスクへの書き込みの様子を見ていると、どれも比較的余裕があるような状態に見えていて、ハードの問題ではなくて、単純に何らかのソフトウェア的な理由で自分のMacが本気出してないんじゃないかという気がしているのですが。

いまのマシンの環境は以下の通りです。
MacBook Pro (Late 2013)
CPU: 2.8GHz Dual Core Intel Core i7
Memory: 16GB 1600MHz DDR3
Graphics: Intel Iris 1536MB
外付けHDDをUSB3.0で接続し、データの読み書きをしている(マシンはUSB3.0対応、3.0として認識してることは確認済み)

Matlab R2013b
解析に時間がかかるプログラムを走らせている時のCPUは約70〜90%あたりがIdle状態、Memory pressureは常時全くなく(Activity Monitor上は緑しか見えない)、スワップは常時ほとんどゼロ〜2MB程度。
Diskへの書き込みは最大でも40MB/s程度、通常は数MB/s程度でふらふら(最初は外付けHDDへの書き込み速度がボトルネックかと思ったのですが、この書き込み速度だとUSB3.0の速度の限界には達していないように見える)。

だいぶ余力を残しつつえっちらおっちら走ってる感じなんですが、どうしたらもっと早くなるでしょう?
アドバイスいただけると助かります。

122KI:2015/02/02(月) 18:28:17
オレも似たような感じで、全然解決策じゃないけど
CPUが100%になるぐらいまでMatlabを何個も立ち上げて並列に走らせてる。

あとはparallel processing toolboxのforloopを使うとか。

123KI:2015/02/02(月) 18:30:32
補足:parallel processing toolboxのfor loop、つまりparforのことです。

124MJH:2015/02/02(月) 22:56:17
KIさん
おー、ありがとう!toolboxは入ってるけど、parfor使ったことなかったわ。これは良さそう。早速試してみる。

複数のmatlabで同じHDDにアクセスしても大丈夫?HSTRさんが昔、これでいくつかHDDぶっ壊してたけど。
SSDなら大丈夫なのかな。

125MJH:2015/02/02(月) 23:35:01
うーむ、なんか変数の使い方に縛りがあってすんなり実行とはいかず。
ちょっとコードの書き方に工夫がいりそう。

126KI:2015/02/03(火) 01:58:52
parforは各ループで変数が独立じゃないといけないからちょっとめんどいよね。

オレ今MacProでMatlab10個ぐらい立ち上げて、外付けHDDのデータ(SSDじゃない)
で解析やってるけどなんの問題もないよ。データの書き込みはそれぞれ数10分に
一回とか。過去数カ月なんの問題もない。

127MJH:2015/02/03(火) 03:24:12
そうみたいね。とりあえず今は複数のmatlab立ち上げてやってみるわ。
Matlabを複数立ち上げて、それぞれ別のスクリプトを同時に実行したら速くなるってことは、(それぞれで走らせるスクリプトが並列計算を要求しないとして)別々のMatlabで走らせるスクリプトは別々のコア(ワーカー)を使って計算してるのかな。
一つのmatlab(instance)の中でそれぞれbatchとして複数のスクリプトを実行した場合となにか違うのかとか、なんかよくわからんのだけども。

128KI:2015/02/03(火) 04:16:20
オレも詳しいことはようわからん。一つのMatlabで早いのも、何個が同時にやれるのも
最終的なスピードは変わらんと思ってそうしてる。でも、やっぱ一個のスピードは
何がボトルネックになってるかは知らんけど限界あるみたいね。
詳しい人に聞いても複数に振り分けてやればいいと言われたことあるわ。

今の大学はクラスターも使えるから割といいぞ。そっちにはないの?

129MJH:2015/02/03(火) 05:36:23
あーすんません、ちょっと書き方が曖昧だった。
「それぞれ別のスクリプトを同時に実行したら速くなる」っていうのは、全部処理が終わるまでのトータルの時間が、
複数のスクリプトを複数のmatlabで同時に実行 < 一つのmatlabで複数のスクリプトを順番に実行 になるっていう意味。

確かに走らせるスクリプトが並列処理できるように書かれていなくて、matlab一つ=1コアだったとすると、
複数matlab立ち上げて走らせた方が全部終わるのが早いのも納得できる。
自分のマシンが余力を残して走ってるように見えた(Idle 50%を切らない)のも、常にコア一つしか使ってなかっただろうという気がしてきた。

一個のスクリプトの処理時間は、スクリプトが並列処理できるように書かれてるかっていうのと、
CPUのパフォーマンス、(並列処理の場合はさらに)コア数に依存するってことなんだろうね。

そういえば、前にボスがうちの大学のクラスターは結構立派なのがあると言ってた。
いままではあんま必要性なかったけど、そろそろ限界きたし使ってみようかな。

130HSTR:2015/02/03(火) 11:19:04
HDDじゃないの?ボトルネック。
USB3.0で転送速度に余裕があっても、書き込みに機械的な動きを伴うからUSB転送速度前のHDD自体の速度がネックというのはあると思う。
HDDをRAID0とかでストライピング運用にすれば故障率は上がるけど速度は上がるよ。
アクティブなデータだけをSSDに入れて、それを解析するのが一番速そうな気はする。
個人的には、マルチコアになってからCPUを100%にするのは無理だと思っている。
そもそものCPUの設計思想が100%になっていた時代のとは違うしねー。

オレはmatlabは2つ立ち上げて処理することが多くて、1つが処理している裏で次に走らせたいものを入力するというやり方をする。
たまった処理は夜間に1つのmatlabで順に処理するようにしている。
いろいろ試した結果これに落ち着いた。

131MJH:2015/02/04(水) 03:24:56
HSTRさん、コメントありがとう。
使ってるWDのHDDは、実測で書き込み速度120MB/sぐらい出るみたい(USB3.0接続)。
ttp://www.techradar.com/reviews/pc-mac/pc-components/storage/disk-drives-hdd-ssd/western-digital-my-passport-slim-1183614/review
自分がモニターしてた範囲では最大40MB/sぐらいの書き込み速度だったし、その値がでるのも極稀だった。
なので今の状態でボトルネックになってるのは、外付けHDDの書き込みではなさそうなんだよね。

でもたぶん並列処理できるようなプログラムで走らせた場合、次にボトルネックになるのはHDDの書き込みだろうし、
普通にデータの転送速度も速いから、次はThunderbolt接続のSSDにしようかと思ってる。

あと昨日調べてみたところ、Macのactivity monitorで出てくるCPUの状態は、50%になってても実質100%ぐらいになってる場合があるんじゃないかという話もあるみたい。
ttp://uk.mathworks.com/matlabcentral/answers/125161-hyperthreading-number-of-cores-parallel-computing-toolbox
もうこうなってくるとなにがなんだかわからんし、モヤモヤしてるけど、実際に処理が終わるまでの時間で何が一番早くなるか検討してみるのがよさそうだね。

KIさん、HSTRさん、アドバイスありがとうございました。

132KI:2015/02/04(水) 07:14:37
クラスター使うしかないだろ。

133MJH:2015/02/04(水) 09:58:36
クラスターは要検討。
データを出張先で取って、そこで解析することも多いから、ローカルでも手早く解析できるようにはしておきたい。

134MJH:2015/02/04(水) 10:02:33
ってかクラスター使える環境ならMacProいらなかったんじゃない?あえて買うメリットなんかあった?
おれも来年度買おうかと思ってたけど、クラスター使えるんだったら買う必要ないかもと思った。

135HSTR:2015/02/04(水) 12:06:07
>MJH
シーケンシャルで書き込みさせた理論値の速度と実測値はだいぶ違うぞ。
特に複数のプログラムからそれぞれ違うデータにアクセスさせるとその分ヘッドがたくさん動くからかなり遅くなると思う。

136KI:2015/02/04(水) 17:01:25
MacProはSPDの最後が半年だったからお金をすぐに使い切る必要があるから買った
というのもある。当時はどこに移動するかもわからなかったし、クラスターも使えなかったからね。

137MJH:2015/02/04(水) 22:38:36
HSTRさん
リンク先のwebsiteにはどういう環境でテストしたか書いてないけど、これは実測だと思う(じゃないとreviewしてる意味ないので)。
ここにも同じ型のHDDのbenchmarkの結果が出てるけど、ほぼ同じぐらいの速度がでてる(118MB/s)。
ttp://letstalk-tech.com/wd-passport-slim-1tb-review/
上に書いた自分の解析中の時の値(max 40MB/s)も、matlabひとつだけ立ち上げた状態(他のappからの書き込みもなし)での速度。
なので、自分のケースはHDDの書き込み速度がボトルネックになっているわけではないように思う。
一方、二つ目のリンク先に書いてある現象は、たしかに(activity monitorの表示の仕方の問題ではなくて)複数のmatlabからのアクセスによるHDD書き込み速度の低下で説明できそうだ。

KIさん
なるほど、そういうことかー。
確かに次にどこにいくかわからんことを考えると、MacPro買えるタイミングで買っておくのもいいかもしれない。
もう少し悩んでみる。

138MJH:2015/02/04(水) 22:51:26
2つmatlab立ち上げて同時に走らせてみたけど、4回走らせて2回も謎のエラーで止まった。
matlab一つ、単独で走らせたら問題無く走るんだけど。同じファイルを読み込みにいくからかな。
よーわからんけど、自分の環境ではうまくいかなそう。

139KI:2015/02/05(木) 05:12:35
オレは同じファイルを複数のMatlabで読み込んでエラー出たことないと思うな。
読み込みだけじゃなくて同じファイルへの書き込みもやってるとエラーでるかも。
一個が書き込んでる瞬間にもう一個が読み込みにいったりとか。

140MJH:2015/02/05(木) 07:09:23
そうかー、なんでだろう。ってかいま気づいたけど、読み込みにいってるのも(同じフォルダ内の)別ファイルだわ。
書き込みも全く独立のファイル。二つのmatlabで共通してるのは、同じfunctionを使ってるってだけだと思う。
よくわからんなぁ。

141HSTR:2015/02/05(木) 16:53:15
>MJH
実測値だけど、1つのファイルのみにアクセスしているときの速度と複数の別々の場所に格納されたファイルにアクセスしているときの速度は違うよ、と言いたかった。
複数のファイルに同時にアクセスしている場合、ヘッドのシークタイムが余計に発生するから、
余計に時間がかかるのだ。
ttp://www.pasonisan.com/customnavi/z1012hdd/08cry.html
リンク見るとランダムアクセスとシーケンシャルアクセスでだいぶ時間違うでしょ。
ランダムアクセスの単位が小さくなればなるほどスピードが落ちているがわかる。
複数のmatlabから複数ファイルにアクセスするということはランダムアクセスになっているから、
余計なシーク時間が発生して遅くなっているのではないか、という説明でした。
わかりずらくてすまんかった。

142MJH:2015/02/05(木) 23:06:20
うん、言ってることはわかるよ。
matlabを複数立ち上げて、同じディスクの違うファイルにアクセスしている場合に速度が落ちる
というのは確かにそうだろうと思う(そして上のmathworksのリンク先に書いてあったケースは
この可能性で説明できそう)けど、上で数字を出してボトルネックの話をしてたのは、基本的に
matlabを一つ立ち上げて処理した場合の話ね。

でもmatlab一つでもあっちこっちファイル読みに行ったり書いたりしてるだろうから、それを考慮すると
matlab一つの場合でもHSTRさんの言うようにsequentialの値よりrandomの方と比べた方が妥当かもしれないね。
ちなみに自分の使ってるHDDのデータ(実際使ってるのはこれの2TBのやつだけど)はここに出てた。
ttp://www.laptopmag.com/reviews/storage/western-digital-my-passport-slim-1tb
random writeで52.5MB/s。確かに自分がモニターしながら見てた最大値40MB/sとそんなにかけ離れては
いない。そうするともう少し出てもよさそうな気もするんだけども。40MB/sは自分がモニターしてた範囲
での最大値だから、ほとんどの時間はもっとゆっくりなんだよね。

でもとりあえずHDDの書き込みがボトルネックになっている可能性もありえるというのは納得した。説明ありがとう。

143MJH:2015/02/05(木) 23:07:31
↑なんか一部日本語おかしいけど気にしないでください(笑)

144MRT:2015/02/25(水) 12:38:59
遅レスだけどspm_defaultsのMaxmemはいじってみた? |壁|ω・)

Memory pressureが無くてCPUに余裕があり,
HDD読み書きにも余裕がありそうでparforが効くってことは,
CPU-メモリ間がボトルネックになってる可能性がありそう
読み込むメモリ処理を増やして計算回数減らせば高速化できないかな?

2010年ごろにPCの性能に合わせて2^26に上がったけど,
64が主流の今,もう少し上げても良いかもしれない.

あとDDR3の1600Mhzも少し早いのに変えてみるとか
(デスクなら3000,ノートでも2000くらい)

もう試した後だとは思うけど取りあえず  |壁|ω・;)

145MJH:2015/02/28(土) 08:23:20
MRTさん
いまSPM12とSPM8を使っていて、SPM12の方はMaxmemを26^30まで上げて使っているんですが、SPM8の方は上げるのを忘れてました!
SPM8の方はMVPAのツールボックスを使う時に一部関数を使ってるだけなんですが、もしかしたら効果あるかも。やってみます。

メモリの速度を上げるという手もあるんですね。たぶん近々マシンを買い換えると思うので、その時はこれも考慮してみますね。
アドバイスありがとうございます!

146MRT:2015/02/28(土) 14:35:33
やはりすでにトライ済でしたか.さすがです

ちなみにメモリはこの辺も見てみるといいかも 壁|ω・)

New Mac Pro 2015のRAMはDDR4ぽい
ttp://www.macworld.co.uk/news/mac/new-mac-pro-2015-release-date-new-processor-delay-3536364/

DDR3とDDR4の比較
ttp://www.crucial.com/usa/en/memory-server-ddr4-ja

また上手く行ったら教えてください 壁|ω・)ノ

147MJH:2015/03/01(日) 00:42:25
おー、情報ありがとうございます。早速チェックしました。
MacProの次のモデルはDDR4なんですね。なるほど、確かにこれはよさそう。

ちなみに今月はじめにKIさんやHSTRさんからアドバイスを頂いた後にいろいろ試してみました。
HDDをWD My Passport Slim 2TB (USB3.0接続)からWD My Passport Pro 4TB(RAID 0)(Thunderbolt接続)にして、
同じプログラムを走らせてみたら、予想に反して遅くなってしまいました。一概に比較は難しいとは思いますが。

あと大学のクラスタも使ってみたんですが、こちらはさらに時間がかかりましたね。
聞いたところによると、うちの大学のクラスタは一つ一つのコアの速度がだいぶ遅いらしいです。
Matlabを走らせるときに、一つのジョブに対して4つまでしかコアを使わせてもらえなかったり、他のユーザーのジョブが常にかなり投入されてて、混んでるのも原因だろうと思います。
いま使ってるMacBook Proがdual coreなので、それよりは早くなると期待してたのですが。
うちの大学のクラスターは、たぶん一気にジョブをたくさん投げるような仕事をしてる人(シミュレーションとか)をやってる人には良さそうですが、
少ないジョブを早く終わらせたいような場合には向かなそうです。
他にもリモートで操作した時の速度の問題や、プラットフォームの違い?による結果の違いなどいろいろあって、結局ここでクラスタを使うのはやめました。

自分の今の環境では、ローカルで高速なマシンを使うのが一番な気がしました(といってもまもなくここを去りますが)。
次のMacProに期待してみます。

148MRT:2015/10/05(月) 19:03:03
SPM12からspm_defaultsの扱いが少し変わった模様.
別のところにspm_my_defaultsとかを作って必要な項目だけ修正しておけば良い

あとこんなページもあるようですね
SPMの高速化(SPM/Faster SPM)
ttps://en.wikibooks.org/wiki/SPM/Faster_SPM

149MRT:2015/10/30(金) 11:28:49
SPMって確か前処理でL-Rの反転をやってたと思うのですが,
どこでやってたか覚えている人おられます?

確かNormalizeのところだったと思うのだけど (・・;)


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板