Beispiel #1
0
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
Beispiel #2
0
    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)