%matplotlib widget
import matplotlib.pyplot as plt
import numpy
from tvb.simulator.lab import *
Region-level simulation of BOLD data, with stimulus.
conn = connectivity.Connectivity.from_file()
# configure stimulus spatial pattern
weighting = numpy.zeros((76, ))
weighting[[0, 7, 13, 33, 42]] = numpy.array([2.0 ** -2, 2.0 ** -3, 2.0 ** -4, 2.0 ** -5, 2.0 ** -6])
# temporal profile
eqn_t = equations.Gaussian()
eqn_t.parameters["midpoint"] = 25000.0
eqn_t.parameters["sigma"] = 2000.0
stimulus = patterns.StimuliRegion(temporal=eqn_t,
connectivity=conn,
weight=weighting)
sim = simulator.Simulator(
model=models.Generic2dOscillator(a=numpy.array([0.5])),
connectivity=conn,
coupling=coupling.Linear(a=numpy.array([0.0126])),
integrator=integrators.HeunDeterministic(dt=0.5),
monitors=(
monitors.TemporalAverage(period=1.0),
monitors.Bold(period=500),
monitors.ProgressLogger(period=5e3),
),
stimulus=stimulus,
simulation_length=60e3, # 1 minute simulation
).configure()
(tavg_time, tavg_data), (bold_time, bold_data), _ = sim.run()
plot_pattern(sim.stimulus)
plt.figure()
plt.subplot(211)
plt.plot(tavg_time, tavg_data[:, 0, :, 0])
plt.ylabel("Temporal average")
plt.subplot(212)
plt.plot(bold_time, bold_data[:, 0, :, 0])
plt.ylabel("BOLD")
plt.xlabel('Time (ms)')