diff --git a/fsl/utils/filetree/utils.py b/fsl/utils/filetree/utils.py index 4ad5f63aff9164531b1a491056f9f9574f963b70..e7dd4aad3347c678e32217e09eecf33d2ecdee35 100644 --- a/fsl/utils/filetree/utils.py +++ b/fsl/utils/filetree/utils.py @@ -170,6 +170,8 @@ def extract_variables(template, filename, known_vars=None): raise ValueError('Multiple values found for {}'.format(var)) else: extracted_value[var] = value + if any('/' in value for value in extracted_value.values()): + continue for name in find_variables(template): if name not in extracted_value: extracted_value[name] = None diff --git a/tests/test_filetree/test_template.py b/tests/test_filetree/test_template.py index 96ecc18f00adb1add2b191c8d3744460f1c02bc6..c4042078df8a762c3affb5b2d98e1c63cb9a4b81 100644 --- a/tests/test_filetree/test_template.py +++ b/tests/test_filetree/test_template.py @@ -21,3 +21,7 @@ def test_get_variables(): utils.extract_variables('{var}[_{other_var}]_{var}', 'test_foo_bar') with pytest.raises(ValueError): utils.extract_variables('bar{var}[_{other_var}]_{var}', 'test') + + assert {'subject': '01', 'session': 'A'} == utils.extract_variables('sub-{subject}/[ses-{session}]/T1w.nii.gz', 'sub-01/ses-A/T1w.nii.gz') + with pytest.raises(ValueError): + utils.extract_variables('sub-{subject}/[ses-{session}]/T1w.nii.gz', 'sub-01/other/T1w.nii.gz')