Corrected version:
% Enter subject names here
subject_names = {'1080_01','1079_02'};
% Prefix for DCM filenames
prefix =
'N:\DCM_CMC\';
% BMS settings
matlabbatch = {};
matlabbatch{1}.spm.stats.bms.bms_dcm.dir = {'N:\BMS_SingleSubs'};
matlabbatch{1}.spm.stats.bms.bms_dcm.model_sp = {''};
matlabbatch{1}.spm.stats.bms.bms_dcm.load_f = {''};
matlabbatch{1}.spm.stats.bms.bms_dcm.method =
'FFX';
matlabbatch{1}.spm.stats.bms.bms_dcm.family_level.family_file = {''};
matlabbatch{1}.spm.stats.bms.bms_dcm.bma.bma_yes.bma_famwin =
'fanwin';
matlabbatch{1}.spm.stats.bms.bms_dcm.verify_id = 1;
% Loop over subjects to build batch
for i = 1:length(subject_names)
subject_name = subject_names{i};
matlabbatch{1}.spm.stats.bms.bms_dcm.sess_dcm{i}.mod_dcm = {
[prefix
'DCM_forw_' subject_name
'.mat']
[prefix
'DCM_back_' subject_name
'.mat']
[prefix
'DCM_intr_' subject_name
'.mat']
[prefix
'DCM_F&B_' subject_name
'.mat']
[prefix
'DCM_F&I_' subject_name
'.mat']
[prefix
'DCM_B&I_' subject_name
'.mat']
[prefix
'DCM_full_' subject_name
'.mat']
};
end
% Save the job
save('run_bms_job.mat',
'matlabbatch');
% Run the job
spm_jobman('run',matlabbatch);
Best,
Peter.
From: Zeidman, Peter
Sent: 21 March 2014 10:43
To: Ranlund, Siri; [log in to unmask]
Subject: RE: BMS & BMA for multiple subjects
This should do it (I haven’t tested it):
% Enter subject names here
subject_names = {'1080_01','1079_02'};
% Prefix for DCM filenames
prefix =
'N:\DCM_CMC\';
% Prepare the matlabbatch variable
matlabbatch = {};
% Loop over subjects to build batch
for i = 1:length(subject_names)
subject_name = subject_names{i};
matlabbatch{i}.spm.stats.bms.bms_dcm.dir = {'N:\BMS_SingleSubs'};
matlabbatch{i}.spm.stats.bms.bms_dcm.sess_dcm{1}.mod_dcm = {
[prefix
'DCM_forw_' subject_name
'.mat']
[prefix
'DCM_back_' subject_name
'.mat']
[prefix
'DCM_intr_' subject_name
'.mat']
[prefix
'DCM_F&B_' subject_name
'.mat']
[prefix
'DCM_F&I_' subject_name
'.mat']
[prefix
'DCM_B&I_' subject_name
'.mat']
[prefix
'DCM_full_' subject_name
'.mat']
};
matlabbatch{i}.spm.stats.bms.bms_dcm.model_sp = {''};
matlabbatch{i}.spm.stats.bms.bms_dcm.load_f = {''};
matlabbatch{i}.spm.stats.bms.bms_dcm.method =
'FFX';
matlabbatch{i}.spm.stats.bms.bms_dcm.family_level.family_file = {''};
matlabbatch{i}.spm.stats.bms.bms_dcm.bma.bma_yes.bma_famwin =
'fanwin';
matlabbatch{i}.spm.stats.bms.bms_dcm.verify_id = 1;
end
% Save the job
save('run_bms_job.mat',
'matlabbatch');
% Run the job
spm_jobman('run',matlabbatch);
Best,
Peter.
From: Ranlund, Siri
Sent: 21 March 2014 10:35
To: Zeidman, Peter; [log in to unmask]
Subject: RE: BMS & BMA for multiple subjects
Hi Peter,
Thanks for your reply!
The name of the subject is 1079_01 (other subjects can be 1080_01, or 1079_02 etc etc)
Best,
Siri
From: Zeidman, Peter
Sent: 21 March 2014 10:33
To: Ranlund, Siri; [log in to unmask]
Subject: RE: BMS & BMA for multiple subjects
Hi Siri,
You don’t say which part of the filename is the name of your subject in your examples below – I’m guessing it’s 1079? Or is it 01? Let us know and I’ll show you how to script it.
Best,
Peter.
From: SPM (Statistical Parametric Mapping) [mailto:[log in to unmask]]
On Behalf Of Ranlund, Siri
Sent: 21 March 2014 10:09
To: [log in to unmask]
Subject: [SPM] BMS & BMA for multiple subjects
Dear SPMers,
I would like to run Bayesian model selection and model averaging on multiple subjects (total N = 96). Do you have any advice on how to write code to create a loop doing this?
I have tried saving the batch as a script but I’m not quite sure how to change the ‘matlabbatch’ script to create the loop over multiple subjects that I need (those two scripts are attached below). Or is there another way of doing this
over multiple subjects?
Many thanks!
With best wishes,
Siri
SCRIPT 1:
%% -----------------------------------------------------------------------
nrun = 1;
% enter the number of runs here
jobfile = {'N:\BMS_SingleSubs\BSM_BMA_job.m'};
jobs = repmat(jobfile, 1, nrun);
inputs = cell(0, nrun);
for crun = 1:nrun
end
spm_jobman('run',
jobs, inputs{:});
%% -----------------------------------------------------------------------
SCRIPT 2:
%% -----------------------------------------------------------------------
matlabbatch{1}.spm.stats.bms.bms_dcm.dir = {'N:\BMS_SingleSubs'};
matlabbatch{1}.spm.stats.bms.bms_dcm.sess_dcm{1}.mod_dcm = {
'N:\DCM_CMC\DCM_forw_1079_01.mat'
'N:\DCM_CMC\DCM_back_1079_01.mat'
'N:\DCM_CMC\DCM_intr_1079_01.mat'
'N:\DCM_CMC\DCM_F&B_1079_01.mat'
'N:\DCM_CMC\DCM_F&I_1079_01.mat'
'N:\DCM_CMC\DCM_B&I_1079_01.mat'
'N:\DCM_CMC\DCM_full_1079_01.mat'
};
matlabbatch{1}.spm.stats.bms.bms_dcm.model_sp = {''};
matlabbatch{1}.spm.stats.bms.bms_dcm.load_f = {''};
matlabbatch{1}.spm.stats.bms.bms_dcm.method =
'FFX';
matlabbatch{1}.spm.stats.bms.bms_dcm.family_level.family_file = {''};
matlabbatch{1}.spm.stats.bms.bms_dcm.bma.bma_yes.bma_famwin =
'fanwin';
matlabbatch{1}.spm.stats.bms.bms_dcm.verify_id = 1;
%% -----------------------------------------------------------------------