Hello everyone,
I am currently running tedana ICA denoising and would like to ask for suggestions regarding long runtime caused by ICA convergence issues.
Since my priority is to minimize computational time, I am currently using the tedpca approach for PCA dimensionality reduction before ICA. However, I noticed that under the same parameter settings, different datasets can produce substantially different estimated PCA model orders. For some datasets, the estimated number of PCA components is relatively high, and the subsequent ICA step may fail to converge.
Here’s one example:

In this case, ICA failed to converge when using both AIC and KIC for PCA model order estimation.
When ICA convergence problems occur, the program can continue running for more than one hour for a single dataset. In my case, the main concern is not necessarily achieving a successful denoising result at all costs, but rather ensuring that the pipeline can terminate within a reasonable time.
I would like to ask:
-
Are there recommended ways to force tedana/ICA to terminate earlier when convergence is not achieved?
-
Is it possible or recommended to modify parameters such as:
-
maximum ICA iterations (
max_iter)? -
random seed initialization?
-
number of ICA repetitions or retries?
-
convergence tolerance?
-
-
Would reducing the number of PCA components before ICA be an appropriate strategy to improve runtime stability?
-
Are there alternative ICA settings or decomposition methods (e.g., RobustICA, which may improve convergence stability but is not ideal for our workflow due to its higher computational cost)that are more likely to finish within a predictable runtime?
My sequence setting:
- Voxel size (mm): 3 × 3 × 3
- Slice thickness (mm): 3
- Number of slices: 45
- TR (ms): 2000
- TEs (ms): 11.6, 30, 48.4
- Flip angle (deg): 80
- Effective echo spacing (ms): 0.275
My current workflow uses:
- PCA method:
tedpca - ICA method: FastICA
- fittype:loglin
- Spatial mask: an all-one mask was provided to preserve extracranial structures, including the skull
- All other processing parameters were left unchanged and set to the default values provided by tedana.
Ideally, I would like the pipeline to either:
-
complete ICA within a reasonable time, or
-
terminate/fail gracefully after reaching a predefined computational limit.
Any recommendations regarding parameter settings or best practices would be greatly appreciated.
Thank you!