コード例 #1
0
    def test_network_deterministic_delay(self):
        dt = 0.01
        G = 0.8
        speed = 2.

        sim = simulator.Simulator(
            model=models.MontbrioPazoRoxin(),
            coupling=coupling.Scaling(a=np.array([G])),
            connectivity=self._random_network(speed=speed),
            conduction_speed=speed,
            monitors=[monitors.Raw()],
            integrator=integrators.HeunStochastic(
                dt=dt,
                noise=noise.Additive(nsig=np.array([0.0, 0.0]),
                                     noise_seed=42))).configure()

        (pdq_t, pdq_d), = NbMPRBackend().run_sim(sim,
                                                 nstep=1,
                                                 compatibility_mode=True)
        r_pdq, V_pdq = pdq_d[0, :, :, 0]

        (raw_t, raw_d), = sim.run(simulation_length=1)
        r_tvb, V_tvb = raw_d[0, :, :, 0]

        np.testing.assert_allclose(r_tvb, r_pdq, rtol=1e-4)
        np.testing.assert_allclose(V_tvb, V_pdq, rtol=1e-4)
コード例 #2
0
    def _get_run_sim(self, print_source=False):
        template = '<%include file="nb-montbrio.py.mako"/>'
        content = dict(foo='bar')

        return NbMPRBackend().build_py_func(template,
                                            content,
                                            name='run_sim',
                                            print_source=print_source)
コード例 #3
0
    def test_tavg_chunking(self):
        dt = 0.01
        G = 0.1
        speed = 2.

        sim = simulator.Simulator(
            model=models.MontbrioPazoRoxin(),
            coupling=coupling.Scaling(a=np.array([G])),
            connectivity=self._random_network(speed=speed),
            conduction_speed=speed,
            monitors=[monitors.TemporalAverage(period=1)],
            integrator=integrators.HeunStochastic(
                dt=dt,
                noise=noise.Additive(nsig=np.array([0.0, 0.0]),
                                     noise_seed=42))).configure()

        (pdq_t, pdq_d), = NbMPRBackend().run_sim(sim,
                                                 nstep=2000,
                                                 chunksize=2000,
                                                 compatibility_mode=True)
        r_pdq = pdq_d[:, 0, :, 0]
        V_pdq = pdq_d[:, 1, :, 0]
        (pdq_chu_t,
         pdq_chu_d), = NbMPRBackend().run_sim(sim,
                                              nstep=2000,
                                              chunksize=500,
                                              compatibility_mode=True)
        r_pdq_chu = pdq_d[:, 0, :, 0]
        V_pdq_chu = pdq_d[:, 1, :, 0]

        (raw_t, raw_d), = sim.run(simulation_length=20)
        r_tvb = raw_d[:, 0, :, 0]
        V_tvb = raw_d[:, 1, :, 0]

        np.testing.assert_allclose(pdq_t, raw_t)
        np.testing.assert_allclose(pdq_chu_t, raw_t)

        np.testing.assert_allclose(r_pdq, r_tvb, rtol=1e-3)
        np.testing.assert_allclose(V_pdq, V_tvb, rtol=1e-3)
        # think a bit about the tolerances...  TVB stores in floats, so that
        # can accumulate. Might be a good idea to test agains history with
        # double typed buffer.
        np.testing.assert_allclose(r_pdq_chu, r_tvb, rtol=1e-3)
        np.testing.assert_allclose(V_pdq_chu, V_tvb, rtol=1e-3)
コード例 #4
0
    def test_local_stochastic(self):
        # run_sim = self._get_run_sim(print_source=True)
        dt = 0.01
        G = 0.

        sim = simulator.Simulator(model=models.MontbrioPazoRoxin(),
                                  coupling=coupling.Scaling(a=np.array([G])),
                                  connectivity=self._random_network(),
                                  conduction_speed=np.inf,
                                  monitors=[monitors.Raw()],
                                  integrator=integrators.HeunStochastic(
                                      dt=dt,
                                      noise=noise.Additive(
                                          nsig=np.array([0.01, 0.02]),
                                          noise_seed=42))).configure()

        sim_det = simulator.Simulator(
            model=models.MontbrioPazoRoxin(),
            coupling=coupling.Scaling(a=np.array([G])),
            connectivity=self._random_network(),
            conduction_speed=np.inf,
            monitors=[monitors.Raw()],
            integrator=integrators.HeunDeterministic(dt=dt, )).configure()

        (pdq_t, pdq_d), = NbMPRBackend().run_sim(sim, nstep=200)

        (raw_t, raw_d), = sim.run(simulation_length=1)
        (raw_t_det, raw_d_det), = sim_det.run(simulation_length=1)
        r_tvb, V_tvb = raw_d[0, :, :, 0]
        r_tvb_det, V_tvb_det = raw_d_det[0, :, :, 0]
        r_pdq, V_pdq = pdq_d[0, :, :, 0]

        np.testing.assert_allclose(
            np.mean(r_tvb_det - r_tvb),
            np.mean(r_tvb_det - r_pdq),
            atol=1e-2  # zero mean doesn't play well with rtol
        )
        np.testing.assert_allclose(np.mean(V_tvb_det - V_tvb),
                                   np.mean(V_tvb_det - V_pdq),
                                   atol=1e-2)
        np.testing.assert_allclose(np.std(r_tvb_det - r_tvb),
                                   np.std(r_tvb_det - r_pdq),
                                   rtol=1e-2)
        np.testing.assert_allclose(np.std(V_tvb_det - V_tvb),
                                   np.std(V_tvb_det - V_pdq),
                                   rtol=1e-2)
コード例 #5
0
    def test_local_deterministic(self):
        dt = 0.01
        G = 0.

        sim = simulator.Simulator(
            model=models.MontbrioPazoRoxin(),
            coupling=coupling.Scaling(a=np.array([G])),
            connectivity=self._random_network(),
            conduction_speed=np.inf,
            monitors=[monitors.Raw()],
            integrator=integrators.HeunStochastic(  # matching integrator
                dt=dt,
                noise=noise.Additive(nsig=np.array([0.0, 0.0]),
                                     noise_seed=42))).configure()

        (pdq_t, pdq_d), = NbMPRBackend().run_sim(sim, nstep=1)
        (raw_t, raw_d), = sim.run(simulation_length=1)

        np.testing.assert_allclose(raw_d[0, :], pdq_d[0, :], rtol=1e-5)
コード例 #6
0
ファイル: nbmprperf_test.py プロジェクト: liadomide/tvb-root
def test_nb_pdq_100ms(benchmark):
    sim = make_sim(100.0)
    run_sim = NbMPRBackend().build_py_func(
        '<%include file="nb-montbrio.py.mako"/>', {}, name='run_sim')
    nstep = int(sim.simulation_length / sim.integrator.dt)
    benchmark(lambda : run_sim(sim, nstep))