OneSubSess - MRC CBU Imaging Wiki

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment
In thi sntence, what word is mad fro the mising letters?

location: OneSubSess

function one_sub_sess_model_moves5(MYV, sb, ss)

% check for defaults
global defaults
if isempty(defaults), spm_defaults; end

% store path
pwd_orig = pwd;

% condition stuff
condnames = MYV.cond_names;
nconds = length(condnames); 

% Names for movement parameters
move_names = {'x trans', 'y trans', 'z trans', ...
               'x rot', 'y rot', 'z rot'};

% Specify some design stuff
% Note that the TR must be the same for all runs in a model
TR                   = MYV.TRs(sb);             % seconds
SPM.xY.RT            = TR;      

% Specify design
%===========================================================================
% global normalization: OPTOINS:'Scaling'|'None'
%---------------------------------------------------------------------------
SPM.xGX.iGXcalc       = 'None';

% low frequency confound: high-pass cutoff (secs) [Inf = no filtering]
%---------------------------------------------------------------------------
SPM.xX.K(1).HParam    = MYV.hf_cut;

% intrinsic autocorrelations: OPTIONS: 'none'|'AR(1) + w'
%-----------------------------------------------------------------------
SPM.xVi.form       = 'AR(1) + w';

% basis functions and timing parameters
%---------------------------------------------------------------------------
% OPTIONS:'hrf'
%         'hrf (with time derivative)'
%         'hrf (with time and dispersion derivatives)'
%         'Fourier set'
%         'Fourier set (Hanning)'
%         'Gamma functions'
%         'Finite Impulse Response'
%---------------------------------------------------------------------------
% Fill in the field below with the corresponding string above
SPM.xBF.name       = 'hrf (with time derivative)';
%SPM.xBF.length     = 20;          % length in seconds - not used for hrf 
%SPM.xBF.order      = 1;           % order of basis set - not used for hrf

% The next two fields usually don't need changing. 
SPM.xBF.T          = 16;                % number of time bins per scan
SPM.xBF.T0         = 1;                 % first time bin (see slice
                                        % timing)
                        
% Selfish explanatory                                   
SPM.xBF.UNITS      = 'scans';           % OPTIONS: 'scans'|'secs' for
                                        % onsets
                        
% value of one means no Volterra pain                                   
SPM.xBF.Volterra   = 1;                 % OPTIONS: 1|2 = order of convolution

% specify filter for filenames
Filter             = MYV.snstats_filter;

% file list
PP = '';

% get, make, goto SPM results directory
sess_dir = fullfile(MYV.root, MYV.subjects{sb}, MYV.sesses{ss});  
ana_dir = fullfile(sess_dir, MYV.ana_dir);
if ~(exist(ana_dir))
  mkdir(sess_dir,MYV.ana_dir);
end
cd(ana_dir);

% file selection
P = spm_get('files',sess_dir,Filter);
SPM.nscan(1) = size(P,1);
PP = strvcat(PP,P);

% Condition stuff - onsets, durations, types.
c_ons = spm_load(MYV.cond_files{sb, ss});
[TRIAL_NO ONSET RESPONSE RESP_ONSET] = deal(1,2,3,4);

% now set into SPM design
for cno = 1:nconds
  tmp = c_ons(:, ONSET) -1;  % because we deleted the first scan
  
  % Make sure onsets are within scan range
  tempi = tmp >=0 & tmp <= size(P, 1);
  tmp = tmp(tempi);
 
  SPM.Sess.U(cno) = struct(...
      'ons', tmp,...
      'dur', ones(size(tmp)) * MYV.cond_dur * TR, ...
      'name',{condnames(cno)},...
      'P', struct('name','none')); % Parametric modulation
end

% design (user specified covariates)
%------------------------------------------------------------------
% realignment parameters to add to model
movefil = spm_get('Files', sess_dir, ...
                  ['rp_' MYV.sl_prefix '*.txt']);
moves = spm_load(movefil);
if isempty(moves)
  error(['Cannot get movement parameters from: ' sess_dir]);
end
  
% Fix goofy realignment params
moves = moves(1:size(P,1), :);

% mean centre moves
moves = moves - ones(size(P, 1), 1) * mean(moves);
move_diff = [zeros(1, 6); diff(moves)];
move_m1 = [zeros(1, 6); moves(1:end-1,:)];

% Put various params in
SPM.Sess.C.C    = [moves];
SPM.Sess.C.name = [move_names];

% set files
SPM.xY.P           = PP;

% Configure design matrix
SPMdes = spm_fmri_spm_ui(SPM);

% Estimate parameters
spm_unlink(fullfile('.', 'mask.img')); % avoid overwrite dialog
SPMest = spm_spm(SPMdes);
  
% back to initial directory
cd(pwd_orig);