Localizing ICA Components

Dear Brainstorm experts and developers,

I just started exploring the possibilities using Brainstorm for source localization. Would it be possible localizing single ICA components like it is with EEGLAB or LoretaKey?


Hi Christian,

I don't have experience with this kind of approach, but in principle, as we are using EEGLAB`s runica function for ICA decomposition, I don't see any reason for which it wouldn't work.
After running the ICA analysis in Brainstorm, select only one component, then do all your analysis on this reduced subspace. Note that you must select the same subspace for your data of interest and for the baselines you use for estimating the noise covariance matrix.

@Sylvain @John_Mosher Do you have any experience with this?


1 Like

Hi Francois,

thank you very much for your quick answer and view. I'll try your suggestion and report on my experiences. I am thankful for further suggestions and thoughts.


just a quick update:
I was very successful in localizing ICA components. Just a few notes:
I computed ICA using EEGlab with the additional AMICA algorithm (because I'm more used to EEGlab). Next, I separated the spatial information of the ICA component of interest and entered it into Brainstorm (by stacking it a few times, as happens in the Loreta export in EEGlab: https://sccn.ucsd.edu/wiki/LORETA_for_EEGLAB). After calculating the forward model, I solved the inverse problem using sLoreta with the extracted ICA space information. The comparison of the results of EEGlabs dipfit and the brainstorming sLoreta was comparable.
I hope that this experience will help someone whoa also works with ICA components. Thanks again for your thoughts.


1 Like

Thank you, Christian: very useful indeed.
I have never source mapped ICs myself but I know this is something some folks do in the field. My only concern with this is more conceptual than technical. Indeed, I have difficulties looking at brain activity as a set of processes that are independent from one another.

1 Like

Thank you very much for your thoughts, Sylvain. Of course I see the same difficulties. Especially when one conceptualizes brain processes as a complex network interacting on several scales this approach has drawbacks! Another main concern would be the restriction of the number of components to the number of electrodes. Currently I'm interested in assesing brain network dynamic processes on the basis of EEG signals using dimensionality reduction. As ICA is commonly used I started exploring it and its possibilites and drawbacks as a starting point planing to focus on other methods like Dynamic Mode Decomposition in the future.

Hi, we have come up with a new ICA-based algorithm and we want to apply to real EEG data and extract the components. Please, How can I run the new algorithm on EEGLAB or Brainstorm?
Many thanks!


You will need to write your algorithm in Matlab, and then incorporate it to our component extraction process as a new method: https://github.com/brainstorm-tools/brainstorm3/blob/589fba8f771cc9fe6a0a884ab9ab02b16c533f71/toolbox/process/functions/process_ssp2.m#L606
You could replace an existing method (e.g. ICA_infomax) so that you have access to it from the Brainstorm interface for your tests. Once your algorithm ready, we can help you integrate it properly in the software.