diff --git a/.all-contributorsrc b/.all-contributorsrc index 22dbbab4..0857d149 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -17,6 +17,7 @@ "doc" ] }, + { "login": "anege", "name": "anege", "avatar_url": "https://avatars0.githubusercontent.com/u/50317099?v=4", @@ -26,6 +27,7 @@ "design" ] }, + { "login": "mohmdrezk", "name": "Mohamed Rezk", "avatar_url": "https://avatars2.githubusercontent.com/u/9597815?v=4", @@ -36,6 +38,7 @@ "design" ] }, + { "login": "marcobarilari", "name": "marcobarilari", "avatar_url": "https://avatars3.githubusercontent.com/u/38101692?v=4", @@ -44,7 +47,9 @@ "code", "design", "review", - "doc" + "doc", + "test", + "bug" ] }, { @@ -57,13 +62,35 @@ "doc", "infra", "design", - "review" + "review", + "bug" + ] + }, + { + "login": "fedefalag", + "name": "Fede F.", + "avatar_url": "https://avatars2.githubusercontent.com/u/50373329?v=4", + "profile": "https://github.com/fedefalag", + "contributions": [ + "bug" + ] + }, + { + "login": "CerenB", + "name": "CerenB", + "avatar_url": "https://avatars1.githubusercontent.com/u/10451654?v=4", + "profile": "https://github.com/CerenB", + "contributions": [ + "bug", + "content", + "doc" ] } ], "contributorsPerLine": 7, - "projectName": "CPP_BIDS_SPM_pipeline", + "projectName": "CPP_SPM", "projectOwner": "cpp-lln-lab", "repoType": "github", - "repoHost": "https://github.com" + "repoHost": "https://github.com", + "skipCi": true } diff --git a/README.md b/README.md index 1f60b54f..b631e2c8 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,7 @@ **Contributors** - -[![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors) - +[![All Contributors](https://img.shields.io/badge/all_contributors-7-orange.svg?style=flat-square)](#contributors-) @@ -101,17 +99,22 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - + + - - - - - + + + + + + +
OliColli
OliColli

💻 🎨 📖
anege
anege

💻 🎨
Mohamed Rezk
Mohamed Rezk

💻 👀 🎨
marcobarilari
marcobarilari

💻 🎨 👀 📖
Remi Gau
Remi Gau

💻 📖 🚇 🎨 👀

OliColli

💻 🎨 📖

anege

💻 🎨

Mohamed Rezk

💻 👀 🎨

marcobarilari

💻 🎨 👀 📖 ⚠️ 🐛

Remi Gau

💻 📖 🚇 🎨 👀 🐛

Fede F.

🐛

CerenB

🐛 🖋 📖
- + + + This project follows the diff --git a/src/utils/manageWorkersPool.m b/src/utils/manageWorkersPool.m index 38f3dd28..b5a8c08b 100644 --- a/src/utils/manageWorkersPool.m +++ b/src/utils/manageWorkersPool.m @@ -20,7 +20,12 @@ function manageWorkersPool(action, opt) % opt.parallelize.killOnExit = true; % - if ~isOctave() && opt.parallelize.do + if ~opt.parallelize.do + opt.parallelize.nbWorkers = 1; + opt.parallelize.killOnExit = true; + end + + if ~isOctave() matlabVer = version('-release'); @@ -56,7 +61,11 @@ function manageWorkersPool(action, opt) if opt.parallelize.killOnExit if str2double(matlabVer(1:4)) > 2013 - delete(gcp); + + pool = gcp('nocreate'); + if ~isempty(pool) + delete(gcp); + end else matlabpool close; diff --git a/src/workflows/bidsSpatialPrepro.m b/src/workflows/bidsSpatialPrepro.m index 8e644864..91e73a34 100644 --- a/src/workflows/bidsSpatialPrepro.m +++ b/src/workflows/bidsSpatialPrepro.m @@ -44,12 +44,20 @@ function bidsSpatialPrepro(opt) [BIDS, opt, group] = setUpWorkflow(opt, 'spatial preprocessing'); + opt.orderBatches.selectAnat = 1; + opt.orderBatches.realign = 2; + opt.orderBatches.coregister = 3; + opt.orderBatches.saveCoregistrationMatrix = 4; + opt.orderBatches.segment = 5; + opt.orderBatches.skullStripping = 6; + opt.orderBatches.skullStrippingMask = 7; + %% Loop through the groups, subjects, and sessions for iGroup = 1:length(group) groupName = group(iGroup).name; - for iSub = 1:group(iGroup).numSub + parfor iSub = 1:group(iGroup).numSub matlabbatch = []; % Get the ID of the subject @@ -60,7 +68,6 @@ function bidsSpatialPrepro(opt) printProcessingSubject(groupName, iSub, subID); matlabbatch = setBatchSelectAnat(matlabbatch, BIDS, opt, subID); - opt.orderBatches.selectAnat = 1; % if action is emtpy then only realign will be done action = []; @@ -68,17 +75,14 @@ function bidsSpatialPrepro(opt) action = 'realign'; end [matlabbatch, voxDim] = setBatchRealign(matlabbatch, action, BIDS, opt, subID); - opt.orderBatches.realign = 2; % dependency from file selector ('Anatomical') matlabbatch = setBatchCoregistrationFuncToAnat(matlabbatch, BIDS, opt, subID); - opt.orderBatches.coregister = 3; matlabbatch = setBatchSaveCoregistrationMatrix(matlabbatch, BIDS, opt, subID); % dependency from file selector ('Anatomical') matlabbatch = setBatchSegmentation(matlabbatch, opt); - opt.orderBatches.segment = 5; matlabbatch = setBatchSkullStripping(matlabbatch, BIDS, opt, subID); diff --git a/tests/test_manageWorkersPool.m b/tests/test_manageWorkersPool.m new file mode 100644 index 00000000..9754a9ea --- /dev/null +++ b/tests/test_manageWorkersPool.m @@ -0,0 +1,69 @@ +function test_suite = test_manageWorkersPool %#ok<*STOUT> + try % assignment of 'localfunctions' is necessary in Matlab >= 2016 + test_functions = localfunctions(); %#ok<*NASGU> + catch % no problem; early Matlab versions can use initTestSuite fine + end + initTestSuite; +end + +function test_manageWorkersPoolBasic() + + opt.parallelize.do = true; + opt.parallelize.nbWorkers = 3; + opt.parallelize.killOnExit = true; + + matlabVer = version('-release'); + + manageWorkersPool('close', opt); + + manageWorkersPool('open', opt); + + if ~isOctave() + if str2double(matlabVer(1:4)) > 2013 + + pool = gcp('nocreate'); + nbWorkers = pool.NumWorkers; + + else + nbWorkers = matlabpool('size'); %#ok + + end + + manageWorkersPool('close', opt); + + assertEqual(nbWorkers, opt.parallelize.nbWorkers); + + end + +end + +function test_manageWorkersPoolNoParallel() + + opt.parallelize.do = false; + opt.parallelize.nbWorkers = 3; + opt.parallelize.killOnExit = true; + + matlabVer = version('-release'); + + manageWorkersPool('close', opt); + + manageWorkersPool('open', opt); + + if ~isOctave() + if str2double(matlabVer(1:4)) > 2013 + + pool = gcp('nocreate'); + nbWorkers = pool.NumWorkers; + + else + nbWorkers = matlabpool('size'); %#ok + + end + + manageWorkersPool('close', opt); + + assertEqual(nbWorkers, 1); + + end + +end