def setup(self, load_tuning_prop=False): if load_tuning_prop: print 'Loading tuning properties from', self.params['tuning_prop_means_fn'] self.tuning_prop_exc = np.loadtxt(self.params['tuning_prop_means_fn']) else: print 'Preparing tuning properties with limited range....' x_range = (0, 1.) y_range = (0.2, .5) u_range = (.05, 1.0) v_range = (-.2, .2) tp_exc_good, tp_exc_out_of_range = utils.set_limited_tuning_properties(params, y_range, x_range, u_range, v_range, cell_type='exc') self.tuning_prop_exc = tp_exc_good print 'n_exc within range: ', tp_exc_good[:, 0].size print "Saving tuning_prop to file:", params['tuning_prop_means_fn'] np.savetxt(params['tuning_prop_means_fn'], tp_exc_good) indices, distances = utils.sort_gids_by_distance_to_stimulus(self.tuning_prop_exc, self.params['motion_params'], self.params) # cells in indices should have the highest response to the stimulus if self.pc_id == 0: print "Saving tuning_prop to file:", self.params['tuning_prop_means_fn'] np.savetxt(self.params['tuning_prop_means_fn'], self.tuning_prop_exc) print 'Saving gids to record to: ', self.params['gids_to_record_fn'] np.savetxt(self.params['gids_to_record_fn'], indices[:self.params['n_gids_to_record']], fmt='%d') # np.savetxt(params['gids_to_record_fn'], indices[:params['n_gids_to_record']], fmt='%d') if self.comm != None: self.comm.Barrier() from pyNN.utility import Timer self.timer = Timer() self.timer.start() self.times = {} # # # # # # # # # # # # # S E T U P # # # # # # # # # # # # # (delay_min, delay_max) = self.params['delay_range'] setup(timestep=0.1, min_delay=delay_min, max_delay=delay_max, rng_seeds_seed=self.params['seed']) rng_v = NumpyRNG(seed = sim_cnt*3147 + self.params['seed'], parallel_safe=True) #if True, slower but does not depend on number of nodes self.rng_conn = NumpyRNG(seed = self.params['seed'], parallel_safe=True) #if True, slower but does not depend on number of nodes # # # # # # # # # # # # # # # # # # # # # # # # # # R A N D O M D I S T R I B U T I O N S # # # # # # # # # # # # # # # # # # # # # # # # # # self.v_init_dist = RandomDistribution('normal', (self.params['v_init'], self.params['v_init_sigma']), rng=rng_v, constrain='redraw', boundaries=(-80, -60)) self.times['t_setup'] = self.timer.diff() self.times['t_calc_conns'] = 0 if self.comm != None: self.comm.Barrier()
# from mpi4py import MPI # USE_MPI = True # comm = MPI.COMM_WORLD # pc_id, n_proc = comm.rank, comm.size # print "USE_MPI:", USE_MPI, 'pc_id, n_proc:', pc_id, n_proc #except: # USE_MPI = False # pc_id, n_proc, comm = 0, 1, None # print "MPI not used" x_range = (0, 1.) y_range = (0.3, .7) u_range = (.05, .5) v_range = (-.2, .2) tp_exc_good, tp_exc_out_of_range = utils.set_limited_tuning_properties(params, y_range, x_range, u_range, v_range, cell_type='exc') print 'n_exc within range: ', tp_exc_good[:, 0].size print "Saving tuning_prop to file:", params['tuning_prop_means_fn'] np.savetxt(params['tuning_prop_means_fn'], tp_exc_good) print 'Calculating gids to record...' mp = params['motion_params'] indices, distances = utils.sort_gids_by_distance_to_stimulus(tp_exc_good, mp, params) # cells in indices should have the highest response to the stimulus n = params['n_gids_to_record'] np.savetxt(params['gids_to_record_fn'], indices[:n], fmt='%d') print 'Saving gids to record to: ', params['gids_to_record_fn'] tuning_prop_inh, tp_inh_out_of_range = utils.set_limited_tuning_properties(params, y_range=y_range, x_range=x_range, u_range=u_range, v_range=v_range, cell_type='inh') print "Saving tuning_prop to file:", params['tuning_prop_inh_fn'] np.savetxt(params['tuning_prop_inh_fn'], tuning_prop_inh)