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;

 

%% -----------------------------------------------------------------------