ax[2].errorbar(f_vals / Hz, np.mean(syn_mon.r_S[N_synapses:2 * N_synapses], axis=1), np.std(syn_mon.r_S[N_synapses:2 * N_synapses], axis=1), fmt='o', color='C2', lw=0.5) ax[2].set(xlim=(0.08, 100), xscale='log', ylim=(0., 0.2), ylabel=r'$\langle r_S \rangle$') pu.adjust_spines(ax[2], ['left']) ax[3].errorbar(f_vals / Hz, np.mean(syn_mon.r_S[:N_synapses], axis=1), np.std(syn_mon.r_S[:N_synapses], axis=1), fmt='o', color='C3', lw=0.5) ax[3].set(xlim=(0.08, 100), xticks=np.logspace(-1, 2, 4), xscale='log', ylim=(0., 0.7), xlabel='input frequency (Hz)', ylabel=r'$\langle r_S \rangle$') ax[3].xaxis.set_major_formatter(ScalarFormatter()) pu.adjust_spines(ax[3], ['left', 'bottom']) pu.adjust_ylabels(ax, x_offset=-0.2) plt.show()
exc_mon.i[exc_mon.i <= N_e//4], '|', color='C0') ax[0].plot(inh_mon.t[inh_mon.i <= N_i//4]/ms, inh_mon.i[inh_mon.i <= N_i//4]+N_e//4, '|', color='C1') pu.adjust_spines(ax[0], ['left']) ax[0].set(xlim=(0., duration/ms), ylim=(0, (N_e+N_i)//4), ylabel='neuron index') # Generate frequencies bin_size = 1*ms spk_count, bin_edges = np.histogram(np.r_[exc_mon.t/ms, inh_mon.t/ms], int(duration/ms)) rate = double(spk_count)/(N_e + N_i)/bin_size/Hz ax[1].plot(bin_edges[:-1], rate, '-', color='k') pu.adjust_spines(ax[1], ['left', 'bottom']) ax[1].set(xlim=(0., duration/ms), ylim=(0, 10.), xlabel='time (ms)', ylabel='rate (Hz)') pu.adjust_ylabels(ax, x_offset=-0.18) ### Dynamics of a single neuron fig2, ax = plt.subplots(4, sharex=False, gridspec_kw={'left': 0.27, 'bottom': 0.18, 'top': 0.95, 'hspace': 0.2}, figsize=(3.07, 3.07)) ### Postsynaptic conductances ax[0].plot(state_mon.t/ms, state_mon.g_e[0]/nS, color='C0') ax[0].plot(state_mon.t/ms, -state_mon.g_i[0]/nS, color='C1') ax[0].plot([state_mon.t[0]/ms, state_mon.t[-1]/ms], [0, 0], color='grey', linestyle=':') # Adjust axis pu.adjust_spines(ax[0], ['left']) ax[0].set(xlim=(0., duration/ms), ylim=(-5.0, 0.25), ylabel=f"postsyn.\nconduct.\n(${sympy.latex(nS)}$)")
################################################################################ run(duration, report='text') ################################################################################ # Analysis and plotting ################################################################################ plt.style.use('figures.mplstyle') fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(6.26894, 6.26894 * 0.66), gridspec_kw={'left': 0.1, 'bottom': 0.12}) scaling = 1.2 step = 10 ax.plot(astro_mon.t/second, (astro_mon.C[0:N_astro//2-1].T/astro_mon.C.max() + np.arange(N_astro//2-1)*scaling), color='black') ax.plot(astro_mon.t/second, (astro_mon.C[N_astro//2:].T/astro_mon.C.max() + np.arange(N_astro//2, N_astro)*scaling), color='black') ax.plot(astro_mon.t/second, (astro_mon.C[N_astro//2-1].T/astro_mon.C.max() + np.arange(N_astro//2-1, N_astro//2)*scaling), color='C0') ax.set(xlim=(0., duration/second), ylim=(0, (N_astro+1.5)*scaling), xticks=np.arange(0., duration/second, 500), xlabel='time (s)', yticks=np.arange(0.5*scaling, (N_astro + 1.5)*scaling, step*scaling), yticklabels=[str(yt) for yt in np.arange(0, N_astro + 1, step)], ylabel='$C/C_{max}$ (cell index)') pu.adjust_spines(ax, ['left', 'bottom']) pu.adjust_ylabels([ax], x_offset=-0.08) plt.show()
## Turn off one axis to display accordingly to the other figure in example_4_synrel.py ax[0].axis('off') ax[1].errorbar(f_vals/Hz, np.mean(syn_mon.r_S[2*N_synapses:], axis=1), np.std(syn_mon.r_S[2*N_synapses:], axis=1), fmt='o', color='black', lw=0.5) ax[1].set(xlim=(0.08, 100), xscale='log', ylim=(0., 0.7), ylabel=r'$\langle r_S \rangle$') pu.adjust_spines(ax[1], ['left']) ax[2].errorbar(f_vals/Hz, np.mean(syn_mon.r_S[N_synapses:2*N_synapses], axis=1), np.std(syn_mon.r_S[N_synapses:2*N_synapses], axis=1), fmt='o', color='C2', lw=0.5) ax[2].set(xlim=(0.08, 100), xscale='log', ylim=(0., 0.2), ylabel=r'$\langle r_S \rangle$') pu.adjust_spines(ax[2], ['left']) ax[3].errorbar(f_vals/Hz, np.mean(syn_mon.r_S[:N_synapses], axis=1), np.std(syn_mon.r_S[:N_synapses], axis=1), fmt='o', color='C3', lw=0.5) ax[3].set(xlim=(0.08, 100), xticks=np.logspace(-1, 2, 4), xscale='log', ylim=(0., 0.7), xlabel='input frequency (Hz)', ylabel=r'$\langle r_S \rangle$') ax[3].xaxis.set_major_formatter(ScalarFormatter()) pu.adjust_spines(ax[3], ['left', 'bottom']) pu.adjust_ylabels(ax, x_offset=-0.2) plt.show()
exc_mon.i[exc_mon.i <= N_e//4], '|', color='C0') ax[0].plot(inh_mon.t[inh_mon.i <= N_i//4]/ms, inh_mon.i[inh_mon.i <= N_i//4]+N_e//4, '|', color='C1') pu.adjust_spines(ax[0], ['left']) ax[0].set(xlim=(0.,duration/ms), ylim=(0,(N_e+N_i)//4), ylabel='neuron index') # Generate frequencies bin_size = 1*ms spk_count, bin_edges = np.histogram(np.r_[exc_mon.t/ms, inh_mon.t/ms], int(duration/ms)) rate = double(spk_count)/(N_e + N_i)/bin_size/Hz ax[1].plot(bin_edges[:-1], rate, '-', color='k') pu.adjust_spines(ax[1], ['left', 'bottom']) ax[1].set(xlim=(0.,duration/ms), ylim=(0, 10.), xlabel='time (ms)', ylabel='rate (Hz)') pu.adjust_ylabels(ax, x_offset=-0.18) ### Dynamics of a single neuron fig2, ax = plt.subplots(4, sharex=False, gridspec_kw={'left': 0.27, 'bottom': 0.18, 'top': 0.95, 'hspace': 0.2}, figsize=(3.07, 3.07)) ### Postsynaptic conductances ax[0].plot(state_mon.t/ms, state_mon.g_e[0]/nS, color='C0') ax[0].plot(state_mon.t/ms, -state_mon.g_i[0]/nS, color='C1') ax[0].plot([state_mon.t[0]/ms, state_mon.t[-1]/ms], [0, 0], color='grey', linestyle=':') # Adjust axis pu.adjust_spines(ax[0], ['left']) ax[0].set(xlim=(0., duration/ms), ylim=(-5.0,0.25), ylabel='postsyn.\nconduct.\n(${0}$)'.format(sympy.latex(nS)))