Example #1
0
    def test_join(self):
        joined = join(self.sin_spline, self.exp_spline)
        evaluation = joined.get_state(self.times)

        evaluation = joined.get_state(self.times)
        control = np.vstack((np.sin(self.times), np.exp(self.times))).T
        control_2 = np.hstack((self.sin_evaluation, self.exp_evaluation))

        self.has_matched_times(joined)
        assert_allclose(control, control_2, atol=0.01)
        assert_allclose(evaluation, control, atol=0.01)
Example #2
0
 def _init_noise_inputs(self, backend):
     """
     Build noise / stimulus input to the model.
     """
     if backend == "jitcdde":
         init_func = lambda noise: noise.as_cubic_splines(
             duration=self.params["duration"],
             dt=self.params["sampling_dt"])
         join_func = lambda x: join(*x)
     elif backend == "numba":
         init_func = lambda noise: noise.as_array(
             duration=self.params["duration"], dt=self.params["dt"])
         join_func = lambda x: np.hstack(x).T
     else:
         raise ValueError(f"Unknown backend {backend}")
     # initialise each noise / stimulation process and join
     return join_func(
         [init_func(noise) for noise in self.model_instance.noise_input])
Example #3
0
 def test_run_node(self):
     fhn_node = FitzHughNagumoNode()
     model = MultiModel.init_node(fhn_node)
     model.params["sampling_dt"] = 10.0
     # run MultiModel
     model.run()
     # run model instance
     inst_res = fhn_node.run(
         duration=model.params["duration"],
         dt=model.params["sampling_dt"],
         noise_input=join(*[
             noise.as_cubic_splines(model.params["duration"],
                                    model.params["sampling_dt"])
             for noise in fhn_node.noise_input
         ]),
         backend=model.params["backend"],
     )
     for out_var in model.output_vars:
         np.testing.assert_equal(model[out_var], inst_res[out_var].values.T)
Example #4
0
 def test_run_network(self):
     DELAY = 13.0
     fhn_net = FitzHughNagumoNetwork(np.random.rand(2, 2),
                                     np.array([[0.0, DELAY], [DELAY, 0.0]]))
     model = MultiModel(fhn_net)
     model.params["sampling_dt"] = 10.0
     # run MultiModel
     model.run()
     # run model instance
     inst_res = fhn_net.run(
         duration=model.params["duration"],
         dt=model.params["sampling_dt"],
         noise_input=join(*[
             noise.as_cubic_splines(model.params["duration"],
                                    model.params["sampling_dt"])
             for noise in fhn_net.noise_input
         ]),
         backend=model.params["backend"],
     )
     for out_var in model.output_vars:
         np.testing.assert_equal(model[out_var], inst_res[out_var].values.T)