diff --git a/.zenodo.json b/.zenodo.json index bc34c33939..d01d2409e3 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -910,6 +910,11 @@ "name": "Anijärv, Toomas Erik", "orcid": "0000-0002-3650-4230" }, + { + "affiliation": "Azienda Ospedaliero-Universitaria di Modena", + "name": "Genovese, Maurilio", + "orcid": "0000-0002-8154-8224" + }, { "affiliation": "Department of Psychology, Stanford University", "name": "Gorgolewski, Krzysztof J.", diff --git a/nipype/interfaces/dcm2nii.py b/nipype/interfaces/dcm2nii.py index 48cdc766f7..387c267c91 100644 --- a/nipype/interfaces/dcm2nii.py +++ b/nipype/interfaces/dcm2nii.py @@ -470,7 +470,7 @@ def _parse_files(self, filenames): for filename in filenames: # search for relevant files, and sort accordingly - for fl in search_files(filename, outtypes): + for fl in search_files(filename, outtypes, self.inputs.crop): if ( fl.endswith(".nii") or fl.endswith(".gz") @@ -508,7 +508,15 @@ def _list_outputs(self): # https://stackoverflow.com/a/4829130 -def search_files(prefix, outtypes): - return it.chain.from_iterable( +def search_files(prefix, outtypes, search_crop): + found = it.chain.from_iterable( iglob(glob.escape(prefix + outtype)) for outtype in outtypes ) + if search_crop: + found = it.chain( + it.chain.from_iterable( + iglob(glob.escape(prefix) + "_Crop_*" + outtype) for outtype in outtypes + ), + found, + ) + return found diff --git a/nipype/interfaces/tests/test_dcm2nii.py b/nipype/interfaces/tests/test_dcm2nii.py index 4e54f73960..5154534c5a 100644 --- a/nipype/interfaces/tests/test_dcm2nii.py +++ b/nipype/interfaces/tests/test_dcm2nii.py @@ -5,17 +5,28 @@ @pytest.mark.parametrize( - "fname, extension", + "fname, extension, search_crop", [ - ("output_1", ".txt"), - ("output_w_[]_meta_1", ".json"), - ("output_w_**^$?_meta_2", ".txt"), + ("output_1", ".txt", False), + ("output_w_[]_meta_1", ".json", False), + ("output_w_**^$?_meta_2", ".txt", False), + ("output_cropped", ".txt", True), ], ) -def test_search_files(tmp_path, fname, extension): +def test_search_files(tmp_path, fname, extension, search_crop): tmp_fname = fname + extension test_file = tmp_path / tmp_fname test_file.touch() - actual_files_list = dcm2nii.search_files(str(tmp_path / fname), [extension]) + if search_crop: + tmp_cropped_fname = fname + "_Crop_1" + extension + test_cropped_file = tmp_path / tmp_cropped_fname + test_cropped_file.touch() + + actual_files_list = dcm2nii.search_files( + str(tmp_path / fname), [extension], search_crop + ) for f in actual_files_list: - assert str(test_file) == f + if search_crop: + assert f in (str(test_cropped_file), str(test_file)) + else: + assert str(test_file) == f