Summary of what happened:
Hi all,
Is there any alternative flag(s) for *–use-aroma * flag in fmriprep v24.0.0 ? It looks like it is not supported anymore and I’m wondering what alternative flag may give me the same result as --use-aroma was giving.
Thanks,
FYI: I’m new in the realm of fMRI. So I would appreciate it if to give me more details
Command used (and if a helper script was used, a link to the helper script or the command generated):
fmriprep-docker /Nifti derivatives participant --participant-label sub-01 --fs-license-file freesurfer_license.txt --output-spaces MNI152NLin6Asym -w work/ --use-aroma
Version:
fmriprep v24.0.0
tsalo
June 26, 2024, 3:42pm
2
There is no flag to run AROMA in fMRIPrep v24.0.0. ICA-AROMA is something that doesn’t need to be integrated into a minimal preprocessing pipeline, so the fMRIPrep devs consider it out of scope. A few of us have been working on implementing the ICA-AROMA pipeline on fMRIPrep derivatives in nipreps/fmripost-aroma
, but that’s still a ways from being usable. In the meantime, you can probably run maartenmennes/ICA-AROMA
directly.
1 Like
jsein
June 26, 2024, 3:46pm
3
For history, aroma was removed from fmrirep since v23.1:
opened 03:15PM - 17 Jan 23 UTC
closed 11:52AM - 09 Jun 23 UTC
feature
### What would you like to see added in fMRIPrep?
ICA-AROMA is unmaintained, an… d appears to be incompatible with the version of MELODIC released in FSL 6.0.6.2.
```
Cmdline:
ICA_AROMA.py -tr 2.000 -np -den nonaggr -i /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/smooth/vol0000_xform-00000_clipped_merged_smooth.nii.gz -m /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/bold_std_trans_wf/_std_target_MNI152NLin6Asym.res2/mask_std_tfm/vol0000_unwarped_merged_valid_average_corrected_brain_mask_maths_trans.nii.gz -meldir /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/melodic -mc /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/bold_hmc_wf/normalize_motion/motion_params.txt -o /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out
Stdout:
------------------------------- RUNNING ICA-AROMA -------------------------------
--------------- 'ICA-based Automatic Removal Of Motion Artifacts' ---------------
Step 1) MELODIC
- The existing/specified MELODIC directory will be used.
Step 2) Automatic classification of the components
- registering the spatial maps to MNI
Stderr:
Image Exception : #21 :: Invalid ROI dimensions
Invalid ROI dimensions
Image Exception : #21 :: Invalid ROI dimensions
Invalid ROI dimensions
Image Exception : #63 :: No image files match: /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/thr_zstat????
terminate called after throwing an instance of 'std::runtime_error'
what(): No image files match: /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/thr_zstat????
Aborted (core dumped)
rm: cannot remove '/scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/thr_zstat????.nii.gz': No such file or directory
Image Exception : #63 :: No image files match: /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/melodic_IC_thr
terminate called after throwing an instance of 'std::runtime_error'
what(): No image files match: /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/melodic_IC_thr
Aborted (core dumped)
Traceback (most recent call last):
File "/opt/ICA-AROMA/ICA_AROMA.py", line 210, in <module>
aromafunc.register2MNI(fslDir, melIC, melIC_MNI, affmat, warp)
File "/opt/ICA-AROMA/ICA_AROMA_functions.py", line 161, in register2MNI
pixdim1 = float(subprocess.getoutput('%sfslinfo %s | grep pixdim1 | awk \'{print $2}\'' % (fslDir, inFile)))
ValueError: could not convert string to float: 'Image Exception : #63 :: No image files match: /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/melodic_IC_thr\nNo image files match: /scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/melodic_IC_thr'
Traceback:
Traceback (most recent call last):
File "/opt/conda/lib/python3.9/site-packages/nipype/interfaces/base/core.py", line 454, in aggregate_outputs
setattr(outputs, key, val)
File "/opt/conda/lib/python3.9/site-packages/nipype/interfaces/base/traits_extension.py", line 330, in validate
value = super(File, self).validate(objekt, name, value, return_pathlike=True)
File "/opt/conda/lib/python3.9/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate
self.error(objekt, name, str(value))
File "/opt/conda/lib/python3.9/site-packages/traits/base_trait_handler.py", line 74, in error
raise TraitError(
traits.trait_errors.TraitError: The 'nonaggr_denoised_file' trait of a _ICA_AROMAOutputSpecRPT instance must be a pathlike object or string representing an existing file, but a value of '/scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/denoised_func_data_nonaggr.nii.gz' <class 'str'> was specified.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/conda/lib/python3.9/site-packages/nipype/interfaces/base/core.py", line 399, in run
runtime = self._post_run_hook(runtime)
File "/opt/conda/lib/python3.9/site-packages/niworkflows/interfaces/reportlets/segmentation.py", line 231, in _post_run_hook
outputs = self.aggregate_outputs(runtime=runtime)
File "/opt/conda/lib/python3.9/site-packages/nipype/interfaces/base/core.py", line 461, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory '/scratch/fmriprep_23_0_wf/single_subject_01_wf/func_preproc_task_mixedgamblestask_run_02_wf/ica_aroma_wf/ica_aroma/out/denoised_func_data_nonaggr.nii.gz' for output 'nonaggr_denoised_file' of a ICA_AROMARPT interface
```
Given that people can request outputs in MNI152NLin6Asym space, it should be possible to run the necessary steps post-preprocessing, and then we will not have our hands tied by unmaintained dependencies.
cc @jdkent
### Do you have any interest in helping implement the feature?
Yes
### Additional information / screenshots
_No response_
opened 04:36PM - 15 Jun 23 UTC
closed 12:47PM - 17 Jun 23 UTC
bug
### What happened?
In 23.1.1, but not 23.0.2, AROMA seems to not run - but does… n't error out, it just behaves as if it hadn't been specified.
### What command did you use?
```shell
fMRIPrep version: 23.1.0
fMRIPrep command: /opt/conda/envs/fmriprep/bin/fmriprep /data/belleau_lab/TeenStress/E13347949 /data/belleau_lab/TeenStress/E13347949/derivatives participant --fs-license-file /cm/shared/freesurfer-license.txt --participant_label TS049 --output-spaces MNI152NLin6Asym:res-2 anat fsaverage --n_cpus 4 --mem-mb 16384 --notrack --dummy-scans 0 --use-aroma --use-syn-sdc --return-all-components -vv -w /data/fmriprep-workdir/ebelleau
```
### What version of fMRIPrep are you running?
23.1.0
### How are you running fMRIPrep?
Singularity
### Is your data BIDS valid?
Yes
### Are you reusing any previously computed results?
No
### Please copy and paste any relevant log output.
```shell
Here's the config it thinks it is starting with:
230614-14:08:46,994 nipype.workflow VERBOSE:
fMRIPrep config:
[environment]
cpu_count = 32
exec_env = "singularity"
free_mem = 181.0
overcommit_policy = "heuristic"
overcommit_limit = "50%"
nipype_version = "1.8.6"
templateflow_version = "23.0.0"
version = "23.1.1"
[execution]
bids_dir = "/data/belleau_lab/TeenStress/E13347949"
bids_database_dir = "/data/fmriprep-workdir/ebelleau/20230614-140803_28b768a4-3108-471a-9419-6f55a68a6902/bids_db"
bids_description_hash = "ecd58287c7e5111e4a4854c43e4d094e0bc8c59d52e1a549f4f5761fbb15bd7a"
boilerplate_only = false
sloppy = false
debug = []
fmriprep_dir = "/data/belleau_lab/TeenStress/E13347949/derivatives"
fs_license_file = "/cm/shared/freesurfer-license.txt"
fs_subjects_dir = "/data/belleau_lab/TeenStress/E13347949/derivatives/sourcedata/freesurfer"
layout = "BIDS Layout: ...lleau_lab/TeenStress/E13347949 | Subjects: 1 | Sessions: 0 | Runs: 4"
log_dir = "/data/belleau_lab/TeenStress/E13347949/derivatives/logs"
log_level = 15
low_mem = false
md_only_boilerplate = false
notrack = true
track_carbon = false
country_code = "CAN"
output_dir = "/data/belleau_lab/TeenStress/E13347949/derivatives"
me_output_echos = false
output_layout = "bids"
output_spaces = "MNI152NLin6Asym:res-2 anat fsaverage:den-164k"
reports_only = false
run_uuid = "20230614-140803_28b768a4-3108-471a-9419-6f55a68a6902"
participant_label = [ "TS028",]
templateflow_home = "/home/fmriprep/.cache/templateflow"
work_dir = "/data/fmriprep-workdir/ebelleau"
write_graph = false
[workflow]
anat_only = false
aroma_err_on_warn = false
aroma_melodic_dim = 0
bold2t1w_dof = 6
bold2t1w_init = "register"
cifti_output = false
dummy_scans = 0
fmap_bspline = false
force_syn = false
hires = true
ignore = []
longitudinal = false
medial_surface_nan = false
project_goodvoxels = false
regressors_all_comps = true
regressors_dvars_th = 1.5
regressors_fd_th = 0.5
run_reconall = true
skull_strip_fixed_seed = false
skull_strip_template = "OASIS30ANTs"
skull_strip_t1w = "force"
slice_time_ref = 0.5
spaces = "MNI152NLin6Asym:res-2 anat fsaverage:den-164k MNI152NLin2009cAsym"
use_aroma = true
use_syn_sdc = "error"
me_t2s_fit_method = "curvefit"
[nipype]
crashfile_format = "txt"
get_linked_libs = false
memory_gb = 16.384
nprocs = 4
omp_nthreads = 3
plugin = "MultiProc"
resource_monitor = false
stop_on_first_crash = false
[seeds]
master = 34084
ants = 46217
numpy = 28513
[nipype.plugin_args]
maxtasksperchild = 1
raise_insufficient = false
```
### Additional information / screenshots
There are no errors in the html output. But when we run this with 23.0.2 with the exact same flags, we get AROMA output... when we run it with 23.1.1, we don't.
1 Like