From 4793d2b8cc7c0bb3450915ab2dbc175eafe49e18 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 11:16:29 +0100 Subject: [PATCH 01/19] enh: initialise fieldprep --- nmriprep/argprep/fieldprep.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 nmriprep/argprep/fieldprep.py diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py new file mode 100644 index 0000000..cbac821 --- /dev/null +++ b/nmriprep/argprep/fieldprep.py @@ -0,0 +1,34 @@ +import numpy as np + +from ..image import convert_nef_to_grey, save_slice +from ..parser import get_fieldprep_parser +from ..utils import find_files, parse_kv + + +def fieldprep(): + args = get_fieldprep_parser().parse_args() + + if args.dark_field: + raise NotImplementedError("Dark field processing coming soon...") + + if args.flat_field: + ff_dir = args.flat_field + fnames = find_files(ff_dir.glob('*flatfield*.nef')) + if len(fnames) < 1: + raise FileNotFoundError( + f'No flat field files found in {ff_dir.absolute()}' + ) + out_dir = ff_dir.parent / 'preproc' if not args.output else args.output + out_dir.mkdir(parents=True, exist_ok=True) + + data = np.stack( + [ convert_nef_to_grey(fname) for fname in fnames] , + axis=2, + ).mean(axis=2) + out_stem = '_'.join( + f'{k}-{v}' for k, v + in parse_kv(fnames[0]).items() + if "flatfield" not in k + ) + save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) + return From 0eb98af4efbab0ac899498a35d90c6087948c031 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 11:17:04 +0100 Subject: [PATCH 02/19] enh: add cli options --- nmriprep/parser.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/nmriprep/parser.py b/nmriprep/parser.py index 1a85efb..d4728ab 100644 --- a/nmriprep/parser.py +++ b/nmriprep/parser.py @@ -48,6 +48,19 @@ def get_argprep_parser(): return parser +def get_fieldprep_parser(): + """Build parser object.""" + + parser = ArgumentParser( + description='Convert dark/flatfield .nef images for processing with argprep', + formatter_class=ArgumentDefaultsHelpFormatter, + ) + parser.add_argument('--flat-field', help='Path to directory containing flat field image', type=Path, nargs='*') + parser.add_argument('--dark-field', help='Path to directory containing dark field image', type=Path, nargs='*') + parser.add_argument('--output', help='Optionally specify output directory', type=Path, nargs='*') + return parser + + def get_roiextract_parser(): """Build parser object.""" From 800fedc9a4651c36da25cfea3853da0bdc45009f Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 11:18:23 +0100 Subject: [PATCH 03/19] enh: add fieldprep script to pyproject --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 5e6b66c..0d17c58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ Homepage = "https://github.com/brainkcl/nmriprep" [project.scripts] argprep = "nmriprep.argprep.argprep:main" +fieldprep = "nmriprep.argprep.fieldprep:fieldprep" roi_extract = "nmriprep.measure:roi_extract" [tool.hatch.build] From 630116272ab256fbb00c8cdc7a8b9d89291750c6 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 11:25:12 +0100 Subject: [PATCH 04/19] fix: number of args for fieldprep --- nmriprep/parser.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nmriprep/parser.py b/nmriprep/parser.py index d4728ab..fcd121b 100644 --- a/nmriprep/parser.py +++ b/nmriprep/parser.py @@ -55,9 +55,9 @@ def get_fieldprep_parser(): description='Convert dark/flatfield .nef images for processing with argprep', formatter_class=ArgumentDefaultsHelpFormatter, ) - parser.add_argument('--flat-field', help='Path to directory containing flat field image', type=Path, nargs='*') - parser.add_argument('--dark-field', help='Path to directory containing dark field image', type=Path, nargs='*') - parser.add_argument('--output', help='Optionally specify output directory', type=Path, nargs='*') + parser.add_argument('--flat-field', help='Path to directory containing flat field image', type=Path) + parser.add_argument('--dark-field', help='Path to directory containing dark field image', type=Path) + parser.add_argument('--output', help='Optionally specify output directory', type=Path) return parser From 74c6e0845d8169817eabc67aca6bb32bc316248a Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 11:25:49 +0100 Subject: [PATCH 05/19] fix: specify filename stem for parsing --- nmriprep/argprep/fieldprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index cbac821..776b1f0 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -27,7 +27,7 @@ def fieldprep(): ).mean(axis=2) out_stem = '_'.join( f'{k}-{v}' for k, v - in parse_kv(fnames[0]).items() + in parse_kv(fnames[0].stem).items() if "flatfield" not in k ) save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) From d1460837220f4fdc88cf0c209a1582f4afcc1692 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 12:01:37 +0100 Subject: [PATCH 06/19] enh: use kv in name for output --- nmriprep/argprep/fieldprep.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 776b1f0..f34f6b7 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -18,17 +18,19 @@ def fieldprep(): raise FileNotFoundError( f'No flat field files found in {ff_dir.absolute()}' ) - out_dir = ff_dir.parent / 'preproc' if not args.output else args.output + + fname_parts = parse_kv(fnames[0].stem) + out_stem = '_'.join( + f'{k}-{v}' for k, v + in fname_parts.items() + if "flatfield" not in k + ) + out_dir = ff_dir.parents[1] / 'preproc' / f"sub-{fname_parts['sub']}" if not args.output else args.output out_dir.mkdir(parents=True, exist_ok=True) data = np.stack( [ convert_nef_to_grey(fname) for fname in fnames] , axis=2, ).mean(axis=2) - out_stem = '_'.join( - f'{k}-{v}' for k, v - in parse_kv(fnames[0].stem).items() - if "flatfield" not in k - ) save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) return From 434e46d76a09b50bf55618344be869b094771b3d Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 12:02:05 +0100 Subject: [PATCH 07/19] fix: change mean to median --- nmriprep/argprep/fieldprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index f34f6b7..0c4b1b7 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -31,6 +31,6 @@ def fieldprep(): data = np.stack( [ convert_nef_to_grey(fname) for fname in fnames] , axis=2, - ).mean(axis=2) + ).median(axis=2) save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) return From 88dcb76bade46e2b6b7162ecb27ddf310468c14f Mon Sep 17 00:00:00 2001 From: Eilidh MacNicol Date: Thu, 17 Apr 2025 12:10:12 +0100 Subject: [PATCH 08/19] sty: ruff --- nmriprep/argprep/fieldprep.py | 22 +++++++++++----------- nmriprep/parser.py | 12 +++++++++--- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 0c4b1b7..4a750bf 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -9,28 +9,28 @@ def fieldprep(): args = get_fieldprep_parser().parse_args() if args.dark_field: - raise NotImplementedError("Dark field processing coming soon...") - + raise NotImplementedError('Dark field processing coming soon...') + if args.flat_field: ff_dir = args.flat_field fnames = find_files(ff_dir.glob('*flatfield*.nef')) if len(fnames) < 1: - raise FileNotFoundError( - f'No flat field files found in {ff_dir.absolute()}' - ) + raise FileNotFoundError(f'No flat field files found in {ff_dir.absolute()}') fname_parts = parse_kv(fnames[0].stem) out_stem = '_'.join( - f'{k}-{v}' for k, v - in fname_parts.items() - if "flatfield" not in k + f'{k}-{v}' for k, v in fname_parts.items() if 'flatfield' not in k + ) + out_dir = ( + ff_dir.parents[1] / 'preproc' / f'sub-{fname_parts["sub"]}' + if not args.output + else args.output ) - out_dir = ff_dir.parents[1] / 'preproc' / f"sub-{fname_parts['sub']}" if not args.output else args.output out_dir.mkdir(parents=True, exist_ok=True) data = np.stack( - [ convert_nef_to_grey(fname) for fname in fnames] , + [convert_nef_to_grey(fname) for fname in fnames], axis=2, ).median(axis=2) - save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) + save_slice(data, out_dir / f'{out_stem}_flatfield.tif') return diff --git a/nmriprep/parser.py b/nmriprep/parser.py index fcd121b..05075ad 100644 --- a/nmriprep/parser.py +++ b/nmriprep/parser.py @@ -55,9 +55,15 @@ def get_fieldprep_parser(): description='Convert dark/flatfield .nef images for processing with argprep', formatter_class=ArgumentDefaultsHelpFormatter, ) - parser.add_argument('--flat-field', help='Path to directory containing flat field image', type=Path) - parser.add_argument('--dark-field', help='Path to directory containing dark field image', type=Path) - parser.add_argument('--output', help='Optionally specify output directory', type=Path) + parser.add_argument( + '--flat-field', help='Path to directory containing flat field image', type=Path + ) + parser.add_argument( + '--dark-field', help='Path to directory containing dark field image', type=Path + ) + parser.add_argument( + '--output', help='Optionally specify output directory', type=Path + ) return parser From 1b2a52f0944a53dcc140289c108d10cc87276632 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 13:12:19 +0100 Subject: [PATCH 09/19] Revert "fix: change mean to median" This reverts commit 434e46d76a09b50bf55618344be869b094771b3d. --- nmriprep/argprep/fieldprep.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 4a750bf..8b094df 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -31,6 +31,6 @@ def fieldprep(): data = np.stack( [convert_nef_to_grey(fname) for fname in fnames], axis=2, - ).median(axis=2) - save_slice(data, out_dir / f'{out_stem}_flatfield.tif') + ).mean(axis=2) + save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) return From d1a5599064ad358476832834935bf0b598f167e6 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 13:13:48 +0100 Subject: [PATCH 10/19] fix: change from mean to median --- nmriprep/argprep/fieldprep.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 8b094df..4a1d4af 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -28,9 +28,12 @@ def fieldprep(): ) out_dir.mkdir(parents=True, exist_ok=True) - data = np.stack( - [convert_nef_to_grey(fname) for fname in fnames], + data = np.median( + np.stack( + [convert_nef_to_grey(fname) for fname in fnames], + axis=2, + ), axis=2, - ).mean(axis=2) + ) save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) return From e961d88f6359935a91806ab9d3ba91698a71a9dc Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 13:24:26 +0100 Subject: [PATCH 11/19] sty: ruff --- nmriprep/argprep/fieldprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 4a1d4af..74c09dc 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -35,5 +35,5 @@ def fieldprep(): ), axis=2, ) - save_slice(data, out_dir / f"{out_stem}_flatfield.tif" ) + save_slice(data, out_dir / f'{out_stem}_flatfield.tif') return From c0024194b5fcb80aa965777334d52188f3cdc563 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 13:56:08 +0100 Subject: [PATCH 12/19] enh: add recursive grouping --- nmriprep/argprep/fieldprep.py | 39 ++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 74c09dc..f1e645f 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -1,4 +1,6 @@ import numpy as np +from collections import defaultdict +from pathlib import Path from ..image import convert_nef_to_grey, save_slice from ..parser import get_fieldprep_parser @@ -16,24 +18,27 @@ def fieldprep(): fnames = find_files(ff_dir.glob('*flatfield*.nef')) if len(fnames) < 1: raise FileNotFoundError(f'No flat field files found in {ff_dir.absolute()}') + + subdirs = defaultdict(list) + [subdirs[p.parent].append(p) for p in fnames] - fname_parts = parse_kv(fnames[0].stem) - out_stem = '_'.join( - f'{k}-{v}' for k, v in fname_parts.items() if 'flatfield' not in k - ) - out_dir = ( - ff_dir.parents[1] / 'preproc' / f'sub-{fname_parts["sub"]}' - if not args.output - else args.output - ) - out_dir.mkdir(parents=True, exist_ok=True) + for subdir in subdirs.keys(): + sub_files = subdirs[subdir] + fname_parts = parse_kv(sub_files[0].stem) + out_stem = '_'.join( + f'{k}-{v}' for k, v in fname_parts.items() if 'flatfield' not in k + ) + out_dir = Path( + subdir.str.lower().replace('sourcedata', 'preproc') + ) if not args.output else args.output + out_dir.mkdir(parents=True, exist_ok=True) - data = np.median( - np.stack( - [convert_nef_to_grey(fname) for fname in fnames], + data = np.median( + np.stack( + [convert_nef_to_grey(fname) for fname in sub_files], + axis=2, + ), axis=2, - ), - axis=2, - ) - save_slice(data, out_dir / f'{out_stem}_flatfield.tif') + ) + save_slice(data, out_dir / f'{out_stem}_flatfield.tif') return From 21d45e2feea0dd5b6f1f77b6638161f10bc3af16 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 13:58:02 +0100 Subject: [PATCH 13/19] fix: add recursive glob --- nmriprep/argprep/fieldprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index f1e645f..5285d8b 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -15,7 +15,7 @@ def fieldprep(): if args.flat_field: ff_dir = args.flat_field - fnames = find_files(ff_dir.glob('*flatfield*.nef')) + fnames = find_files(ff_dir.rglob('*flatfield*.nef')) if len(fnames) < 1: raise FileNotFoundError(f'No flat field files found in {ff_dir.absolute()}') From 7bfca3a00f22d37dd38a2889151f891d31bf8d6e Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 13:58:33 +0100 Subject: [PATCH 14/19] fix: explicit subdir string conversion --- nmriprep/argprep/fieldprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 5285d8b..9610f58 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -29,7 +29,7 @@ def fieldprep(): f'{k}-{v}' for k, v in fname_parts.items() if 'flatfield' not in k ) out_dir = Path( - subdir.str.lower().replace('sourcedata', 'preproc') + str(subdir).lower().replace('sourcedata', 'preproc') ) if not args.output else args.output out_dir.mkdir(parents=True, exist_ok=True) From 8e7cd28f6212fbfae00a5a03e8e89b11fdfc5e98 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 14:18:41 +0100 Subject: [PATCH 15/19] bug: changing whole path to lower --- nmriprep/argprep/fieldprep.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 9610f58..8650beb 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -29,8 +29,8 @@ def fieldprep(): f'{k}-{v}' for k, v in fname_parts.items() if 'flatfield' not in k ) out_dir = Path( - str(subdir).lower().replace('sourcedata', 'preproc') - ) if not args.output else args.output + str(subdir).replace('sourcedata', 'preproc') + ).resolve() if not args.output else args.output out_dir.mkdir(parents=True, exist_ok=True) data = np.median( From c30a9ee83f001308a869279a94fcd08cb39e55a9 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 15:05:02 +0100 Subject: [PATCH 16/19] ref: allow flatfield and darkfield to be specified separately --- nmriprep/argprep/argprep.py | 21 +++++++-------------- nmriprep/argprep/fieldprep.py | 8 +++++++- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/nmriprep/argprep/argprep.py b/nmriprep/argprep/argprep.py index 8967d67..6c671e9 100644 --- a/nmriprep/argprep/argprep.py +++ b/nmriprep/argprep/argprep.py @@ -1,11 +1,12 @@ import nibabel as nb import numpy as np -from ..image import convert_nef_to_grey, read_tiff, save_slice +from ..image import convert_nef_to_grey, save_slice from ..parser import get_argprep_parser from ..plotting import plot_curve, plot_mosaic, plot_single_slice from ..utils import find_files, inverse_rodbard, rodbard from .calibration import calibrate_standard +from .fieldprep import find_fields def main(): @@ -16,19 +17,11 @@ def main(): # attempt to find flat field info flatfield_correction = {} - if args.dark_field and args.flat_field: - flatfield_correction['dark'] = read_tiff(args.dark_field) - flatfield_correction['flat'] = read_tiff(args.flat_field) - else: - # try searching for a preprocessed darkfield - latest_ff = find_files(out_dir.glob('*flatfield.tiff')) - latest_df = find_files(out_dir.glob('*darkfield.tiff')) - if latest_ff and latest_df: - flatfield_correction['dark'] = read_tiff(latest_df[-1]) - flatfield_correction['flat'] = read_tiff(latest_ff[-1]) - else: - print('Skipping flat field correction...') - flatfield_correction = None + flatfield_correction['dark'] = find_fields(args.dark_field, out_dir.glob('*darkfield.tif*')) + flatfield_correction['flat'] = find_fields(args.flat_field, out_dir.glob('*flatfield.tif*')) + if not all(flatfield_correction.values()): + print('Skipping flat field correction...') + flatfield_correction = None # identify subjects for pipeline all_subject_ids = set( diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index 8650beb..e2652fe 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -2,11 +2,17 @@ from collections import defaultdict from pathlib import Path -from ..image import convert_nef_to_grey, save_slice +from ..image import convert_nef_to_grey, read_tiff, save_slice from ..parser import get_fieldprep_parser from ..utils import find_files, parse_kv +def find_fields(user=None, search_map=None): + fieldpath = user if user is not None else find_files(search_map)[-1] + field = read_tiff(fieldpath) if fieldpath else None + return field + + def fieldprep(): args = get_fieldprep_parser().parse_args() From cffa1c71ef386fde92b4b7074eb95cbc32bdbfcd Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 15:07:13 +0100 Subject: [PATCH 17/19] ref: allow flatfield specification on a subjectwise basis --- nmriprep/argprep/argprep.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/nmriprep/argprep/argprep.py b/nmriprep/argprep/argprep.py index 6c671e9..f6fe46b 100644 --- a/nmriprep/argprep/argprep.py +++ b/nmriprep/argprep/argprep.py @@ -15,14 +15,6 @@ def main(): out_dir = src_dir.parent / 'preproc' if not args.output else args.output verbose = args.save_intermediate - # attempt to find flat field info - flatfield_correction = {} - flatfield_correction['dark'] = find_fields(args.dark_field, out_dir.glob('*darkfield.tif*')) - flatfield_correction['flat'] = find_fields(args.flat_field, out_dir.glob('*flatfield.tif*')) - if not all(flatfield_correction.values()): - print('Skipping flat field correction...') - flatfield_correction = None - # identify subjects for pipeline all_subject_ids = set( [ @@ -48,6 +40,14 @@ def main(): fig_dir = sub_dir / 'figures' fig_dir.mkdir(exist_ok=True) + # attempt to find flat field info + flatfield_correction = {} + flatfield_correction['dark'] = find_fields(args.dark_field, sub_dir.glob('*darkfield.tif*')) + flatfield_correction['flat'] = find_fields(args.flat_field, sub_dir.glob('*flatfield.tif*')) + if not all(flatfield_correction.values()): + print('Skipping flat field correction...') + flatfield_correction = None + # calibrate standards to transform GV to radioactivity popt, std_rad, std_gv, std_stem = calibrate_standard( sub_id, From 5a669f61308e1db29b0f2ee1c475c83e7d7b125f Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 15:09:51 +0100 Subject: [PATCH 18/19] sty: ruff --- nmriprep/argprep/argprep.py | 8 ++++++-- nmriprep/argprep/fieldprep.py | 13 ++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/nmriprep/argprep/argprep.py b/nmriprep/argprep/argprep.py index f6fe46b..4d01b49 100644 --- a/nmriprep/argprep/argprep.py +++ b/nmriprep/argprep/argprep.py @@ -42,8 +42,12 @@ def main(): # attempt to find flat field info flatfield_correction = {} - flatfield_correction['dark'] = find_fields(args.dark_field, sub_dir.glob('*darkfield.tif*')) - flatfield_correction['flat'] = find_fields(args.flat_field, sub_dir.glob('*flatfield.tif*')) + flatfield_correction['dark'] = find_fields( + args.dark_field, sub_dir.glob('*darkfield.tif*') + ) + flatfield_correction['flat'] = find_fields( + args.flat_field, sub_dir.glob('*flatfield.tif*') + ) if not all(flatfield_correction.values()): print('Skipping flat field correction...') flatfield_correction = None diff --git a/nmriprep/argprep/fieldprep.py b/nmriprep/argprep/fieldprep.py index e2652fe..b305e36 100644 --- a/nmriprep/argprep/fieldprep.py +++ b/nmriprep/argprep/fieldprep.py @@ -1,7 +1,8 @@ -import numpy as np from collections import defaultdict from pathlib import Path +import numpy as np + from ..image import convert_nef_to_grey, read_tiff, save_slice from ..parser import get_fieldprep_parser from ..utils import find_files, parse_kv @@ -24,7 +25,7 @@ def fieldprep(): fnames = find_files(ff_dir.rglob('*flatfield*.nef')) if len(fnames) < 1: raise FileNotFoundError(f'No flat field files found in {ff_dir.absolute()}') - + subdirs = defaultdict(list) [subdirs[p.parent].append(p) for p in fnames] @@ -34,9 +35,11 @@ def fieldprep(): out_stem = '_'.join( f'{k}-{v}' for k, v in fname_parts.items() if 'flatfield' not in k ) - out_dir = Path( - str(subdir).replace('sourcedata', 'preproc') - ).resolve() if not args.output else args.output + out_dir = ( + Path(str(subdir).replace('sourcedata', 'preproc')).resolve() + if not args.output + else args.output + ) out_dir.mkdir(parents=True, exist_ok=True) data = np.median( From b3995124e1dc1b47f771f206d1f5f0cfdd87f6d2 Mon Sep 17 00:00:00 2001 From: eilidhmacnicol Date: Thu, 17 Apr 2025 16:42:35 +0100 Subject: [PATCH 19/19] fix: boolean dict value checking --- nmriprep/argprep/argprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmriprep/argprep/argprep.py b/nmriprep/argprep/argprep.py index 4d01b49..18aed96 100644 --- a/nmriprep/argprep/argprep.py +++ b/nmriprep/argprep/argprep.py @@ -48,7 +48,7 @@ def main(): flatfield_correction['flat'] = find_fields( args.flat_field, sub_dir.glob('*flatfield.tif*') ) - if not all(flatfield_correction.values()): + if any(v is None for v in flatfield_correction.values()): print('Skipping flat field correction...') flatfield_correction = None