How to control the cluster size of ward clustering by nilearn?

Hi guys,
I got in trouble these days for the ward parcellation on rs-fMRI data, I wanna get specific number of roi by using the ward parcellation tool of nilearn, but i found that some of the cluster just had 1 voxel, and it influenced the afterward analysis . So i wondering that if there is a way to control the cluster size like at least 10 voxels? Thanks for your attention!

Sorry, I don’t think there is way to control the cluster size per ROI with Ward Parcellations object. Could you provide us an image to check ?

Indeed, as mentioned by Kamalaker, Ward clustering will not allow such a control, and might display such behavior of some single-voxel clusters, if the number of clusters is large.

One simple fix would be to smooth the data.

Okay, thank you for your reply. By the way, could you please share some suggestion about other parcellation method which could parcellate rs-fMRI data up to 1000 or 2000 clusters?

I use ward to create 1000 or 2000 clusters.

Thanks for your reply! Indeed, i used ward and tried to anlayzing dc(degree centrality) of all the clusters, and compute if the distribution of dc values is power-law, and i found that even a fake fmri data had the power-law distribution. It breaks the hypothesis of us, we thought the patients who can not recover from coma did not have this power-law trait.

For such kind of study, you indeed need very balanced clusters, elsewhere the distribution in the size of the cluster will create the power-law behavior.

I would suggest to smooth quite well your data, and use kmeans. The problem is that kmeans will create labels that have different connected components. You will then need to apply nilearn.regions.connected_label_regions to break them appart
(https://nilearn.github.io/modules/generated/nilearn.regions.connected_label_regions.html)
This will create more clusters than the number requested in kmeans. So you’ll have a bit to play with the number request in kmeans in order to get the final number of clusters that you wish.

Okay, really appreciate it, i will try this.

Thank you for your reply! I had talked with Mr GaelVaroquaux just now, and i will try kmeans instead.

Sorry to bother. Actually, after kmeans and nilearn.regions.connected_label_regions, there are still many clusters that only contains 1 voxel, so do you have any suggestion about this? I choose smoothing at 8mm.

Maybe one small common sense suggestion: these clusters reduced to one voxel —even after smoothing— probably represent some structure of no interest, e.g. artery signal or so.
I would thus simply drop these clusters,a s they do not represent meaningful structures.
HTH.

1 Like