Skip to content

Commit cb47136

Browse files
committed
fix: make config attribute public, use match statements
1 parent 9d4a4fe commit cb47136

File tree

3 files changed

+45
-26
lines changed

3 files changed

+45
-26
lines changed

nibabies/cli/parser.py

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -842,33 +842,51 @@ def parse_args(args=None, namespace=None):
842842
work_dir = config.execution.work_dir
843843
version = config.environment.version
844844
output_layout = config.execution.output_layout
845-
config.execution._config_hash = config.hash_config(config.get())
846-
847-
if config.execution.fs_subjects_dir is None:
848-
if output_layout in ('bids', 'multiverse'):
849-
config.execution.fs_subjects_dir = output_dir / 'sourcedata' / 'freesurfer'
850-
elif output_layout == 'legacy':
851-
config.execution.fs_subjects_dir = output_dir / 'freesurfer'
845+
config.execution.parameters_hash = config.hash_config(config.get())
852846

847+
# Multiverse behaves as a cross between bids and legacy
853848
if config.execution.nibabies_dir is None:
854-
if output_layout in 'bids':
855-
config.execution.nibabies_dir = output_dir
856-
elif output_layout == 'legacy':
857-
config.execution.nibabies_dir = output_dir / 'nibabies'
858-
elif output_layout == 'multiverse':
859-
config.loggers.cli.warning(
860-
'Multiverse output selected - assigning output directory based on version'
861-
' and configuration hash.'
862-
)
863-
config.execution.nibabies_dir = (
864-
output_dir / f'nibabies-{version.split("+", 1)[0]}-{config.execution._config_hash}'
865-
)
849+
match output_layout:
850+
case 'bids':
851+
config.execution.nibabies_dir = output_dir
852+
case 'legacy':
853+
config.execution.nibabies_dir = output_dir / 'nibabies'
854+
case 'multiverse':
855+
config.loggers.cli.warning(
856+
'Multiverse output selected - assigning output directory based on version'
857+
' and configuration hash.'
858+
)
859+
config.execution.nibabies_dir = (
860+
output_dir
861+
/ f'nibabies-{version.split("+", 1)[0]}-{config.execution.parameters_hash}'
862+
)
863+
case _:
864+
config.loggers.cli.warning('Unknown output layout %s', output_layout)
865+
pass
866+
867+
nibabies_dir = config.execution.nibabies_dir
868+
869+
if config.execution.fs_subjects_dir is None:
870+
match output_layout:
871+
case 'bids':
872+
config.execution.fs_subjects_dir = output_dir / 'sourcedata' / 'freesurfer'
873+
case 'legacy':
874+
config.execution.fs_subjects_dir = output_dir / 'freesurfer'
875+
case 'multiverse':
876+
config.execution.fs_subjects_dir = nibabies_dir / 'sourcedata' / 'freesurfer'
877+
case _:
878+
pass
866879

867880
if config.workflow.surface_recon_method == 'mcribs':
868-
if output_layout in ('bids', 'multiverse'):
869-
config.execution.mcribs_dir = output_dir / 'sourcedata' / 'mcribs'
870-
elif output_layout == 'legacy':
871-
config.execution.mcribs_dir = output_dir / 'mcribs'
881+
match output_layout:
882+
case 'bids':
883+
config.execution.mcribs_dir = output_dir / 'sourcedata' / 'mcribs'
884+
case 'legacy':
885+
config.execution.mcribs_dir = output_dir / 'mcribs'
886+
case 'multiverse':
887+
config.execution.mcribs_dir = nibabies_dir / 'sourcedata' / 'mcribs'
888+
case _:
889+
pass
872890
# Ensure the directory is created
873891
config.execution.mcribs_dir.mkdir(exist_ok=True, parents=True)
874892

nibabies/cli/run.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,13 @@ def main():
151151
config.execution.unique_labels,
152152
config.execution.nibabies_dir,
153153
config.execution.run_uuid,
154-
config.execution._config_hash if add_hash else None,
154+
config_hash=config.execution.parameters_hash if add_hash else None,
155155
)
156156
write_derivative_description(
157157
config.execution.bids_dir,
158158
config.execution.nibabies_dir,
159159
config.execution.dataset_links,
160-
config.execution._config_hash,
160+
config.execution.parameters_hash,
161161
)
162162
write_bidsignore(config.execution.nibabies_dir)
163163

nibabies/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,8 @@ class execution(_Config):
410410
output_spaces = None
411411
"""List of (non)standard spaces designated (with the ``--output-spaces`` flag of
412412
the command line) as spatial references for outputs."""
413+
parameters_hash = None
414+
"""Unique hash of the current configuration parameters."""
413415
reference_anat = None
414416
"""Force usage of this anatomical scan as the structural reference."""
415417
reports_only = False
@@ -433,7 +435,6 @@ class execution(_Config):
433435
write_graph = False
434436
"""Write out the computational graph corresponding to the planned preprocessing."""
435437
_layout = None
436-
_config_hash = None
437438

438439
_paths = (
439440
'anat_derivatives',

0 commit comments

Comments
 (0)