Non physiological-like FC: low emFC-simFC correlation

42 views
Skip to first unread message

Alice Pierini

unread,
Jan 28, 2025, 11:52:42 AMJan 28
to TVB Users
Hello, 

my goal is to identify optimal parameters of ReducedWongWang to maximize the correlation between the simulated functional connectivity and the empirical one obtained from the BOLD signal.
Although I have tried different parcellations (HCPMMP1, AAL3, Desikan-Killiany) and different methods to scale the input SC matrix (I did tractography with MRtrix), the FC matrices I get in output do not show physiological patterns, for every parameter configuration: they are all homogeneously characterized by low connectivity values. As a result, the correlation between emFC and simFC is very very low.
I attach some examples of the FC i get (plot_FC_upper). 
I configured the simulator as follows:

def run_simulation(args):

    row, n_row, n_exec, folder, scale, parcel, subj = args

    wi, JNi, ai, ri, dti, sim_lengthi = row

    results_file = os.path.join(folder, f"bold_" + subj + "_" + f"{str(n_row).zfill(3)}_exec_{n_exec}")


    oscillator = models.ReducedWongWang(w=np.array([wi]), J_N=np.array([JNi]))

    white_matter = connectivity.Connectivity.from_file(os.path.join(r'C:\Users\BrainMiLab\Documents\Alice\MLPO', subj, subj + "_SC_" + scale + "_" + parcel + ".zip"))

    white_matter_coupling = coupling.Linear(a=np.array([ai]))

    hiss = noise.Additive(nsig=np.array([ri]))

    eulerint = integrators.HeunStochastic(dt=dti, noise=hiss)

    b_period = 2500

    what_to_watch = [monitors.Bold(period=b_period, hrf_kernel=equations.Gamma())]

    

    sim = simulator.Simulator(

        model=oscillator,

        connectivity=white_matter,

        coupling=white_matter_coupling,

        integrator=eulerint,

        monitors=what_to_watch,

    ).configure()

    

    bold_data = []

    for s in sim(simulation_length=sim_lengthi):

        if s is not None:

            bold_data.append(s[0][1])

    

    np.save(results_file, np.array(bold_data, dtype=np.float64))

    

    return f"Simulation {n_row} (Exec {n_exec}) completed."


Do you have any idea why this happens, and possibly how to fix it?

The curious thing is that the only case in which I get a simulated FC that has a physiological-like pattern is when I also consider in the analysis the initial BOLD transient (plot_FC_upper_transient), which I would normally eliminate (but I still get very low correlation values).

I had thought that the cause of the matrix being so evenly distributed over low values might have something to do with the amount of noise provided as input to the simulation, but I have seen that it is a phenomenon that is repeated for very different values of noise (from 1e-7 to 10).

Could it be due to the simulator's initial conditions? For now I am not setting them and letting them be initialized randomly.

Thanks a lot!
plot_FC_upper_sim_023_exec_3.jpg
plot_FC_upper_transient_sim_035.jpg
plot_FC_upper_sim_030_exec_3.jpg

WOODMAN Michael

unread,
Jan 29, 2025, 5:19:25 AMJan 29
to tvb-...@googlegroups.com
Hi

The RWW has one or two fixed points depending on the dynamical regime, depending on parameters and connectivity. If only on fixed point is present and connectivity scaling is too small or too large, then fluctuations are noise driven resulting in figures like the one you show.  

Given that we don’t have your dataset or full script, I would suggest starting without the BOLD monitor and do short simulations to tune the different parameters until you find a regime where the up and down states are both present with switching driven by small amount of noise.  Once you find this regime, try the BOLD monitor again and check the FC correlations. 

Cheers
Marmaduke

On 28 Jan 2025, at 17:52, Alice Pierini <alice.p...@gmail.com> wrote:



Ce mail provient de l'extérieur, restons vigilants

--
You received this message because you are subscribed to the Google Groups "TVB Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tvb-users+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/tvb-users/6542c084-571d-4533-92c5-dd1f756d6d72n%40googlegroups.com.
<plot_FC_upper_sim_023_exec_3.jpg>
<plot_FC_upper_transient_sim_035.jpg>
<plot_FC_upper_sim_030_exec_3.jpg>

Alice Pierini

unread,
Jan 29, 2025, 6:04:32 AMJan 29
to TVB Users
Thanks a lot for the reply!

By suggesting to start without the BOLD monitor, do you mean to just look at the TemporalAverage and/or the Raw monitor? How do I assess the regime where the up and down states are both present? Just by visual inspection or should i inspect the phase plane?
I attach my notebook with the full script. 

I also saw the skewed_fc notebook that seems to address a similar problem to mine (https://gitlab.ebrains.eu/tvb/tvb-root/-/blob/da0e65afe4cd0462d84feffcb2b0950933d28945/tvb_documentation/demos/skewed_fc.ipynb). Would you suggest also to try to switch to an oscillator model as the Kuramoto? By seeing this notebook i thought my problem could be the intrinsic model I chose rather than the parameters.

Thanks again for the help,
Alice

Multiprocessing parameter sweep.html

Spase Petkoski

unread,
Jan 29, 2025, 8:06:58 AMJan 29
to tvb-...@googlegroups.com
Hello Alice,

Please also check the notebooks in the tutorial below (in an older TVB version though) which address the working point of the WW model as per Melozzi et al. PNAS 2019.

I hope this helps.
Best regards,
Spase

Alice Pierini

unread,
Jan 29, 2025, 12:05:43 PMJan 29
to TVB Users
Thank you so much for the very helpful answer!

I was also wondering if and how much the range and the variability of the values assumed by the input SC would impact on results. In my case, as in the attached jpeg, I use a matrix scaled by the inverse of the volume nodes (I preprocessed data with MRtrix), which presents values in the range [0 40]. 
Even when normalizing it, however, most of the values assumed by the matrix turn out to be very low. Could it be that this affects the model's ability to simulate brain activity as well? I have seen that some of the default TVB example matrixes have been "normalized" to assume just 4 different values. 

Thank you again,
Best regards,
Alice

SC_plot.jpg

Spase Petkoski

unread,
Jan 30, 2025, 6:27:43 AMJan 30
to tvb-...@googlegroups.com
Hello again,

The statistics of the SC matrix could definitely impact results. To make it bit smoother maybe you can try using log(1+weights) before normalizing. However even for your current SC you should be able to find working points (G and the local parameter w as shown in the tutorial) so that to get wither a good FCD dynamics or a decent FC fit, or maybe both. 

btw the nromalized 4 value connectome is probably based on the CoCoMac connectome.  

Best regards,
Spase

Reply all
Reply to author
Forward
0 new messages