def test_nonlinear(self): sm = SimModel() f = lambda x: x nl1 = Direct(1, 1, f) nl2 = Direct(2, 2, f) sm.nonlinearity(nl1) self.assertEqual(len(sm.nonlinearities), 1) sm.nonlinearity(nl1) self.assertEqual(len(sm.nonlinearities), 1) # Already in there sm.nonlinearity(nl2) self.assertEqual(len(sm.nonlinearities), 2) sm.nonlinearity(Direct(1, 1, f)) # Same params as nl1, but different self.assertEqual(len(sm.nonlinearities), 3)
def test_simple_direct_mode(): m = SimModel() one, steps, simtime = setup_simtime(m) sig = m.signal() pop = m.nonlinearity(Direct(n_in=1, n_out=1, fn=np.sin)) m.encoder(simtime, pop, weights=[[1.0]]) m.decoder(pop, sig, weights=[[1.0]]) m.transform(1.0, sig, sig) sim = Simulator(m) for i in range(5): sim.step() if i: assert sim.signals[sig] == np.sin(sim.signals[simtime] - 0.001)