From a7be09428ac8cc47d3b2aafff5722fd2b049c3f2 Mon Sep 17 00:00:00 2001 From: Remi Gau Date: Sat, 6 Mar 2021 18:48:27 +0100 Subject: [PATCH] options are now saved in a cfg folder in the working directory --- .gitignore | 1 + .../MoAE/{ => cfg}/options_task-auditory.json | 0 ...ptions_task-auditory_space-individual.json | 0 .../options_task-auditory_unwarp-0.json | 0 ...sk-auditory_unwarp-0_space-individual.json | 0 .../options_task-balloonanalogrisktask.json | 0 ...alloonanalogrisktask_space-individual.json | 0 ...s_task-balloonanalogrisktask_unwarp-0.json | 0 ...logrisktask_unwarp-0_space-individual.json | 0 .../options_task-linebisection.json | 0 ...s_task-linebisection_space-individual.json | 0 .../options_task-linebisection_unwarp-0.json | 0 ...nebisection_unwarp-0_space-individual.json | 0 src/utils/loadAndCheckOptions.m | 4 ++- src/utils/saveOptions.m | 4 ++- tests/test_loadAndCheckOptions.m | 36 +++++++++++-------- 16 files changed, 28 insertions(+), 17 deletions(-) rename demos/MoAE/{ => cfg}/options_task-auditory.json (100%) rename demos/MoAE/{ => cfg}/options_task-auditory_space-individual.json (100%) rename demos/MoAE/{ => cfg}/options_task-auditory_unwarp-0.json (100%) rename demos/MoAE/{ => cfg}/options_task-auditory_unwarp-0_space-individual.json (100%) rename demos/openneuro/{options => cfg}/options_task-balloonanalogrisktask.json (100%) rename demos/openneuro/{options => cfg}/options_task-balloonanalogrisktask_space-individual.json (100%) rename demos/openneuro/{options => cfg}/options_task-balloonanalogrisktask_unwarp-0.json (100%) rename demos/openneuro/{options => cfg}/options_task-balloonanalogrisktask_unwarp-0_space-individual.json (100%) rename demos/openneuro/{options => cfg}/options_task-linebisection.json (100%) rename demos/openneuro/{options => cfg}/options_task-linebisection_space-individual.json (100%) rename demos/openneuro/{options => cfg}/options_task-linebisection_unwarp-0.json (100%) rename demos/openneuro/{options => cfg}/options_task-linebisection_unwarp-0_space-individual.json (100%) diff --git a/.gitignore b/.gitignore index 910d5fa3..0dd9ae12 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ demos/spm*/raw demos/spm*/source # test folder and dummy data +tests/cfg/*.json tests/sub-01/* tests/group/* tests/models/*.json diff --git a/demos/MoAE/options_task-auditory.json b/demos/MoAE/cfg/options_task-auditory.json similarity index 100% rename from demos/MoAE/options_task-auditory.json rename to demos/MoAE/cfg/options_task-auditory.json diff --git a/demos/MoAE/options_task-auditory_space-individual.json b/demos/MoAE/cfg/options_task-auditory_space-individual.json similarity index 100% rename from demos/MoAE/options_task-auditory_space-individual.json rename to demos/MoAE/cfg/options_task-auditory_space-individual.json diff --git a/demos/MoAE/options_task-auditory_unwarp-0.json b/demos/MoAE/cfg/options_task-auditory_unwarp-0.json similarity index 100% rename from demos/MoAE/options_task-auditory_unwarp-0.json rename to demos/MoAE/cfg/options_task-auditory_unwarp-0.json diff --git a/demos/MoAE/options_task-auditory_unwarp-0_space-individual.json b/demos/MoAE/cfg/options_task-auditory_unwarp-0_space-individual.json similarity index 100% rename from demos/MoAE/options_task-auditory_unwarp-0_space-individual.json rename to demos/MoAE/cfg/options_task-auditory_unwarp-0_space-individual.json diff --git a/demos/openneuro/options/options_task-balloonanalogrisktask.json b/demos/openneuro/cfg/options_task-balloonanalogrisktask.json similarity index 100% rename from demos/openneuro/options/options_task-balloonanalogrisktask.json rename to demos/openneuro/cfg/options_task-balloonanalogrisktask.json diff --git a/demos/openneuro/options/options_task-balloonanalogrisktask_space-individual.json b/demos/openneuro/cfg/options_task-balloonanalogrisktask_space-individual.json similarity index 100% rename from demos/openneuro/options/options_task-balloonanalogrisktask_space-individual.json rename to demos/openneuro/cfg/options_task-balloonanalogrisktask_space-individual.json diff --git a/demos/openneuro/options/options_task-balloonanalogrisktask_unwarp-0.json b/demos/openneuro/cfg/options_task-balloonanalogrisktask_unwarp-0.json similarity index 100% rename from demos/openneuro/options/options_task-balloonanalogrisktask_unwarp-0.json rename to demos/openneuro/cfg/options_task-balloonanalogrisktask_unwarp-0.json diff --git a/demos/openneuro/options/options_task-balloonanalogrisktask_unwarp-0_space-individual.json b/demos/openneuro/cfg/options_task-balloonanalogrisktask_unwarp-0_space-individual.json similarity index 100% rename from demos/openneuro/options/options_task-balloonanalogrisktask_unwarp-0_space-individual.json rename to demos/openneuro/cfg/options_task-balloonanalogrisktask_unwarp-0_space-individual.json diff --git a/demos/openneuro/options/options_task-linebisection.json b/demos/openneuro/cfg/options_task-linebisection.json similarity index 100% rename from demos/openneuro/options/options_task-linebisection.json rename to demos/openneuro/cfg/options_task-linebisection.json diff --git a/demos/openneuro/options/options_task-linebisection_space-individual.json b/demos/openneuro/cfg/options_task-linebisection_space-individual.json similarity index 100% rename from demos/openneuro/options/options_task-linebisection_space-individual.json rename to demos/openneuro/cfg/options_task-linebisection_space-individual.json diff --git a/demos/openneuro/options/options_task-linebisection_unwarp-0.json b/demos/openneuro/cfg/options_task-linebisection_unwarp-0.json similarity index 100% rename from demos/openneuro/options/options_task-linebisection_unwarp-0.json rename to demos/openneuro/cfg/options_task-linebisection_unwarp-0.json diff --git a/demos/openneuro/options/options_task-linebisection_unwarp-0_space-individual.json b/demos/openneuro/cfg/options_task-linebisection_unwarp-0_space-individual.json similarity index 100% rename from demos/openneuro/options/options_task-linebisection_unwarp-0_space-individual.json rename to demos/openneuro/cfg/options_task-linebisection_unwarp-0_space-individual.json diff --git a/src/utils/loadAndCheckOptions.m b/src/utils/loadAndCheckOptions.m index 1c10e0e0..72df76b5 100644 --- a/src/utils/loadAndCheckOptions.m +++ b/src/utils/loadAndCheckOptions.m @@ -25,7 +25,9 @@ % - add test for when the input is a structure. if nargin < 1 || isempty(optionJsonFile) - optionJsonFile = spm_select('FPList', pwd, '^options_task-.*.json$'); + optionJsonFile = spm_select('FPList', ... + fullfile(pwd, 'cfg'), ... + '^options_task-.*.json$'); end if isstruct(optionJsonFile) diff --git a/src/utils/saveOptions.m b/src/utils/saveOptions.m index 8f221439..aef5205b 100644 --- a/src/utils/saveOptions.m +++ b/src/utils/saveOptions.m @@ -12,7 +12,9 @@ function saveOptions(opt) % :type opt: structure % - filename = fullfile(pwd, ['options', ... + optionDir = fullfile(pwd, 'cfg'); + [~,~,~] = mkdir(optionDir); + filename = fullfile(optionDir, ['options', ... '_task-', opt.taskName, ... '_date-' datestr(now, 'yyyymmddHHMM'), ... '.json']); diff --git a/tests/test_loadAndCheckOptions.m b/tests/test_loadAndCheckOptions.m index 7da32e0a..e750bbdc 100644 --- a/tests/test_loadAndCheckOptions.m +++ b/tests/test_loadAndCheckOptions.m @@ -8,11 +8,12 @@ function test_loadAndCheckOptionsBasic() - delete('*.json'); + mkdir cfg; + delete(fullfile(pwd, 'cfg', '*.json')); % create dummy json file jsonContent.taskName = 'vismotion'; - filename = 'options_task-vismotion.json'; + filename = fullfile(pwd, 'cfg', 'options_task-vismotion.json'); spm_jsonwrite(filename, jsonContent); % makes sure that it is picked up by default @@ -27,6 +28,9 @@ function test_loadAndCheckOptionsBasic() function test_loadAndCheckOptionsStructure() + mkdir cfg; + delete(fullfile(pwd, 'cfg', '*.json')); + % create dummy json file opt.taskName = 'vismotion'; @@ -42,7 +46,8 @@ function test_loadAndCheckOptionsStructure() function test_loadAndCheckOptionsFromFile() - delete('*.json'); + mkdir cfg; + delete(fullfile(pwd, 'cfg', '*.json')); % create dummy json file jsonContent.taskName = 'vismotion'; @@ -50,11 +55,11 @@ function test_loadAndCheckOptionsFromFile() jsonContent.groups = {''}; jsonContent.subjects = {[]}; - filename = 'options_task-vismotion_space-T1w.json'; + filename = fullfile(pwd, 'cfg', 'options_task-vismotion_space-T1w.json'); spm_jsonwrite(filename, jsonContent); % makes sure that it is read correctly from - opt = loadAndCheckOptions('options_task-vismotion_space-T1w.json'); + opt = loadAndCheckOptions(filename); expectedOptions = defaultOptions(); expectedOptions.taskName = 'vismotion'; @@ -68,30 +73,31 @@ function test_loadAndCheckOptionsFromFile() function test_loadAndCheckOptionsFromSeveralFiles() - delete('*.json'); + mkdir cfg; + delete(fullfile(pwd, 'cfg', '*.json')); % create old dummy json file jsonContent.taskName = 'vismotion'; - filename = fullfile(pwd, ['options', ... - '_task-', jsonContent.taskName, ... - '_date-151501011111', ... - '.json']); + filename = fullfile(pwd, 'cfg', ['options', ... + '_task-', jsonContent.taskName, ... + '_date-151501011111', ... + '.json']); spm_jsonwrite(filename, jsonContent); % create dummy json file with no date jsonContent.taskName = 'vismotion'; jsonContent.space = 'individual'; - filename = 'options_task-vismotion_space-T1w.json'; + filename = fullfile(pwd, 'cfg', 'options_task-vismotion_space-T1w.json'); spm_jsonwrite(filename, jsonContent); % most recent option file that should be read from jsonContent.taskName = 'vismotion'; jsonContent.space = 'individual'; jsonContent.funcVoxelDims = [1 1 1]; - filename = fullfile(pwd, ['options', ... - '_task-', jsonContent.taskName, ... - '_date-' datestr(now, 'yyyymmddHHMM'), ... - '.json']); + filename = fullfile(pwd, 'cfg', ['options', ... + '_task-', jsonContent.taskName, ... + '_date-' datestr(now, 'yyyymmddHHMM'), ... + '.json']); spm_jsonwrite(filename, jsonContent); % makes sure that the right json is read