c1_abv_p = np.zeros(0) c1_abv_1 = np.zeros(0) c1_blo_p = np.zeros(0) c1_blo_1 = np.zeros(0) c2_abv_p = np.zeros(0) c2_abv_1 = np.zeros(0) c2_blo_p = np.zeros(0) c2_blo_1 = np.zeros(0) #init weights lif.W = np.array([w0, w1]) count = np.zeros(n) #Simulate LIF (v_raw, h_raw, _, _, u_raw) = lif.simulate(DeltaT) s1 = np.convolve(h_raw[0,:], exp_filter)[0:h_raw.shape[1]] s2 = np.convolve(h_raw[1,:], exp_filter)[0:h_raw.shape[1]] V = np.zeros((n, q)) V_mean = np.zeros((n, q)) nB = h_raw.shape[1]/DeltaT abvthr = np.zeros(n) blothr = np.zeros(n) #Create a perturbed set of trains for idx2, perturb_rate in enumerate(mvals): U = np.zeros((n, q)) dU = np.zeros(U.shape)
c1_abv_p = np.zeros(0) c1_abv_1 = np.zeros(0) c1_blo_p = np.zeros(0) c1_blo_1 = np.zeros(0) c2_abv_p = np.zeros(0) c2_abv_1 = np.zeros(0) c2_blo_p = np.zeros(0) c2_blo_1 = np.zeros(0) #init weights lif.W = np.array([w0, w1]) count = np.zeros(n) #Simulate LIF (v_raw, h_raw, _, _) = lif.simulate() s1 = np.convolve(h_raw[0,:], exp_filter)[0:h_raw.shape[1]] s2 = np.convolve(h_raw[1,:], exp_filter)[0:h_raw.shape[1]] V = np.zeros((n, q)) V_mean = np.zeros((n, q)) nB = h_raw.shape[1]/DeltaT abvthr = np.zeros(n) blothr = np.zeros(n) #Create a perturbed set of trains for idx2, perturb_rate in enumerate(mvals): U = np.zeros((n, q)) dU = np.zeros(U.shape)
N = 19 nsims = 1 wmax = 20 n = params.n deltaT = 50 #Play with different c values cvals = [0.01, 0.25, 0.5, 0.75, 0.99] for c in cvals: print("Running simulations for c = %f"%c) outfile = './sweeps/param_w_N_%d_nsims_%d_c_%f_deltaT_counterfactual_simulations.npz'%(N, nsims, c) params.c = c lif.setup(params) lif.x = 0 wvals = np.linspace(2, wmax, N) vs = np.zeros((N, N, nsims, n, lif.T), dtype=np.float16) hs = np.zeros((N, N, nsims, n, lif.T), dtype=np.bool) us = np.zeros((N, N, nsims, n, lif.T), dtype=np.float16) for i,w0 in enumerate(wvals): for j,w1 in enumerate(wvals): print("Running %d simulations with w0=%f, w1=%f"%(nsims, w0, w1)) lif.W = np.array([w0, w1]) for k in range(nsims): (v, h, Cost, betas, u) = lif.simulate(deltaT) vs[i,j,k,:] = v hs[i,j,k,:] = h us[i,j,k,:] = u #Save output np.savez(outfile, vs = vs, hs = hs, params = params, wvals = wvals\ , nsims = nsims, us = us)
se_beta_fd_c = np.zeros((len(cvals), params.n)) m_beta_rd_c_linear = np.zeros((len(cvals), params.n)) se_beta_fd_c_linear = np.zeros((len(cvals), params.n)) m_beta_rd_c_linear = np.zeros((len(cvals), params.n)) se_beta_fd_c_linear = np.zeros((len(cvals), params.n)) beta_sp_c = np.zeros((len(cvals), params.n)) cost = lambda s1, s2: (alpha1 * s1 + alpha2 * s2 - x**2)**2 for i, c in enumerate(cvals): print("Running %d simulations with c=%s" % (nsims, c)) params.c = c lif.setup(params) for j in range(nsims): (v, h, _, _, u) = lif.simulate(DeltaT) s1 = np.convolve(h[0, :], exp_filter)[0:h.shape[1]] s2 = np.convolve(h[1, :], exp_filter)[0:h.shape[1]] cost_s = cost(s1, s2) for k, p in enumerate(pvals): #print("p = %f"%p) beta_rd_c[i, j, k, :] = causaleffect_maxv(u, cost_s, DeltaT, p, params) beta_rd_c_linear[i, j, k, :] = causaleffect_maxv_linear( u, cost_s, DeltaT, p, params) beta_fd_c[i, j, :] = causaleffect_maxv(u, cost_s, DeltaT, 1, params) beta_fd_c_linear[i, j, :] = causaleffect_maxv_linear( u, cost_s, DeltaT, 1, params) #Compute the SP cost beta_sp_c[i, :] = causaleffect_maxv_sp(u, h, cost, DeltaT, params, exp_filter)
#Simulate for a range of $W$ values. N = 19 nsims = 1 wmax = 20 n = params.n #Play with different c values cvals = [0.01, 0.25, 0.5, 0.75, 0.99] for c in cvals: print("Running simulations for c = %f" % c) outfile = './sweeps/param_w_N_%d_nsims_%d_c_%f_deltaT_simulations.npz' % ( N, nsims, c) params.c = c lif.setup(params) lif.x = 0 wvals = np.linspace(2, wmax, N) vs = np.zeros((N, N, nsims, n, lif.T), dtype=np.float16) hs = np.zeros((N, N, nsims, n, lif.T), dtype=np.bool) for i, w0 in enumerate(wvals): for j, w1 in enumerate(wvals): print("Running %d simulations with w0=%f, w1=%f" % (nsims, w0, w1)) lif.W = np.array([w0, w1]) for k in range(nsims): (v, h, Cost, betas) = lif.simulate() vs[i, j, k, :] = v hs[i, j, k, :] = h #Save output np.savez(outfile, vs = vs, hs = hs, params = params, wvals = wvals\ , nsims = nsims)
se_beta_fd_c = np.zeros((len(cvals), params.n)) m_beta_rd_c_linear = np.zeros((len(cvals), params.n)) se_beta_fd_c_linear = np.zeros((len(cvals), params.n)) m_beta_rd_c_linear = np.zeros((len(cvals), params.n)) se_beta_fd_c_linear = np.zeros((len(cvals), params.n)) beta_sp_c = np.zeros((len(cvals), params.n)) cost = lambda s1, s2: (alpha1 * s1 + alpha2 * s2 - x**2)**2 for i, c in enumerate(cvals): print("Running %d simulations with c=%s" % (nsims, c)) params.c = c lif.setup(params) for j in range(nsims): (v, h, _, _) = lif.simulate() s1 = np.convolve(h[0, :], exp_filter)[0:h.shape[1]] s2 = np.convolve(h[1, :], exp_filter)[0:h.shape[1]] cost_s = cost(s1, s2) for k, p in enumerate(pvals): #print("p = %f"%p) beta_rd_c[i, j, k, :] = causaleffect_maxv(v, cost_s, DeltaT, p, params) beta_rd_c_linear[i, j, k, :] = causaleffect_maxv_linear( v, cost_s, DeltaT, p, params) beta_fd_c[i, j, :] = causaleffect_maxv(v, cost_s, DeltaT, 1, params) beta_fd_c_linear[i, j, :] = causaleffect_maxv_linear( v, cost_s, DeltaT, 1, params) #Compute the SP cost beta_sp_c[i, :] = causaleffect_maxv_sp(v, h, cost, DeltaT, params, exp_filter)