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)
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])
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)
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)