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()
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()