From 6caed93a6789c4a418c631a932aa091b53e22b1d Mon Sep 17 00:00:00 2001 From: Taylor Salo Date: Wed, 7 Aug 2024 15:03:41 -0400 Subject: [PATCH] Drop fmripost_aroma_dir in favor of output_dir. --- src/fmripost_aroma/cli/parser.py | 5 +---- src/fmripost_aroma/cli/run.py | 14 +++++++------- src/fmripost_aroma/cli/workflow.py | 8 ++++---- src/fmripost_aroma/config.py | 3 --- src/fmripost_aroma/data/tests/config.toml | 1 - src/fmripost_aroma/tests/test_base.py | 4 ++-- src/fmripost_aroma/tests/tests.py | 2 +- src/fmripost_aroma/workflows/aroma.py | 14 +++++++------- src/fmripost_aroma/workflows/base.py | 8 ++++---- 9 files changed, 26 insertions(+), 33 deletions(-) diff --git a/src/fmripost_aroma/cli/parser.py b/src/fmripost_aroma/cli/parser.py index 65a32b3..b04130c 100644 --- a/src/fmripost_aroma/cli/parser.py +++ b/src/fmripost_aroma/cli/parser.py @@ -543,9 +543,6 @@ def parse_args(args=None, namespace=None): work_dir = config.execution.work_dir version = config.environment.version - if config.execution.fmripost_aroma_dir is None: - config.execution.fmripost_aroma_dir = output_dir - # Wipe out existing work_dir if opts.clean_workdir and work_dir.exists(): from niworkflows.utils.misc import clean_directory @@ -585,7 +582,7 @@ def parse_args(args=None, namespace=None): validate_input_dir(config.environment.exec_env, opts.bids_dir, opts.participant_label) # Setup directories - config.execution.log_dir = config.execution.fmripost_aroma_dir / 'logs' + config.execution.log_dir = config.execution.output_dir / 'logs' # Check and create output and working directories config.execution.log_dir.mkdir(exist_ok=True, parents=True) work_dir.mkdir(exist_ok=True, parents=True) diff --git a/src/fmripost_aroma/cli/run.py b/src/fmripost_aroma/cli/run.py index eabb18a..cab8652 100644 --- a/src/fmripost_aroma/cli/run.py +++ b/src/fmripost_aroma/cli/run.py @@ -152,7 +152,7 @@ def main(): from fmripost_aroma.utils.telemetry import process_crashfile crashfolders = [ - config.execution.fmripost_aroma_dir + config.execution.output_dir / f'sub-{s}' / 'log' / config.execution.run_uuid @@ -176,7 +176,7 @@ def main(): sentry_sdk.capture_message(success_message, level='info') # Bother users with the boilerplate only iff the workflow went okay. - boiler_file = config.execution.fmripost_aroma_dir / 'logs' / 'CITATION.md' + boiler_file = config.execution.output_dir / 'logs' / 'CITATION.md' if boiler_file.exists(): if config.environment.exec_env in ( 'singularity', @@ -198,9 +198,9 @@ def main(): from templateflow import api dseg_tsv = str(api.get('fsaverage', suffix='dseg', extension=['.tsv'])) - _copy_any(dseg_tsv, str(config.execution.fmripost_aroma_dir / 'desc-aseg_dseg.tsv')) + _copy_any(dseg_tsv, str(config.execution.output_dir / 'desc-aseg_dseg.tsv')) _copy_any( - dseg_tsv, str(config.execution.fmripost_aroma_dir / 'desc-aparcaseg_dseg.tsv') + dseg_tsv, str(config.execution.output_dir / 'desc-aparcaseg_dseg.tsv') ) errno = 0 finally: @@ -216,13 +216,13 @@ def main(): # Generate reports phase failed_reports = generate_reports( subject_list=config.execution.participant_label, - output_dir=config.execution.fmripost_aroma_dir, + output_dir=config.execution.output_dir, run_uuid=config.execution.run_uuid, ) write_derivative_description( - config.execution.bids_dir, config.execution.fmripost_aroma_dir + config.execution.bids_dir, config.execution.output_dir ) - write_bidsignore(config.execution.fmripost_aroma_dir) + write_bidsignore(config.execution.output_dir) if sentry_sdk is not None and failed_reports: sentry_sdk.capture_message( diff --git a/src/fmripost_aroma/cli/workflow.py b/src/fmripost_aroma/cli/workflow.py index 9e153f2..61a5a71 100644 --- a/src/fmripost_aroma/cli/workflow.py +++ b/src/fmripost_aroma/cli/workflow.py @@ -48,7 +48,7 @@ def build_workflow(config_file, retval): config.load(config_file) build_log = config.loggers.workflow - fmripost_aroma_dir = config.execution.fmripost_aroma_dir + output_dir = config.execution.output_dir version = config.environment.version retval['return_code'] = 1 @@ -68,7 +68,7 @@ def build_workflow(config_file, retval): msg = check_pipeline_version( 'fMRIPost-AROMA', version, - fmripost_aroma_dir / 'dataset_description.json', + output_dir / 'dataset_description.json', ) if msg is not None: build_log.warning(msg) @@ -92,7 +92,7 @@ def build_workflow(config_file, retval): build_log.log(25, 'Running --reports-only on participants %s', ', '.join(subject_list)) retval['return_code'] = generate_reports( subject_list=config.execution.participant_label, - output_dir=config.execution.fmripost_aroma_dir, + output_dir=config.execution.output_dir, run_uuid=config.execution.run_uuid, ) return retval @@ -137,7 +137,7 @@ def build_boilerplate(config_file, workflow): from fmripost_aroma import config config.load(config_file) - logs_path = config.execution.fmripost_aroma_dir / 'logs' + logs_path = config.execution.output_dir / 'logs' boilerplate = workflow.visit_desc() citation_files = {ext: logs_path / f'CITATION.{ext}' for ext in ('bib', 'tex', 'md', 'html')} diff --git a/src/fmripost_aroma/config.py b/src/fmripost_aroma/config.py index 0aa49f1..d3764df 100644 --- a/src/fmripost_aroma/config.py +++ b/src/fmripost_aroma/config.py @@ -403,8 +403,6 @@ class execution(_Config): """Run in sloppy mode (meaning, suboptimal parameters that minimize run-time).""" debug = [] """Debug mode(s).""" - fmripost_aroma_dir = None - """Root of fMRIPost-AROMA BIDS Derivatives dataset. Depends on output_layout.""" fs_license_file = _fs_license """An existing file containing a FreeSurfer license.""" layout = None @@ -451,7 +449,6 @@ class execution(_Config): 'bids_dir', 'derivatives', 'bids_database_dir', - 'fmripost_aroma_dir', 'fs_license_file', 'layout', 'log_dir', diff --git a/src/fmripost_aroma/data/tests/config.toml b/src/fmripost_aroma/data/tests/config.toml index 6f92048..13b6060 100644 --- a/src/fmripost_aroma/data/tests/config.toml +++ b/src/fmripost_aroma/data/tests/config.toml @@ -18,7 +18,6 @@ log_level = 40 low_mem = false md_only_boilerplate = false notrack = true -fmripost_aroma_dir = "/home/runner/work/fmripost-aroma/fmripost-aroma/src/fmripost_aroma/tests/out" output_dir = "/home/runner/work/fmripost-aroma/fmripost-aroma/src/fmripost_aroma/tests/out" output_spaces = "MNI152NLin6Asym:res-2" reports_only = false diff --git a/src/fmripost_aroma/tests/test_base.py b/src/fmripost_aroma/tests/test_base.py index 4f1b7bd..2868cbd 100644 --- a/src/fmripost_aroma/tests/test_base.py +++ b/src/fmripost_aroma/tests/test_base.py @@ -10,7 +10,7 @@ def test_init_ica_aroma_wf(tmp_path_factory): tempdir = tmp_path_factory.mktemp('test_init_ica_aroma_wf') with mock_config(): - config.execution.fmripost_aroma_dir = tempdir / 'out' + config.execution.output_dir = tempdir / 'out' config.execution.work_dir = tempdir / 'work' config.workflow.denoise_method = ['nonaggr', 'orthaggr'] config.workflow.melodic_dim = -200 @@ -29,7 +29,7 @@ def test_init_denoise_wf(tmp_path_factory): tempdir = tmp_path_factory.mktemp('test_init_denoise_wf') with mock_config(): - config.execution.fmripost_aroma_dir = tempdir / 'out' + config.execution.output_dir = tempdir / 'out' config.execution.work_dir = tempdir / 'work' wf = init_denoise_wf(bold_file='sub-01_task-rest_bold.nii.gz') diff --git a/src/fmripost_aroma/tests/tests.py b/src/fmripost_aroma/tests/tests.py index 3b1a913..01596aa 100644 --- a/src/fmripost_aroma/tests/tests.py +++ b/src/fmripost_aroma/tests/tests.py @@ -62,7 +62,7 @@ def mock_config(): yield shutil.rmtree(config.execution.work_dir) - shutil.rmtree(config.execution.fmripost_aroma_dir) + shutil.rmtree(config.execution.output_dir) if not _old_fs: del os.environ['FREESURFER_HOME'] diff --git a/src/fmripost_aroma/workflows/aroma.py b/src/fmripost_aroma/workflows/aroma.py index cf31149..3a903c8 100644 --- a/src/fmripost_aroma/workflows/aroma.py +++ b/src/fmripost_aroma/workflows/aroma.py @@ -260,7 +260,7 @@ def init_ica_aroma_wf( ds_report_ica_aroma = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, datatype='figures', desc='aroma', @@ -291,7 +291,7 @@ def init_ica_aroma_wf( ds_components = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, compress=True, datatype='func', @@ -312,7 +312,7 @@ def init_ica_aroma_wf( ds_mixing = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, datatype='func', res='2', @@ -328,7 +328,7 @@ def init_ica_aroma_wf( ds_aroma_features = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, datatype='func', desc='aroma', @@ -349,7 +349,7 @@ def init_ica_aroma_wf( ds_aroma_confounds = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, datatype='func', desc='melodic', @@ -373,7 +373,7 @@ def init_ica_aroma_wf( ds_report_metrics = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, datatype='figures', desc='metrics', @@ -456,7 +456,7 @@ def init_denoise_wf(bold_file): ds_denoised = pe.Node( DerivativesDataSink( - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, source_file=bold_file, compress=True, datatype='func', diff --git a/src/fmripost_aroma/workflows/base.py b/src/fmripost_aroma/workflows/base.py index a2af08c..0f5aabf 100644 --- a/src/fmripost_aroma/workflows/base.py +++ b/src/fmripost_aroma/workflows/base.py @@ -72,7 +72,7 @@ def init_fmripost_aroma_wf(): single_subject_wf = init_single_subject_wf(subject_id) single_subject_wf.config['execution']['crashdump_dir'] = str( - config.execution.fmripost_aroma_dir + config.execution.output_dir / f'sub-{subject_id}' / 'log' / config.execution.run_uuid @@ -84,7 +84,7 @@ def init_fmripost_aroma_wf(): # Dump a copy of the config file into the log directory log_dir = ( - config.execution.fmripost_aroma_dir + config.execution.output_dir / f'sub-{subject_id}' / 'log' / config.execution.run_uuid @@ -246,7 +246,7 @@ def init_single_subject_wf(subject_id: str): ds_report_summary = pe.Node( DerivativesDataSink( source_file=subject_data['bold'][0], - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, desc='summary', datatype='figures', ), @@ -258,7 +258,7 @@ def init_single_subject_wf(subject_id: str): ds_report_about = pe.Node( DerivativesDataSink( source_file=subject_data['bold'][0], - base_directory=config.execution.fmripost_aroma_dir, + base_directory=config.execution.output_dir, desc='about', datatype='figures', ),