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