コード例 #1
0
 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')
コード例 #2
0
 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()
コード例 #3
0
    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,
                         )
コード例 #4
0
 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)
コード例 #5
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'
コード例 #6
0
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)
コード例 #7
0
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
コード例 #8
0
    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())
コード例 #9
0
    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'
コード例 #10
0
    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
コード例 #11
0
    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