コード例 #1
0
    def test_pynn_basic(self):
        pass
        """
        TODO figure out how to take machine name as a parameter
        """
        print "test_pynn_basic setup....."
        pynn.setup(**{'machine': 'spinn-7'})

        n_atoms = 10

        proj1_params = {
            'source': None,
            'delays': 1,
            'weights': 1,
            'target': 'excitatory'
        }
        proj2_params = {
            'allow_self_connections': True,
            'delays': 2,
            'p_connect': 0.1,
            'weights': 2,
            'source': None,
            'target': None
        }

        cell_params = {
            'tau_m': 64,
            'v_init': -75,
            'i_offset': 0,
            'v_rest': -75,
            'v_reset': -95,
            'v_thresh': -40,
            'tau_syn_E': 15,
            'tau_syn_I': 15,
            'tau_refrac': 10
        }

        pop1 = pynn.Population(n_atoms,
                               pynn.IF_curr_exp,
                               cell_params,
                               label='pop1')
        pop2 = pynn.Population(n_atoms * 2,
                               pynn.IF_curr_exp,
                               cell_params,
                               label='pop2')

        proj1 = pynn.Projection(pop1,
                                pop2,
                                pynn.OneToOneConnector(weights=1, delays=1),
                                target='excitatory')
        proj2 = pynn.Projection(
            pop1, pop2,
            pynn.FixedProbabilityConnector(weights=2, delays=2, p_connect=.1))

        pynn.controller.map_model()  # at this stage the model is mapped
        print "checking vertices..."
        self.assertEqual(pop1.vertex.parameters, cell_params)
        self.assertEqual(pynn.controller.dao.vertices[1].parameters,
                         cell_params)

        self.assertEqual(pop1.vertex.model,
                         pacman103.front.pynn.models.IF_curr_exp)
        self.assertEqual(pynn.controller.dao.vertices[0].label, "pop1")
        self.assertEqual(pynn.controller.dao.vertices[1].label, "pop2")

        self.assertEqual(pop1.vertex.atoms, n_atoms)
        self.assertEqual(pynn.controller.dao.vertices[1].atoms, n_atoms * 2)

        print "checking edges..."
        self.assertEqual(pynn.controller.dao.edges[0].model,
                         pacman103.front.pynn.connectors.OneToOneConnector)
        self.assertEqual(
            proj2.edge.model,
            pacman103.front.pynn.connectors.FixedProbabilityConnector)

        self.assertEqual(proj1.edge.parameters, proj1_params)
        self.assertEqual(pynn.controller.dao.edges[1].parameters, proj2_params)

        # testing the mapping phase
        self.assertEqual(len(pynn.controller.dao.subedges), 2)
        self.assertEqual(len(pynn.controller.dao.subvertices), 2)

        self.assertEqual(len(pynn.controller.dao.routings), 2)

        #        pynn.run(100)
        pynn.end()
コード例 #2
0
delay = 17

loopConnections = list()
for i in range(0, nNeurons):
    singleConnection = (i, ((i + 1) % nNeurons), weight_to_spike, delay)
    loopConnections.append(singleConnection)

injectionConnection = [(0, 0, weight_to_spike, 1)]
spikeArray = {'spike_times': [[0]]}
populations.append(
    p.Population(nNeurons, p.IF_curr_exp, cell_params_lif, label='pop_1'))
populations.append(
    p.Population(1, p.SpikeSourceArray, spikeArray, label='inputSpikes_1'))

projections.append(
    p.Projection(populations[0], populations[0],
                 p.FromListConnector(loopConnections)))
projections.append(
    p.Projection(populations[1], populations[0],
                 p.FromListConnector(injectionConnection)))

populations[0].record_v()
populations[0].record_gsyn()
populations[0].record(visualiser_mode=modes.RASTER)

p.run(5000)

v = None
gsyn = None
spikes = None

v = populations[0].get_v(compatible_output=True)
コード例 #3
0
# Neuron populations
pre_pop = sim.Population(pop_size, model, cell_params)
post_pop = sim.Population(pop_size, model, cell_params)


# Stimulating populations
pre_stim = sim.Population(pop_size, sim.SpikeSourceArray, {'spike_times': [[i for i in range(0, sim_time, time_between_pairs)],]})
post_stim = sim.Population(pop_size, sim.SpikeSourceArray, {'spike_times': [[i for i in range(pairing_start_time, pairing_end_time, time_between_pairs)],]})

# +-------------------------------------------------------------------+
# | Creation of connections                                           |
# +-------------------------------------------------------------------+
# Connection type between noise poisson generator and excitatory populations
ee_connector = sim.OneToOneConnector(weights=2)

sim.Projection(pre_stim, pre_pop, ee_connector, target='excitatory')
sim.Projection(post_stim, post_pop, ee_connector, target='excitatory')

# Plastic Connections between pre_pop and post_pop
stdp_model = sim.STDPMechanism(
  timing_dependence = sim.SpikePairRule(tau_plus = 20.0, tau_minus = 50.0),
  weight_dependence = sim.AdditiveWeightDependence(w_min = 0.1, w_max = 1, A_plus=0.02, A_minus = 0.02)
)

prepostpro = sim.Projection(pre_pop, post_pop, sim.OneToOneConnector(weights=1.0), 
  synapse_dynamics = sim.SynapseDynamics(slow= stdp_model)
)

# Record spikes
pre_pop.record()
post_pop.record()
コード例 #4
0
#input_pol_2 = p.Population(128*128, p.ProxyNeuron, {'x_source':254, 'y_source':250}, label='input_pol2')
#input_pol_2.set_mapping_constraint({'x':1,'y':0})                   # this is where the sensor is going to be actually mapped in the NN

subsampled = p.Population(
    subsample_size * subsample_size,  # size
    p.IF_curr_exp,  # Neuron Type
    cell_params_subsample,  # Neuron Parameters
    label="Input")  # Label
subsampled.initialize('v', -75)

subsampled.set_mapping_constraint({'x': 0, 'y': 1})
#subsampled.record()     # sends spikes to the visualiser (use parameters = 32)

p1_up = p.Projection(input_pol_1_up,
                     subsampled,
                     p.FromListConnector(
                         retina_lib.subSamplerConnector2D(
                             128, subsample_size, .2, 1)),
                     label='subsampling projection')
p1_down = p.Projection(input_pol_1_down,
                       subsampled,
                       p.FromListConnector(
                           retina_lib.subSamplerConnector2D(
                               128, subsample_size, .2, 1)),
                       label='subsampling projection')
p2_up = p.Projection(input_pol_2_up,
                     subsampled,
                     p.FromListConnector(
                         retina_lib.subSamplerConnector2D(
                             128, subsample_size, .2, 1)),
                     label='subsampling projection')
p2_down = p.Projection(input_pol_2_down,
コード例 #5
0
                                'duration': simtime
                            },
                            label="expoisson")

# +-------------------------------------------------------------------+
# | Creation of connections                                           |
# +-------------------------------------------------------------------+

# Connection parameters
JEE = 3.

# Connection type between noise poisson generator and excitatory populations
ee_connector = sim.OneToOneConnector(weights=JEE * 0.05)

# Noise projections
sim.Projection(INoisePre, pre_pop, ee_connector, target='excitatory')
sim.Projection(INoisePost, post_pop, ee_connector, target='excitatory')

# Additional Inputs projections
for i in range(len(IAddPre)):
    sim.Projection(IAddPre[i], pre_pop, ee_connector, target='excitatory')
for i in range(len(IAddPost)):
    sim.Projection(IAddPost[i], post_pop, ee_connector, target='excitatory')

# Plastic Connections between pre_pop and post_pop
stdp_model = sim.STDPMechanism(
    timing_dependence=sim.SpikePairRule(tau_plus=20.,
                                        tau_minus=50.0,
                                        nearest=True),
    weight_dependence=sim.AdditiveWeightDependence(w_min=0,
                                                   w_max=0.9,
コード例 #6
0
#!/usr/bin/python
import pacman103.front.pynn as p
import numpy, pylab

#set up pacman103
p.setup(timestep=1.0, min_delay=1.0, max_delay=32.0)

#external stuff population requiremenets
connected_chip_coords = {'x': 0, 'y': 0}
virtual_chip_coords = {'x': 0, 'y': 5}
link = 4

populations = list()
projections = list()

populations.append(p.Population(1, p.SpikeSourcePoisson, {'rate': 10000}))

populations.append(
    p.Population(1,
                 p.RobotMotorControl, {
                     'virtual_chip_coords': virtual_chip_coords,
                     'connected_chip_coords': connected_chip_coords,
                     'connected_chip_edge': link
                 },
                 label='External motor control'))

projections.append(
    p.Projection(populations[0], populations[1], p.OneToOneConnector()))

p.run(10000)
コード例 #7
0
                                     rng=rng,
                                     boundaries=[0.1, 9.9],
                                     constrain='redraw')
inh_delay_distr = RandomDistribution('normal',
                                     parameters=[0.75, 0.375],
                                     rng=rng,
                                     boundaries=[0.1, 9.9],
                                     constrain='redraw')
delay_distr_recurrent = RandomDistribution('uniform', [2.0, 8.0], rng=rng)
weight_distr_ffwd = RandomDistribution('uniform', [0.5, 1.25], rng=rng)
weight_distr_recurrent = RandomDistribution('uniform', [0.1, 0.2], rng=rng)

projections.append(
    p.Projection(populations[stimulus],
                 populations[excit],
                 p.AllToAllConnector(weights=baseline_excit_weight,
                                     delays=1.0),
                 target='excitatory',
                 synapse_dynamics=p.SynapseDynamics(slow=stdp_model)))

projections.append(
    p.Projection(populations[teacher],
                 populations[excit],
                 p.OneToOneConnector(weights=weight_to_force_firing,
                                     delays=1.0),
                 target='excitatory'))
#projections.append(p.Projection(populations[stimulus], populations[inhib], p.FixedProbabilityConnector(p_connect=p_exc2inh, weights=baseline_excit_weight, delays=inh_delay_distr), target='excitatory'))

populations[stimulus].record(visualiser_mode=modes.RASTER)

#populations[inhib].record_v()
#populations[inhib].record(visualiser_mode=modes.RASTER)
コード例 #8
0
populations.append(
    p.Population(100, p.IF_curr_exp, cell_params_lif, label='pop_13'))
populations[12].set_mapping_constraint({'x': 0, 'y': 0})
populations.append(
    p.Population(100, p.IF_curr_exp, cell_params_lif, label='pop_14'))
populations[13].set_mapping_constraint({'x': 0, 'y': 0})
populations.append(
    p.Population(100, p.IF_curr_exp, cell_params_lif, label='pop_15'))
populations[14].set_mapping_constraint({'x': 0, 'y': 0})

populations.append(
    p.Population(100, p.IF_curr_exp, cell_params_lif, label='pop_16'))
populations[15].set_mapping_constraint({'x': 4, 'y': 3})

projections.append(
    p.Projection(populations[0], populations[15],
                 p.FromListConnector(injectionConnection)))
projections.append(
    p.Projection(populations[1], populations[15],
                 p.FromListConnector(injectionConnection)))
projections.append(
    p.Projection(populations[2], populations[15],
                 p.FromListConnector(injectionConnection)))
projections.append(
    p.Projection(populations[3], populations[15],
                 p.FromListConnector(injectionConnection)))
projections.append(
    p.Projection(populations[4], populations[15],
                 p.FromListConnector(injectionConnection)))
projections.append(
    p.Projection(populations[5], populations[15],
                 p.FromListConnector(injectionConnection)))
コード例 #9
0
                'tau_refrac'   : 100, 
                'i_offset'   : 1
                }

cell_params_lif = { 'tau_m'      : 32,
                'cm'        : 0.35,     # added to make PACMAN103 work
                'v_init'    : -80,
                'v_rest'     : -70,   
                'v_reset'    : -95,  
                'v_thresh'   : -55,
                'tau_syn_E'   : 5,
                'tau_syn_I'   : 10,
                'tau_refrac'   : 5,                 
                'i_offset'   : 0
                }

populations = list()
projections = list()

populations.append(p.Population(nNeurons, p.IF_curr_exp, cell_params_lif_in, label='pop_0'))

populations.append(p.Population(nNeurons, p.IF_curr_exp, cell_params_lif, label='pop_1'))  

projections.append(p.Projection(populations[0], populations[1], p.OneToOneConnector(weights=8, delays=16)))

populations[0].set_mapping_constraint({'x':7, 'y':7})
populations[1].set_mapping_constraint({'x':3, 'y':4})

p.run(3000)

コード例 #10
0
                    'connected_chip_coords': connected_chip_coords,
                    'connected_chip_edge': link,
                    'polarity': p.ExternalFPGARetinaDevice.DOWN_POLARITY},
                   label='External retina'))
'''

#loopConnections = list()
#for i in range(0, 1):
#    singleConnection = (i, ((i + 1) % 1), 1, 1)
#    loopConnections.append(singleConnection)

populations.append(
    p.Population(1024, p.IF_curr_exp, cell_params_lif, label='pop_1'))
projections.append(
    p.Projection(
        populations[0], populations[2],
        p.FromListConnector(retina_lib.subSamplerConnector2D(128, 32, .2, 1))))
projections.append(
    p.Projection(
        populations[1], populations[2],
        p.FromListConnector(retina_lib.subSamplerConnector2D(128, 32, .2, 1))))

populations[0].record(visualiser_mode=modes.TOPOLOGICAL,
                      visualiser_2d_dimension={
                          'x': 128,
                          'y': 128
                      })
populations[1].record(visualiser_mode=modes.TOPOLOGICAL,
                      visualiser_2d_dimension={
                          'x': 128,
                          'y': 128