def compute_my_pijs(conns, output_fn, tau_dict, input_fn_base): """ conns = list of connections, i.e. tuples: (src, tgt) """ dt = 1 print 'pc_id computes pijs for %d connections' % (len(conns)) my_traces_pre = {} my_traces_post = {} p_ij_string = '#pre_id\tpost_id\tpij[-1]\tw_ij[-1]\tbias\n' for i in xrange(len(conns)): if (i % 500) == 0: print "Pc %d conn: \t%d - %d; \t%d / %d\t%.4f percent complete" % (pc_id, conns[i][0], conns[i][1], i, len(conns), i * 100./len(conns)) pre_id = conns[i][0] post_id = conns[i][1] if my_traces_pre.has_key(pre_id): (zi, pi) = my_traces_pre[pre_id] else: pre_trace = np.loadtxt(input_fn_base + str(pre_id) + '.dat') zi, ei, pi = Bcpnn.compute_traces(pre_trace, tau_dict['tau_zi'], tau_dict['tau_ei'], tau_dict['tau_pi'], eps=dt/tau_dict['tau_pi']) my_traces_pre[pre_id] = (zi, pi) if my_traces_post.has_key(post_id): (zj, pj) = my_traces_post[post_id] else: post_trace = np.loadtxt(input_fn_base + str(post_id) + '.dat') zj, ej, pj = Bcpnn.compute_traces(post_trace, tau_dict['tau_zj'], tau_dict['tau_ej'], tau_dict['tau_pj'], eps=dt/tau_dict['tau_pj']) # actually should be eps=dt/tau_dict['tau_pi'] my_traces_post[post_id] = (zj, pj) pij, w_ij, bias = Bcpnn.compute_pij(zi, zj, pi, pj, tau_dict['tau_eij'], tau_dict['tau_pij']) p_ij_string += '%d\t%d\t%.8e\t%.8e\t%.8e\n' % (pre_id, post_id, pij, w_ij, bias) if comm != None: comm.barrier() print 'Writing p_ij output to:', output_fn f = file(output_fn, 'w') f.write(p_ij_string) f.close() if comm != None: comm.barrier() if n_proc > 1 and pc_id == 0: tmp_fn = params['bcpnntrace_folder'] + 'all_pij.dat' cat_cmd = 'cat %s* > %s' % (params['bcpnntrace_folder'] + 'pij_', tmp_fn) print cat_cmd os.system(cat_cmd) return my_traces_pre, my_traces_post
text += 'tau_zj = %d\n' % tau_dict['tau_zj'] text += 'tau_e = %d\n' % tau_dict['tau_ei'] text += 'tau_p = %d\n' % tau_dict['tau_pi'] text += 'x_stim(t) = (%.1f, %.1f) + (%.1f, %.1f) * t\n'% (mp[0], mp[1], mp[2], mp[3]) import plot_bcpnn_traces as trace_plotter output_fig_fn = params['figures_folder'] + 'bcpnn_trace_%d_%d_%d.png' % (tau_dict['tau_zi'], tau_dict['tau_ei'], tau_dict['tau_pi']) times.append(time.time()) t_comp = times[-1] - times[0] print 'Computation time: %d sec = %.1f min' % (t_comp, t_comp / 60.) # seperate computation of traces and weights pre_trace = np.loadtxt(params['input_rate_fn_base'] + '%d.dat' % my_conns[0][0]) post_trace = np.loadtxt(params['input_rate_fn_base'] + '%d.dat' % my_conns[0][1]) dt = 1. zi = np.zeros(pre_trace.size) zi, ei, pi = Bcpnn.compute_traces(pre_trace, tau_dict['tau_zi'], tau_dict['tau_ei'], tau_dict['tau_pi'], eps=dt/tau_dict['tau_pi']) pre_id = my_conns[0][0] post_id = my_conns[0][1] # print the seperately computed traces np.savetxt('debug_zi_trace_%d.dat' % pre_id, zi) np.savetxt('debug_ei_trace_%d.dat' % pre_id, ei) np.savetxt('debug_pi_trace_%d.dat' % pre_id, pi) zj, ej, pj = Bcpnn.compute_traces(post_trace, tau_dict['tau_zj'], tau_dict['tau_ej'], tau_dict['tau_pj'], eps=dt/tau_dict['tau_pj']) np.savetxt('debug_zj_trace_%d.dat' % post_id, zj) np.savetxt('debug_ej_trace_%d.dat' % post_id, ej) np.savetxt('debug_pj_trace_%d.dat' % post_id, pj) pij, w_ij, bias = Bcpnn.compute_pij(zi, zj, pi, pj, tau_dict['tau_eij'], tau_dict['tau_pij']) print 'debug w_ij', pre_id, post_id, w_ij w_ij_trace, bias, pij, eij = Bcpnn.compute_pij(zi, zj, pi, pj, tau_dict['tau_eij'], tau_dict['tau_pij'], get_traces=True)