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
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) print 'debug w_ij_trace[-1]', w_ij_trace[-1] print 'debug compare:' print 'zi zi_debug', zi[-1], zi_debug[-1], zi[-1] == zi_debug[-1], np.all(zi == zi_debug) print 'zj zj_debug', zj[-1], zj_debug[-1], zj[-1] == zj_debug[-1], np.all(zj == zj_debug) print 'ei ei_debug', ei[-1], ei_debug[-1], ei[-1] == ei_debug[-1], np.all(ei == ei_debug) print 'ej ej_debug', ej[-1], ej_debug[-1], ej[-1] == ej_debug[-1], np.all(ej == ej_debug) print 'pi pi_debug', pi[-1], pi_debug[-1], pi[-1] == pi_debug[-1], np.all(pi == pi_debug) print 'pj pj_debug', pj[-1], pj_debug[-1], pj[-1] == pj_debug[-1], np.all(pj == pj_debug) print 'bias, bias_j_debug[-1]', bias[-1], bias_j_debug[-1] assert np.all(bias[-1] == bias_j_debug[-1]) trace_plotter.plot_all(my_conns[0][0], my_conns[0][1], fig=None, text=text, output_fn=output_fig_fn, show=True)