Skip to content

Commit 897851e

Browse files
authored
Add verbose option to ica_reclassify to obtain denoised echo images (#1179)
1 parent 894eb77 commit 897851e

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

tedana/io.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,9 @@ def __init__(
143143
del old_registry["root"]
144144
for k, v in old_registry.items():
145145
if isinstance(v, list):
146-
self.registry[k] = [op.join(rel_root, vv) for vv in v]
146+
self.registry[k] = [op.normpath(op.join(rel_root, vv)) for vv in v]
147147
else:
148-
self.registry[k] = op.join(rel_root, v)
148+
self.registry[k] = op.normpath(op.join(rel_root, v))
149149

150150
if not op.isdir(self.out_dir):
151151
LGR.info(f"Generating output directory: {self.out_dir}")
@@ -414,7 +414,10 @@ def get_file_path(self, description):
414414
Description of the file to get the path for.
415415
"""
416416
if description in self._registry.keys():
417-
return op.join(self._base_dir, self._registry[description])
417+
if isinstance(self._registry[description], list):
418+
return [op.join(self._base_dir, f) for f in self._registry[description]]
419+
else:
420+
return op.join(self._base_dir, self._registry[description])
418421
else:
419422
return None
420423

@@ -429,7 +432,10 @@ def get_file_contents(self, description):
429432
"""
430433
for ftype, loader in InputHarvester.loaders.items():
431434
if ftype in description:
432-
return loader(self.get_file_path(description))
435+
if isinstance(self.get_file_path(description), list):
436+
return [loader(f) for f in self.get_file_path(description)]
437+
else:
438+
return loader(self.get_file_path(description))
433439

434440
@property
435441
def registry(self):

tedana/tests/test_integration.py

+1
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ def test_integration_four_echo(skip_integration):
192192
reject=[4, 5, 6],
193193
out_dir=out_dir_manual,
194194
mir=True,
195+
verbose=True,
195196
)
196197

197198
# compare the generated output files

tedana/workflows/ica_reclassify.py

+22-1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,13 @@ def _get_parser():
122122
optional.add_argument(
123123
"--png-cmap", dest="png_cmap", type=str, help="Colormap for figures", default="coolwarm"
124124
)
125+
optional.add_argument(
126+
"--verbose",
127+
dest="verbose",
128+
action="store_true",
129+
help="Generate intermediate and additional files.",
130+
default=False,
131+
)
125132
optional.add_argument(
126133
"--debug",
127134
dest="debug",
@@ -173,6 +180,7 @@ def _main(argv=None):
173180
no_reports=args.no_reports,
174181
png_cmap=args.png_cmap,
175182
overwrite=args.overwrite,
183+
verbose=args.verbose,
176184
debug=args.debug,
177185
quiet=args.quiet,
178186
reclassify_command=reclassify_command,
@@ -242,6 +250,7 @@ def ica_reclassify_workflow(
242250
mir=False,
243251
no_reports=False,
244252
png_cmap="coolwarm",
253+
verbose=False,
245254
overwrite=False,
246255
debug=False,
247256
quiet=False,
@@ -273,6 +282,8 @@ def ica_reclassify_workflow(
273282
png_cmap : obj:'str', optional
274283
Name of a matplotlib colormap to be used when generating figures.
275284
Cannot be used with --no-png. Default is 'coolwarm'.
285+
verbose : :obj:`bool`, optional
286+
Generate intermediate and additional files. Default is False.
276287
debug : :obj:`bool`, optional
277288
Whether to run in debugging mode or not. Default is False.
278289
overwrite : :obj:`bool`, optional
@@ -390,13 +401,19 @@ def ica_reclassify_workflow(
390401
data_optcom = ioh.get_file_contents("combined img")
391402
used_gs = False
392403

404+
if verbose:
405+
LGR.debug("Loading input 4D data")
406+
data_cat = ioh.get_file_contents("input img")
407+
# Extract the data from the nibabel objects
408+
data_cat, _ = io.load_data(data_cat, n_echos=len(data_cat))
409+
393410
io_generator = io.OutputGenerator(
394411
data_optcom,
395412
convention=convention,
396413
prefix=prefix,
397414
config=config,
398415
overwrite=overwrite,
399-
verbose=False,
416+
verbose=verbose,
400417
out_dir=out_dir,
401418
old_registry=ioh.registry,
402419
)
@@ -499,6 +516,10 @@ def ica_reclassify_workflow(
499516
)
500517
io_generator.overwrite = False
501518

519+
if verbose:
520+
LGR.debug("Writing out verbose data")
521+
io.writeresults_echoes(data_cat, mixing, mask_denoise, component_table, io_generator)
522+
502523
# Write out BIDS-compatible description file
503524
derivative_metadata = {
504525
"Name": "tedana Outputs",

0 commit comments

Comments
 (0)