low homogeneity in MS-HBM network recovery

122 views
Skip to first unread message

Melissa

unread,
Jul 24, 2025, 7:46:16 AM7/24/25
to CBIG users

Hi,

I am trying to apply the MS-HBM pipeline to recover networks in child and adult data using 3 runs of movie-viewing data instead of resting state. The individual parcellations look very (i.e., too) similar to each other, so I’m worried the priors are overweighting the results (even in the adult sample) and I’m just recovering the same network structure in all participants. I’m using the simplified wrapper script to implement the MS-HBM pipeline and using the provided pre-trained group priors (HCP_40_fs6).

An overview of what I’ve done:

1.      The data are preprocessed using my own pipeline, but the steps are conceptually similar:

a.      Preprocess data with fMRIPrep

b.      The output timecourses are then further processed:

                                                       i.      High motion volumes are interpolated with cubic spline interpolation

                                                      ii.      The data are detrended

                                                    iii.      A high-pass filter is applied (100s)

                                                    iv.      High motion volumes are censored

                                                      v.      Motion parameters are regressed out

                                                    vi.      The data are standardized (z-transformed)

                                                   vii.      A nan volume is then reinserted into the data where high motion volumes occurred (so the runs are the same length for all participants).

1.      These high motion volumes are indicated in the censor list passed to the MS-HBM code.

c.       The data are then projected to the surface (fsaverage6) and smoothed (2mm kernel)

d.      Then I apply the MS-HBM code to the resulting surfaces.

2.      I looped through different parameters (below) as suggested elsewhere in this group, but consistently get very low homogeneity values (~0.06) which suggests that the parcellations do not fit held out data from the other runs well. I’ve attached an image showing the networks obtained for 1 participant looping through these different parameters.

a.      w_set = [60 80 100 120];

b.      c_set = [30 40 50 60];

3.      In addition to the low homogeneity values, the individual parcellations look too similar across participants (i.e., just look like the group prior). I’ve attached an image showing the parcellations for 2 adult participants.

A related question: how do I extract the timeseries from the individual parcellations? I’m particularly interested in extracting the timeseries from the default networks.

Any insight or advice on this would be greatly appreciated!

Melissa

subject_comparison.png
ind-parcellation_across_parameters.png

Ruby Kong

unread,
Jul 24, 2025, 8:56:25 AM7/24/25
to Melissa, CBIG users
Hi Melissa,

Your parcellations look okay to me, in the sense that you can see there were individual-specific features, such as the PCC patch (see highlighted circle). The homogeneity is a bit low. Can you try use the group parcellation to compute the homogeneity? The individual parcellation should have better homogeneity than the group parcellation.

You can find the group parcellation here:

For default networks, you can find the network names here:



image.png

--
You received this message because you are subscribed to the Google Groups "CBIG users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cbig_users+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cbig_users/0e8c914c-c20b-4595-bfdf-a49f2f228951n%40googlegroups.com.
Message has been deleted
Message has been deleted

Melissa

unread,
Jul 24, 2025, 8:16:47 PM7/24/25
to CBIG users

Hi Ruby,

Thanks for getting back to me – I really appreciate it! I computed the homogeneity with the group parcellation, and the values are still low but often higher than the individual parcellation: ~.03-.08. Any ideas about what might be causing this? Other than differences in the preprocessing pipelines and the data (movie vs resting state), we have fairly short runs (~6-8 minutes) but I don't know which factors are likely to have the greatest impact here.

A couple related questions:

  1.  The parcellations appear to have patches where no network assignment is happening (i.e., the medial surface – which makes sense – but also patches throughout the cortex). Is this something to be concerned about?
  2. How do I apply the network labels from the 17network_labels.mat file to extract the vertex or network timeseries? Sorry if that’s a basic question – I’m used to working in the volume!

Thanks for your help with this!

Melissa

Ruby Kong

unread,
Jul 25, 2025, 6:27:58 AM7/25/25
to Melissa, CBIG users
Hi Melissa,

I have seen low homogeneity for some data with very little smoothing or some different data preprocessing steps. But your preprocessing sequence looks okay to me. 

6~8 min per run with 3 run is usually good enough. So it's possible the pre-trained model using resting doesn't fit movie data that well. I would suggest you retrain the MSHBM model following step1 and step2:
Relevant examples are here:

Before you proceed to step2, you can check if your group-level parcellation (using your own data) under <output_dir>/group/group.mat can give you better homogeneity than the HCP one. 

However, this can not explain the "no assignment" issue. The area has no assignment usually means that these vertices have all 0s rows in the FC profile. Basically this means that these vertices are weakly correlated with all the other vertices. I only see it happens for a few vertices before, but yours has a "network pattern". Can you check if you have all zeros for those vertices in your profiles? It should be a file like this /profiles/sub1/sess1/<l/r>h.sub1_sess1_fsaverage6_roifsaverage3.surf2surf_profile.nii.gz. If you do
lh_x=MRIread('lh.sub1_sess1_fsaverage6_roifsaverage3.surf2surf_profile.nii.gz');
lh_y=lh_x.vol(vertex_no_assignment,:);
you can check if lh_y is all zeros, or almost all zeros.

I will give an example of extracting timeseries for default network A. If you check the network_names.mat file, defaultA is the 7th network. If you check your individual parcellation lh_labels and rh_labels, you should find vertcies = 7. You can read your input fs6 surface data:
lh_data = MRIread("lh_fs6_data.nii.gz");
lh_data.vol should contains a 40962xT matrix.

So for default A, the timeseries are:
lh_data.vol(lh_labels==7,:);
rh_data.vol(rh_labels==7,:);




Message has been deleted

Shreya Pande

unread,
Jul 28, 2025, 8:14:06 PM7/28/25
to Melissa, CBIG users
Hi Melissa,

Just a quick follow-up to Ruby’s email from Friday - I was also looking at your parcellation output, and one additional possibility for the grey patches in the cortex in regions besides the medial wall might be related to color indexing during visualization.

In some cases, if the colourmap indexing starts from 1 instead of 0, it can cause the medial wall (usually coded as 0) and network 1 to be assigned to the same color (e.g., both as grey). This can make it seem like there are more 'unassigned' regions than there actually are.

It might be worth double-checking your colour indexing or how the colourmap is defined, especially if you’re using a custom or modified visualisation script.

You can try loading your parcellation using our colourmap. 
You can load our group parcellation from the link here, which also contains the colour map: https://github.com/ThomasYeoLab/CBIG/blob/master/stable_projects/brain_parcellation/Kong2019_MSHBM/lib/group_priors/HCP_40_fs6/group.mat 
and then load the .mat file as:
s=load(<path to the HCP_fs6_group.mat>);

You can use the script here (https://github.com/ThomasYeoLab/CBIG/blob/master/utilities/matlab/figure_utilities/CBIG_DrawSurfaceMaps.m) to plot the parcellation with the command below:
CBIG_DrawSurfaceMaps(lh_labels,rh_labels,’fsaverage6’,’inflated’,0,17,s.colors); 
Do note that networks are assigned from 1 to 17, and the medial wall is assigned a label of 0 in our parcellations. 

Let me know if this helps!

Best regards,
Shreya

On Mon, Jul 28, 2025 at 2:00 PM Melissa <melis...@gmail.com> wrote:
Hi Ruby,

Thanks for getting back to me – I really appreciate it! I computed the homogeneity with the group parcellation, and the values are still low but often higher than the individual parcellation: ~.03-.08. Any ideas about what might be causing this? Other than differences in the preprocessing pipelines and the data (movie vs resting state), we have fairly short runs (~6-8 minutes).

A couple related questions:
1. The parcellations appear to have patches where no network assignment is happening (i.e., the medial surface – which makes sense – but also patches throughout the cortex). Is this something to be concerned about?
2. How do I apply the network labels from the 17network_labels.mat file to extract the vertex or network timeseries? Sorry if that’s a basic question – I’m used to working in the volume!


Thanks for your help with this!
Melissa

On Thursday, July 24, 2025 at 1:56:25 PM UTC+1 Ruby Kong wrote:

Melissa Thye

unread,
Aug 18, 2025, 9:26:31 PM8/18/25
to CBIG users
Thanks both for your help with this! I followed the advice to retrain the MS-HBM model with a different dataset (n=75) that is comparable to ours. It includes 2 runs of movie-viewing and 2 runs of resting state (~23 minutes of data in total). I treated each run as a separate session. 

I wanted to check whether the 12 and 17 network parcellations that I get look as expected (image attached). I expected the network assignments to correspond a bit more with the provided 17 network definition and that there would be more symmetry between the hemispheres. Any thoughts or ideas about what might be happening here?

Thank you!
Melissa
network_parcellations.png

Thomas Yeo

unread,
Aug 18, 2025, 9:34:27 PM8/18/25
to Melissa Thye, CBIG users
Hi Melissa,

It does look weird. For example, you seem to have separate visual networks on the left and right hemispheres.

Can you also try applying our pretrained MS-HBM model to the 2-resting-state runs? If that looks weird, then there must be some preprocessing issue or the input was specified wrongly to MS-HBM.

Thanks,
Thomas

Reply all
Reply to author
Forward
0 new messages