Has anyone used binary (compiled) implementations of infomax ICA

I am a long time user of EEGLAB in MATLAB but now evaluating other options. I use cudaica() a compiled cuda implementation of the popular extended infomax ICA algorithm.

Is there a straight forward way in MNE to define the ICA method to use any binary (non python) ICA executable where the output is simply the weights and spheres?

I’m surprised in searching I am not getting any hits for ica_linux or cudaica_win in the forum.

ex.

TIA,
Brian

Hi @stratumorien , welcome!

No I don’t believe so. You’d probably have to export your data from MNE (e.g. epochs.get_data() ) and figure out how to pass that to cudaica directly.

Best of luck!

May I ask why you want to do that? The Picard package implements several different ICA algorithms and is extremely fast. It is also a method supported by MNE out of the box if you have installed this package.

2 Likes

ICA convergence for 64 channel, 6 hour resting state EEG (no PCA) is never fast, cudaica() provides at least a 20x speedup on my A6000…

Although I am not familiar with Picard so can’t comment on its efficiency, Ill look into it.

Depends on what you call “fast”. EEGLAB’s ICA implementation is very slow, and by that I mean both its runica and binica commands. Last time I tried, Picard was orders of magnitudes faster than even binica. So yes, just try and see if it’s fast enough for your use case. If not, you can always feed the EEG array to some CUDA implementation.

2 Likes