Nilearn CanICA - Extracting from non-overlapping regions

Hi all,

I’m interested in using CanICA from nilearn to first identify functional networks during a continuous task. I want to parse out individual regions of these networks using something like connected_regions, and eventually take a look at the functional connectivity patterns of the regions during the same task as well as during other tasks/scans. Because of this, I am interested in extracting out non-overlapping regions from my networks.

How can I achieve this with CanICA and nilearn – if possible? And, more generally, how do I ensure I am extracting the best regions from networks (i.e. how do I determine component map threshold values, number of components, etc)?


1 Like

How can I achieve this with CanICA and nilearn – if possible?

I would extract components using CanICA and check for overlap between each component to stratify for non-overlapping components and then use connected_regions on these stratified components or use methods lying in this module (

connected_regions or others returns output based on these stratified components. So, using that won’t be a problem AFAIK. To check for overlap you can try for jaccard similarity index or other simple strategies.

how do I determine component map threshold values

For post-processing threshold, you can have a look at this paper if authors have provided any solutions

For this reason, I suggest Dictionary Learning which not only extract sparse components (useful for parse out individual regions) but also avoids threshold to be determined.

number of components

May be you can look at the variance explained per component using score method of CanICA object. But, I believe that it depends on which brain areas you are interested in. You need to play a bit here by looking at the extracted components and ask if task dependent brain regions are covered.


Hi Kamalaker,

Thanks for you input, that clarifies a lot and I think I’ll take use jaccard similarity approach. I’ll look into Dictionary learning as well, which I know is implemented in nilearn but I haven’t gotten my hands dirty with it yet.