2.Brains Crack/SPM8 Batch/DCM

Top > 2.Brains Crack > SPM8 Batch > DCM

DCM

DCM の手続き概要

  1. DCM のために Design Matrix(DM) を作り(ここでのDM は「普通」の実験計画とは異なるので注意),推定する.
  2. 関心領域から時系列データを抽出する.
  3. 結合性を仮定し,推定する.

Extracting Time Series of VOI|VOI の時系列データ抽出

関心領域の数だけ下記のサンプルコードを繰り返す.

サンプルコード

   clear all
   
   % Initialise SPM
   spm('Defaults','fMRI');
   spm_jobman('initcfg');
   
   %
   matlabbatch{1}.spm.util.voi.spmmat = cellstr(fullfile(spm_dir,'SPM.mat'));
   matlabbatch{1}.spm.util.voi.adjust = 1;  % "effects of interest" F-contrast
   matlabbatch{1}.spm.util.voi.session = 1; % session 1
   matlabbatch{1}.spm.util.voi.name = 'VOI_1';
   matlabbatch{1}.spm.util.voi.roi{1}.spm.spmmat = {''}; % using SPM.mat above
   matlabbatch{1}.spm.util.voi.roi{1}.spm.contrast = 2;  
   matlabbatch{1}.spm.util.voi.roi{1}.spm.threshdesc = 'none';
   matlabbatch{1}.spm.util.voi.roi{1}.spm.thresh = 1; % ex. 0.001
   matlabbatch{1}.spm.util.voi.roi{1}.spm.extent = 0;
   matlabbatch{1}.spm.util.voi.roi{1}.spm.mask.contrast = 4;
   matlabbatch{1}.spm.util.voi.roi{1}.spm.mask.thresh = 0.05;
   matlabbatch{1}.spm.util.voi.roi{1}.spm.mask.mtype = 0; % inclusive
   matlabbatch{1}.spm.util.voi.roi{2}.sphere.centre = [-9 12 -2]; % arbitrary
   matlabbatch{1}.spm.util.voi.roi{2}.sphere.radius = 8;% [mm]
   matlabbatch{1}.spm.util.voi.expression = 'i1 & i2';
   
   spm_jobman('run',matlabbatch);

Global max を1に設定すると,指定した座標にかかわらずGlobal maxの座標位置の時系列をとってくる.

matlabbatch{1}.spm.util.voi.roi{2}.sphere.move.global.spm = 1; % global max
matlabbatch{1}.spm.util.voi.roi{2}.sphere.move.global.mask = ''; % none

同様にLocal maxをとることもできる.例えば,集団解析で求めた座標をもとに,個人にあわせたROIをとると言うこともできる.

matlabbatch{1}.spm.util.voi.roi{2}.sphere.move.local.spm = 1; % nearest local max
matlabbatch{1}.spm.util.voi.roi{2}.sphere.move.local.mask = ''; % none

Dynamic Causal Modeling Bilinear|Bilinear なモデルでのDCM

サンプルコード:この例では,脳の領域3つ,要因2つの場合を想定している.

   clear DCM
   
   % Specification DCM ---------------------------------------------------------------
   
   % Load SPM.mat for DCM
   % VOI の時系列データで用いた SPM.mat を読み込む
   load(fullfile(spm_dir,'SPM.mat'));%
   
   % Load time series of VOI
   load(fullfile(spm_dir,'VOI_1_1.mat'),'xY'); %<--- Edit for user
   DCM.xY(1) = xY;
   load(fullfile(spm_dir,'VOI_2_1.mat'),'xY'); %<--- Edit for user
   DCM.xY(2) = xY;
   load(fullfile(spm_dir,'VOI_3_1.mat'),'xY'); %<--- Edit for user
   DCM.xY(3) = xY;
   
   DCM.n = length(DCM.xY);  % number of regions
   DCM.v = length(DCM.xY(1).u); % number of time points
   DCM.Y.dt  = SPM.xY.RT;
   DCM.Y.X0  = DCM.xY(1).X0;
   for i = 1:DCM.n
       DCM.Y.y(:,i)  = DCM.xY(i).u;
       DCM.Y.name{i} = DCM.xY(i).name;
   end
   DCM.Y.Q    = spm_Ce(ones(1,DCM.n)*DCM.v);
   
   % Driving Input registration
   DCM.U.dt   =  0.667; % RT/n_slice: ex: 2/30 = 0.667 %<--- Edit for user
   n_sess = 1; %<--- Edit for user
   DCM.U.name = [{'Task1', 'Task2'}]; %<--- Edit for user, name of factor
   DCM.U.u    = [SPM.Sess(1, n_sess).U(1, 1).u(33:end,1)]; %<--- Edit for user,
   DCM.delays = repmat(1.0, DCM.n,1); %Slice Timings: RT/2(slice timing, n_area, 1);
   DCM.TE     = 0.03; %<--- Edit for user: TE edit for user
   
   DCM.options.nonlinear  = 0; 
   DCM.options.two_state  = 0;
   DCM.options.stochastic = 0;
   % DCM.options.nograph    = 1;
   
   % Setting Connection Modelling -------------------------------------------------------
   % DCM.a: Intrinsic connection
   % DCM.c: Driving input
   % DCM.b: Modulatio input
   % DCM.d: Nonlinear modulation
   
 % Intrinsic connection
   % 結合を仮定するところを1とする.
   % 自分への結合(対角線)はすべて1.
   % 下の例では,領域間の Connection は2つ.
   %・領域1から3, DCM.a(3, 1) = 1;
   %・領域2から3, DCM.a(3, 2) = 1;
   % この中からDCM.bで1にする.
   DCM.a = [      % <--- Edit for user
       1,0,0;
       0,1,0;
       1,1,1];
   
   % Driving input
   % 行が領域,列が要因
   % 下の例では,要因1が領域1を駆動,要因2が領域2を駆動することを仮定している.
   DCM.c = [      % <--- Edit for user
       1, 0
       0, 1
       0, 0];
   
   % Modulation input
   % n_area x n_area x n_factor
   % 要因によって変化する結合を仮定する.
   % DCM.a で結合を仮定した要素の中から選択する.
   %「領域1から3の結合 DCM.a(3, 1) = 1;」が要因1で変化すると考えた場合は
   % DCM.b(3,1,1) = 1 と設定する.
   % DCM.a, DCM.c と違って配列が3次元なので,
   % 要素0の配列を作成し,結合変化を仮定するところのみ1を入力する.
   DCM.b = zeros(DCM.n, DCM.n, 2); 
   DCM.b(3,1,1) = 1;      % <--- Edit for user
   
   % NonLinear modulation 
   % n_area x n_area x n_area
   % 脳領域の活動によって変化する結合を仮定する.
   % DCM.d = zeros(DCM.n, DCM.n, DCM.n);
   
   DCM_name1 = 'DCM_DM1.mat'; % <--- Edit for user
   save(fullfile(spm_dir,DCM_name1),'DCM'); % <--- Edit for user
   
   DCM = spm_dcm_estimate(fullfile(spm_dir,DCM_name1)); % <--- Edit for user

結合性の行列を指定する部分は書きのように書くこともできる.

   % Intrinsic connection
	% DCM.a = eye(DCM.n, DCM.n)
	% DCM.a(3, 1) = 1;
	% DCM.a(3, 2) = 1;
   % Driving input
	% DCM.c = zero(DCM.n, length(DCM.U.name))
	% DCM.c(1,1) = 1;
	% DCM.c(2,2) = 1;
   % Modulation input
	% DCM.b = zeros(DCM.n, DCM.n, length(DCM.U.name)); 
	% DCM.b(3,1,1) = 1;
   % NonLinear modulation
	% DCM.d = zeros(DCM.n, DCM.n, DCM.n);
	% DCM.d(3, 3, 1) = 1;
   

Dynamic Causal Modeling nonlinear|nonlinear なモデルでのDCM

※nonlinear: ある領野の活動が結合性を変化させるようなモデルを考えた時.

最終更新日: 2014-11-21 (金) 16:14:09 (1705d)

 

TOP