Loop in SPM batch not working

4 vues (au cours des 30 derniers jours)
Elizabeth Matsiyevskiy
Elizabeth Matsiyevskiy le 13 Déc 2019
Modifié(e) : Cris LaPierre le 18 Mar 2020
For some reason when I try passing the subjects into the subjMP path, the subject isn't inserted into the path. Is there another way I should script it to get into each subjects directory? When I run the code line by line this is the output I get for the subjects:
'ifs/loni/faculty/mbraskie/HABLE/MPRAGE/὞/baseline/*_MPRAGE.nii.gz'
%% MATLAB AND SPM12 BATCH SCRIPTING:
% Processing segmentation single-subject T1 for PET roi analysis
% Testing
SPM12='/usr/local/spm12';
AAL3='/ifs/loni/faculty/mbraskie/HABLE/PET/spmtest/AAL3';
MPRAGE='/ifs/loni/faculty/mbraskie/HABLE/MPRAGE';
addpath (genpath(SPM12));
addpath (genpath(AAL3));
addpath (genpath(MPRAGE));
targets = [8030 8483];
for subj = targets
subjMP=fullfile(MPRAGE,subj,'baseline','*_MPRAGE.nii.gz')
cd (subjMP); mkdir spm; cd spm;
spm;
matlabbatch{1}.spm.spatial.preproc.channel.vols = {'${subjMP},1'};
matlabbatch{1}.spm.spatial.preproc.channel.biasreg = 0.001;
matlabbatch{1}.spm.spatial.preproc.channel.biasfwhm = 60;
matlabbatch{1}.spm.spatial.preproc.channel.write = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(1).tpm = {'/usr/local/spm12/tpm/TPM.nii,1'};
matlabbatch{1}.spm.spatial.preproc.tissue(1).ngaus = 1;
matlabbatch{1}.spm.spatial.preproc.tissue(1).native = [1 0];
matlabbatch{1}.spm.spatial.preproc.tissue(1).warped = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(2).tpm = {'/usr/local/spm12/tpm/TPM.nii,2'};
matlabbatch{1}.spm.spatial.preproc.tissue(2).ngaus = 1;
matlabbatch{1}.spm.spatial.preproc.tissue(2).native = [1 0];
matlabbatch{1}.spm.spatial.preproc.tissue(2).warped = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(3).tpm = {'/usr/local/spm12/tpm/TPM.nii,3'};
matlabbatch{1}.spm.spatial.preproc.tissue(3).ngaus = 2;
matlabbatch{1}.spm.spatial.preproc.tissue(3).native = [1 0];
matlabbatch{1}.spm.spatial.preproc.tissue(3).warped = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(4).tpm = {'/usr/local/spm12/tpm/TPM.nii,4'};
matlabbatch{1}.spm.spatial.preproc.tissue(4).ngaus = 3;
matlabbatch{1}.spm.spatial.preproc.tissue(4).native = [1 0];
matlabbatch{1}.spm.spatial.preproc.tissue(4).warped = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(5).tpm = {'/usr/local/spm12/tpm/TPM.nii,5'};
matlabbatch{1}.spm.spatial.preproc.tissue(5).ngaus = 4;
matlabbatch{1}.spm.spatial.preproc.tissue(5).native = [1 0];
matlabbatch{1}.spm.spatial.preproc.tissue(5).warped = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(6).tpm = {'/usr/local/spm12/tpm/TPM.nii,6'};
matlabbatch{1}.spm.spatial.preproc.tissue(6).ngaus = 2;
matlabbatch{1}.spm.spatial.preproc.tissue(6).native = [0 0];
matlabbatch{1}.spm.spatial.preproc.tissue(6).warped = [0 0];
matlabbatch{1}.spm.spatial.preproc.warp.mrf = 1;
matlabbatch{1}.spm.spatial.preproc.warp.cleanup = 1;
matlabbatch{1}.spm.spatial.preproc.warp.reg = [0 0.001 0.5 0.05 0.2];
matlabbatch{1}.spm.spatial.preproc.warp.affreg = 'mni';
matlabbatch{1}.spm.spatial.preproc.warp.fwhm = 0;
matlabbatch{1}.spm.spatial.preproc.warp.samp = 3;
matlabbatch{1}.spm.spatial.preproc.warp.write = [1 1];
end

Réponses (1)

Cris LaPierre
Cris LaPierre le 18 Mar 2020
Modifié(e) : Cris LaPierre le 18 Mar 2020
The issue I see is that you are trying to combine text and numbers using a function that is expecting all text. As you've observerd, that doesn't work:
'\ifs\loni\faculty\mbraskie\HABLE\MPRAGE\὞\baseline\*_MPRAGE.nii.gz'
Try first converting subj to text using num2str.
subjMP=fullfile(MPRAGE,num2str(subj),'baseline','*_MPRAGE.nii.gz')
'\ifs\loni\faculty\mbraskie\HABLE\MPRAGE\8030\baseline\*_MPRAGE.nii.gz'

Catégories

En savoir plus sur Neuroimaging dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by