Number of components in Tedana PCA is equal to the number of EPI volumes

Hi,

I am trying to run tedana on a multiband dataset with four echo times (12.6, 29.23, 45.86, 62.49 ms) and a TR of 0.91 seconds with 766 volumes. PCA with MLE seems to select a number of components that are equal to the number of volumes and ICA fails to converge, perhaps due to the large number of components. I was wondering if this is usual? The data here have been motion corrected by fmriprep, but no other preprocessing step has been applied. I am skipping time slice correction since TR is <1s.

What is the difference between using ‘kundu’ or ‘kundu-stabilize’ instead of MLE and which one is preferable?

And would you recommend putting the data through an automated ica-based denoising algorithm such as ICA-FIX post tedana to remove physiological noise that was not removed in tedana?

Thank you,
Kristina

Hello Kristina,

In order to fix the issue of getting as many components as volumes, we changed the PCA method a little over a year ago. Instead of using MLE, tedana now performs PCA with what we call maPCA (moving-average PCA) by default. You will see this method provides three options to determine how aggressive you want the dimensionality reduction to be, from the one that yields the least components to the one that returns the most: MDL, KDL, and AIC. If you are interested, you can read more about it here. Right now, this is the PCA method we believe is the best for regular use of tedana.

I suggest you update tedana to the latest version and try the maPCA option. Actually, we will be releasing a new version this week I believe, so you may want to wait for that.

Re kundu and kundu-stabilize: these methods involve applying a decision tree to identify and discard PCA components which, in addition to not explaining much variance, are also not significantly TE-dependent (i.e., have low Kappa) or TE-independent (i.e., have low Rho). You can read more about them at the same link as above.

Re the automatic removal of physiological noise: I have never used ICA-FIX so I cannot recommend for or against using it. However, tedana makes it rather easy to manually remove undesired components after they are classified into accepted, rejected, and ignored.

I hope this was helpful,

Eneko

1 Like

Huge :+1: to everything @e.urunuela said. The only addition I would like to make is that we have been working on making it easier to combine tedana with other ICA-based denoising approaches (especially AROMA). That doesn’t help you right now, but hopefully at some point in the near(ish) future it will be trivial to combine sets of classifications from different algorithms performed on the same decomposition.

1 Like

Thanks you both for your helpful responses. I am looking forward to the combination of ICA-AROMA with tedana. It would be helpful for large datasets.

I may missed something but installing tedana using pip installs the stable version, not the latest. I have been looking for the documentation on how to install the latest version but have not found any info. How can I install the latest version?

Best,
Kristina

You can install 0.0.9a with pip install tedana==0.0.9a, although I’d recommend installing the current version from GitHub: pip install git+https://github.com/ME-ICA/tedana.git.

We’re planning to release 0.0.9 (the stable version) on Friday, after which you can install the normal way (pip install tedana).

Thanks Taylor.

Pip install works. Just letting you know installing it from github returned this error when I tried to run tedana:

FileNotFoundError: [Errno 2] No such file or directory: ‘/Users/kristinasabaroedin/opt/anaconda3/envs/tedana/lib/python3.8/site-packages/README.md’

I look forward to the new release on Friday.

Kristina

1 Like

I am glad pip worked Kristina.

That error is quite weird I must say. I do not know why the installation would complain about the README file missing. How did you try to install it from GitHub?

Eneko

The problem is that the README is loaded in the setup.py to be used as the long description for the package, and for some reason our packaging (whether package_data or the MANIFEST.in) didn’t catch it. I’ll open an issue about this, since we started using the README after our most recent release and I’m worried it could impact the next stable release.

EDIT: I’ve opened ME-ICA/tedana#668.

1 Like

Ah, I missed that one then. Thank you Taylor!