Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft CircleCI configuration #43

Merged
merged 15 commits into from
Aug 28, 2024
Prev Previous commit
Next Next commit
Drop fmripost_aroma_dir in favor of output_dir.
tsalo committed Aug 7, 2024
commit 6caed93a6789c4a418c631a932aa091b53e22b1d
5 changes: 1 addition & 4 deletions src/fmripost_aroma/cli/parser.py
Original file line number Diff line number Diff line change
@@ -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)
14 changes: 7 additions & 7 deletions src/fmripost_aroma/cli/run.py
Original file line number Diff line number Diff line change
@@ -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(
8 changes: 4 additions & 4 deletions src/fmripost_aroma/cli/workflow.py
Original file line number Diff line number Diff line change
@@ -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')}

3 changes: 0 additions & 3 deletions src/fmripost_aroma/config.py
Original file line number Diff line number Diff line change
@@ -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',
1 change: 0 additions & 1 deletion src/fmripost_aroma/data/tests/config.toml
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions src/fmripost_aroma/tests/test_base.py
Original file line number Diff line number Diff line change
@@ -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')
2 changes: 1 addition & 1 deletion src/fmripost_aroma/tests/tests.py
Original file line number Diff line number Diff line change
@@ -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']
14 changes: 7 additions & 7 deletions src/fmripost_aroma/workflows/aroma.py
Original file line number Diff line number Diff line change
@@ -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',
8 changes: 4 additions & 4 deletions src/fmripost_aroma/workflows/base.py
Original file line number Diff line number Diff line change
@@ -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',
),