surprisingly low correlation between SC and FC after simulations

116 views
Skip to first unread message

raymon X

unread,
Aug 4, 2020, 10:59:38 AM8/4/20
to TVB Users
Hey,

so I'm trying to generate artificial resting state fMRI data using tVB. I followed tutorials from the docs and ended up with something like this. I have some default model of neuronal activity:

model = models.Generic2dOscillator()

I take the default structural connectivity and normalize the weights:

conn = connectivity.Connectivity.from_file()
conn.weights = conn.scaled_weights(mode='tract')

Then I record BOLD signals per region:

sim = simulator.Simulator(
    model=model,
    connectivity=conn,                     
    coupling=coupling.Linear(a=numpy.array([6e-2])),
    simulation_length=5e4,
    integrator=integrators.HeunStochastic(
        dt=2 ** -4,
        noise=noise.Additive(nsig=numpy.array([0.001]))),
    monitors=(
        monitors.TemporalAverage(period=1.0),
        monitors.Bold(period=500.0)
    )
)
sim.configure()
(tavg_time, tavg_data), (bold_time, bold_data), _ = sim.run()

The signal looks imho okay for resting state:

Screenshot 2020-08-04 at 15.28.06.png


To avoid initialization effect I remove also first 10 data points. I'm left with 90, I can now compute the functional connectivity using simple pearson correlation:

np.corrcoef(bold_data[10:,0,:,0].T)

Screenshot 2020-08-04 at 15.25.03.png

I was a bit surprise to see that functional connectivity is so different than structural connectivity plot and it looks so random... Why is that the case? Am I doing something wrong here?

I expected to see more network-like structure on the left handside of above plot. I tried various values of linear coupling (high 0.1 and low 1e-4) and every time I get similar plot.


Julie Courtiol

unread,
Aug 4, 2020, 11:51:31 AM8/4/20
to tvb-...@googlegroups.com
Hi Raymon,

Bold signal being on a slow time scale, you need to use a longer simulation length. 


It was demonstrated that resting-state emerges at the edge of criticality, so you have to modify the bifurcation parameter a of the model, in particular at a=1.74 (this is the critical point). A brief investigation of the global coupling parameter will give you the FC with a higher correlation value with the SC.

Hope that helps!

Best, Julie


--
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 on the web visit https://groups.google.com/d/msgid/tvb-users/149611cb-4ba1-4d49-b144-cdd140d65bc6o%40googlegroups.com.


--
---
Best regards,

Julie


raym...@gmail.com

unread,
Aug 26, 2020, 11:20:10 AM8/26/20
to TVB Users
Hey Julie, thank you for your answer. This helped for Generic Oscillator, but your answer inspired me to check how this BOLD generation would work with Reduced W&W model from Deco's paper you mentioned: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3718368/pdf/zns11239.pdf. And here again to my surprise the correlation was pretty low, like 10% where in their paper they report it to be around 40% near bifurcation point. I noticed that TVB doesn't have G parameter as in their equations so I introduced it and set ~ 2.4 as in the paper, but still can't reproduce their results. Here are my settings:

model = ReducedWongWangWithG(w=0.9, J_N=0.2609, G=2.5) # my modified model with G as in eq (8) from Deco's paper
sim = simulator.Simulator(
    model=model,
    connectivity=conn,                     
    coupling=coupling.Linear(),
    simulation_length=3e5,
    integrator=integrators.HeunStochastic(
        dt=2 ** -2,
        noise=noise.Additive(nsig=numpy.array([0.0001]))),
    monitors=(
        monitors.Bold(period=500.0),
        monitors.ProgressLogger(period=5e3)
    )
)
sim.configure()


Any ideas what could go wrong this time? G = 2.5 is near critical point as it says from the paper...

Screenshot 2020-08-26 at 16.17.41.png

Julie Courtiol

unread,
Aug 26, 2020, 11:47:20 AM8/26/20
to tvb-...@googlegroups.com
Hi Raymon,

The coupling is introduced in the equations via the coupling function. In Deco et al. (2013), this function is added on the variable x. See lines 43 or 171 in the script (link below) of TVB code. The coupling is noted c_0.  


In that paper there is a little trick if I remember correctly. You need to put the initial conditions at 0.001 in the simulator:

>> sim.initial_conditions = (0.001)*np.ones((1, 1, nregions, 1))


Best, Julie
---
Best regards,

Julie Courtiol





WOODMAN Michael

unread,
Aug 26, 2020, 3:24:41 PM8/26/20
to tvb-...@googlegroups.com

hi


There is a lot of fine print in these papers, beyond initial conditions.  For example, there is frequently an averaged connectome being used, which boosts the results strongly.  The FC correlations are being z scored, etc.  All of these have to been applied in order to make a proper comparison.


By contrast, the default connectome in TVB is a tracer study, and it does not produce high correlations as easily as this paper makes it look.  This is neither positive or negative: they are just different data and methods, and what one should focus on is the sensitivity of this empirical-simulated FC relation with respect to your parameters of interest.


cheers,


Marmaduke Woodman, TVB Engineer, INS AMU; +33 4 91 32 42 38 +33 7 67 77 84 72


From: tvb-...@googlegroups.com <tvb-...@googlegroups.com> on behalf of Julie Courtiol <courtio...@gmail.com>
Sent: Wednesday, August 26, 2020 5:47:04 PM
To: tvb-...@googlegroups.com
Subject: Re: [TVB] surprisingly low correlation between SC and FC after simulations
 

John Griffiths

unread,
Aug 26, 2020, 3:38:38 PM8/26/20
to TVB Users

Dear Raymon and Julie, 

I recently included an updated version of the tutorial originally created by Julie with contributions from myself and others - 

see the 'modelling_resting_state.ipynb' notebook


( this runs conveniently on google colab )


Raymon - you have probably seen some version of this before, but I thought I would add here in case you haven't. 

The issue you describe re: the relatively low sim/emp FC correlation is also the case in this implementation. 
It maxes at R~0.3, where are in the Deco et al. 2013 paper (and the associated matlab code), the value is more like ~0.6. 

I would be delighted if one of you two (Raymon/Julie), or anyone else, can figure out what's missed in the implementation here to reproduce Deco's results more exactly. 

raym...@gmail.com

unread,
Aug 27, 2020, 5:51:29 PM8/27/20
to TVB Users
Thank you All for the answers! This gives me something to think about.

@Marmaduke, yeah I assumed that they might do some tricks in Deco's work, but even visually my FC with W&W model looked disappointing with similar simulation settings. I'd be happy even with 30% corrs, I'm getting not more than 10% now.

@John, thanks for these notebooks. Look like a really useful resource. I'll let you know if I find some improvement.

@Julie, isn't c_0 in the code you mentioned just vector from SC (conn.weights) for a given node? This would be equivalent to C_ij from eq. (8) from Deco's at al. (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3718368/pdf/zns11239.pdf, see page 11242 ). This is multiplied by G in their case, which is missing in the code.

raym...@gmail.com

unread,
Aug 28, 2020, 11:41:05 AM8/28/20
to TVB Users
Sorry, today after having a detailed look at John's notebooks I figured that this G scaling can be achieved by: coupling.Scaling, instead of modifying the model's dfun.

Also, as Marmaduke suggested mere replacing default tvb connectivity by HagmannDeco66 connectivity boosted the results. The simulated FC matrices look decent at least now ;)

JIAQI ZHANG

unread,
Oct 3, 2021, 11:25:21 AMOct 3
to TVB Users
Hi! I'm new to TVB and I have a really easy question. How can I decide which parameter is the critical point and get the value of critical point of different models in TVB?

Julie Courtiol

unread,
Oct 8, 2021, 4:43:48 AMOct 8
to tvb-...@googlegroups.com
Hi,

A parameter is not a critical point. A critical point is the values of a parameter where the system changes his behavior (i.e. bifurcation point).

I think here you are looking for which control parameters to use to find the critical point. Each model has specific control parameters. I advise you to read the published literature about the model you want to study, in particular Sanz-Leon et al. 2015 that gathers a large range of models implemented in TVB.

Best,

Dr. Julie Courtiol
Scientific Lab Manager
Brain Simulation Section 
Charité Universitätsmedizin Berlin

Le 3 oct. 2021 à 17:25, JIAQI ZHANG <smile.z...@gmail.com> a écrit :

Hi! I'm new to TVB and I have a really easy question. How can I decide which parameter is the critical point and get the value of critical point of different models in TVB?

JIAQI ZHANG

unread,
Oct 8, 2021, 9:45:56 AMOct 8
to TVB Users
Thanks, Juile! Your reply helps me a lot!
Reply all
Reply to author
Forward
0 new messages