def setUp(self): self.original_output_path = normalize_path.prefix normalize_path.prefix = tempfile.mkdtemp() self.sim = Simulation(register=True,name="testplotfilesaver") self.sim['A'] = GeneratorSheet(nominal_density=2) self.sim['B'] = CFSheet(nominal_density=2) self.sim.connect('A','B',connection_type=CFProjection,name='Afferent')
def setUp(self): """ Create a new Simulation as topo.sim (so this test isn't affected by changes to topo.sim by other tests). """ Simulation(register=True, name=SIM_NAME) self.original_output_path = normalize_path.prefix normalize_path.prefix = tempfile.mkdtemp()
def setUp(self): self.sim = Simulation() self.sim['Dest'] = CFSheet(nominal_density=10,nominal_bounds=BoundingBox(radius=0.5)) self.sim['Src'] = CFSheet(nominal_density=10,nominal_bounds=BoundingBox(radius=0.5)) self.sim.connect('Src','Dest', connection_type = ResizableCFProjection, )
def test_state_stack(self): s = Simulation() s['pulse1'] = PulseGenerator(period=1) s['pulse2'] = PulseGenerator(period=3) s['sum_unit'] = SumUnit() s.connect('pulse1', 'sum_unit', delay=1) s.connect('pulse2', 'sum_unit', delay=1) s.run(1.0) s.state_push() self.assertEqual(len(s._events_stack), 1) s.state_pop() self.assertEqual(len(s._events_stack), 0)
def test_event_copy(self): """ Test to make sure that EPConnectionEvent copies the underlying data on construction. """ s = Simulation() data = array([4, 3]) epc = EPConnection() se = EPConnectionEvent(1, epc, data) se.data[0] = 5 assert data[0] != se.data[0], 'Matrices should be different' se2 = copy.copy(se) assert se is not se2, 'Objects are the same'
def _initialize(): """Make a simple simulation.""" from topo.base.simulation import Simulation from topo.base.cf import CFSheet, CFProjection from topo.sheet import GeneratorSheet sim = Simulation(register=True, name="test pattern tester") sim['GS'] = GeneratorSheet(nominal_density=2) sim['GS2'] = GeneratorSheet(nominal_density=2) sim['S'] = CFSheet(nominal_density=2) sim['S2'] = CFSheet(nominal_density=2) sim.connect('GS', 'S', connection_type=CFProjection, delay=0.05) sim.connect('GS', 'S2', connection_type=CFProjection, delay=0.05) sim.connect('GS2', 'S2', connection_type=CFProjection, delay=0.05)
def new_simulation(name=None, register=True): from topo.base.simulation import Simulation from topo.base.cf import CFSheet, CFProjection from topo.sheet import GeneratorSheet from topo.base.boundingregion import BoundingBox sim = Simulation(register=register, name=name) b = BoundingBox(radius=0.5) sim['GS'] = GeneratorSheet(nominal_density=2, nominal_bounds=b) sim['GS2'] = GeneratorSheet(nominal_density=2, nominal_bounds=b) sim['S'] = CFSheet(nominal_density=2, nominal_bounds=b) sim['S2'] = CFSheet(nominal_density=2, nominal_bounds=b) sim.connect('GS', 'S', connection_type=CFProjection, delay=0.05) sim.connect('GS', 'S2', connection_type=CFProjection, delay=0.05) sim.connect('GS2', 'S2', connection_type=CFProjection, delay=0.05) return sim
def setUp(self): """ Create a CFSheet ('V1') connected to a GeneratorSheet ('Retina'). """ self.s = Simulation() self.s['Retina'] = GeneratorSheet(nominal_density=4.0) self.s['V1'] = CFSheet(nominal_density=4.0) self.s['V2'] = CFSheet(nominal_density=4.0) self.s.connect('Retina', 'V1', delay=0.5, connection_type=CFProjection, name='RtoV1', learning_fn=CFPLF_Hebbian()) self.s.connect('Retina', 'V2', delay=0.5, connection_type=CFProjection, name='RtoV2', learning_fn=CFPLF_Hebbian())
def test_get_objects(self): s = Simulation() s['pulse1'] = PulseGenerator(period=1) s['pulse2'] = PulseGenerator(period=3) s['sum_unit'] = SumUnit() n1 = s['pulse1'].name n2 = s['pulse2'].name s.connect('pulse1', 'sum_unit', delay=1) s.connect('pulse2', 'sum_unit', delay=1) t1 = s.objects() e1 = [ ep for ep in t1.values() if isinstance(ep, PulseGenerator) and ep.name == n1 ] t2 = s.objects() e2 = [ ep for ep in t2.values() if isinstance(ep, PulseGenerator) and ep.name == n2 ] assert e1.pop().name == n1, 'Object names do not match' assert e2.pop().name == n2, 'Object names do not match'
def test_event_insert(self): s = Simulation() e1 = Event(1) e1a = Event(1) e2 = Event(2) e2a = Event(2) s.enqueue_event(e1) s.enqueue_event(e2) s.enqueue_event(e2a) s.enqueue_event(e1a) s.enqueue_event(Event(0)) assert len( s.events) == 5, 'Event queue has %d events, should have 5.' % len( s.events) assert s.events[1] == e1 assert s.events[2] == e1a assert s.events[3] == e2 assert s.events[4] == e2a
param.main.warning('gmpy.mpq not available; using slower fixedpoint.FixedPoint for simulation time.') _time_type = fixedpoint_time_type # Provide a fake gmpy.mpq (to allow e.g. pickled test data to be # loaded). # CEBALERT: can we move this into whatever test needs it? I guess # it also has to be here to allow snapshots saved using gmpy time # type to open on systems where gmpy is not available. from topo.misc.util import gmpyImporter import sys sys.meta_path.append(gmpyImporter()) param.Dynamic.time_fn(val=0.0, time_type=_time_type) param.Dynamic.time_dependent = True # Global time_fn (param.Dynamic.time_fn) accessible via topo.sim.time sim = Simulation() # numbergen used to be part of topo; import it there for backwards compatibility # and set the time function to be topo.sim.time() import sys,numbergen sys.modules['topo.numbergen']=numbergen sys.modules['topo.numbergen.basic']=numbergen # imagen used to be part of topo; import its files at their former locations # for backwards compatibility and set the time function to be topo.sim.time() import imagen as pattern import imagen.random, imagen.image, imagen.patterncoordinator sys.modules['topo.base.boundingregion']=pattern.boundingregion sys.modules['topo.base.sheetcoords']=pattern.sheetcoords sys.modules['topo.base.patterngenerator']=pattern.patterngenerator sys.modules['topo.misc.patternfn']=pattern.patternfn