Esempio n. 1
0
    postStd,
    sim.OneToOneConnector(),
    sim.StaticSynapse(weight=-5.0),
    receptor_type='inhibitory',
    label='inh_proj',
)
sProj = sim.Projection(
    preInh,
    postShunt,
    sim.OneToOneConnector(),
    sim.StaticSynapse(weight=-5.0),
    receptor_type='inhShunt',
    label='shunt_proj',
)

sim.run(runtime)
data_exc = preExc.get_data().segments[0]
data_inh = preInh.get_data().segments[0]
data_std = postStd.get_data().segments[0]
data_shunt = postShunt.get_data().segments[0]
sim.end()

figsize = (15, 5)

plot_data(data_exc, data_inh, data_shunt, title='shunt', figsize=figsize)
plt.tight_layout()

plot_data(data_exc, data_inh, data_std, title='standard', figsize=figsize)
plt.tight_layout()

plt.show()
Esempio n. 2
0
    def run(self, params):
        self._do_record = True
        self._network = {}
        self._network['timestep'] = 0.1  #ms
        self._network['min_delay'] = 0.1  #ms
        self._network['run_time'] = 1000

        sim.setup(self._network['timestep'],
                  model_name=self.name,
                  backend='CUDA')

        # Neuron populations
        pops = {}
        pops['input'] = self.gen_input_pop()
        pops['output'] = self.gen_output_pop()
        self._network['populations'] = pops

        # Projections
        projs = {}
        projs['inupt to output'] = self.gen_input_to_output_proj()
        self._network['projections'] = projs

        # Run
        log.info('Running sim for {}ms.'.format(self._network['run_time']))
        sim.run(self._network['run_time'])

        # Collect data
        if self._do_record:
            log.info('Collect data from all populations:')
            for popname, pop in pops.items():
                log.info(' -> Saving recorded data for "{}".'.format(popname))
                # Voltages
                voltagedata = pop.get_data('v')
                signal = voltagedata.segments[0].analogsignals[0]
                source_ids = signal.annotations['source_ids']
                for idx in range(len(source_ids)):
                    s_id = source_ids[idx]
                    filename = "%s_%s_%s.dat" % (
                        pop.label, pop.id_to_index(s_id), signal.name)
                    vm = signal.transpose()[idx]
                    tt = np.array([
                        t * sim.get_time_step() / 1000. for t in range(len(vm))
                    ])
                    times_vm = np.array([tt, vm / 1000.]).transpose()
                    np.savetxt(filename, times_vm, delimiter='\t', fmt='%s')

                    # Spikes
                    log.info(pop)
                    spikedata = pop.get_data('spikes')
                    filename = '{}.spikes'.format(pop.label)
                    thefile = open(filename, 'w')
                    for spiketrain in spikedata.segments[0].spiketrains:
                        source_id = spiketrain.annotations['source_id']
                        source_index = spiketrain.annotations['source_index']
                        #     #log.info(pp.pprint(vars(spiketrain)))
                        for t in spiketrain:
                            thefile.write('%s\t%f\n' %
                                          (source_index, t.magnitude / 1000.))
                    thefile.close()

        # End
        sim.end()