def plot_multi_scale_output_b(fig, X='L5E'): '''docstring me''' show_ax_labels = True show_insets = False show_images = False T=[800, 1000] T_inset=[900, 920] left = 0.075 bottom = 0.05 top = 0.475 right = 0.95 axwidth = 0.16 numcols = 4 insetwidth = axwidth/2 insetheight = 0.5 lefts = np.linspace(left, right-axwidth, numcols) lefts += axwidth/2 #lower row of panels #fig = plt.figure() #fig.subplots_adjust(left=0.12, right=0.9, bottom=0.36, top=0.9, wspace=0.2, hspace=0.3) ############################################################################ # E part, soma locations ############################################################################ ax4 = fig.add_axes([lefts[0], bottom, axwidth, top-bottom], frameon=False) plt.locator_params(nbins=4) ax4.xaxis.set_ticks([]) ax4.yaxis.set_ticks([]) if show_ax_labels: phlp.annotate_subplot(ax4, ncols=4, nrows=1, letter='E') plot_population(ax4, params, isometricangle=np.pi/24, rasterized=False) ############################################################################ # F part, CSD ############################################################################ ax5 = fig.add_axes([lefts[1], bottom, axwidth, top-bottom]) plt.locator_params(nbins=4) phlp.remove_axis_junk(ax5) if show_ax_labels: phlp.annotate_subplot(ax5, ncols=4, nrows=1, letter='F') plot_signal_sum(ax5, params, fname=os.path.join(params.savefolder, 'CSDsum.h5'), unit='$\mu$A mm$^{-3}$', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], rasterized=False) ax5.set_title('CSD', va='center') # Inset if show_insets: ax6 = fig.add_axes([lefts[1]+axwidth-insetwidth, top-insetheight, insetwidth, insetheight]) plt.locator_params(nbins=4) phlp.remove_axis_junk(ax6) plot_signal_sum_colorplot(ax6, params, os.path.join(params.savefolder, 'CSDsum.h5'), unit=r'$\mu$Amm$^{-3}$', T=T_inset, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False,colorbar=False,cmap='bwr_r') ax6.set_xticks(T_inset) ax6.set_yticklabels([]) #show traces superimposed on color image if show_images: plot_signal_sum_colorplot(ax5, params, os.path.join(params.savefolder, 'CSDsum.h5'), unit=r'$\mu$Amm$^{-3}$', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False,colorbar=False,cmap='jet_r') ############################################################################ # G part, LFP ############################################################################ ax7 = fig.add_axes([lefts[2], bottom, axwidth, top-bottom]) plt.locator_params(nbins=4) if show_ax_labels: phlp.annotate_subplot(ax7, ncols=4, nrows=1, letter='G') phlp.remove_axis_junk(ax7) plot_signal_sum(ax7, params, fname=os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], rasterized=False) ax7.set_title('LFP',va='center') # Inset if show_insets: ax8 = fig.add_axes([lefts[2]+axwidth-insetwidth, top-insetheight, insetwidth, insetheight]) plt.locator_params(nbins=4) phlp.remove_axis_junk(ax8) plot_signal_sum_colorplot(ax8, params, os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', T=T_inset, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False,colorbar=False,cmap='bwr_r') ax8.set_xticks(T_inset) ax8.set_yticklabels([]) #show traces superimposed on color image if show_images: plot_signal_sum_colorplot(ax7, params, os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False,colorbar=False,cmap='bwr_r')
def fig_lfp_decomposition(fig, axes, params, transient=200, X=['L23E', 'L6E'], show_xlabels=True): # ana_params.set_PLOS_2column_fig_style(ratio=0.5) # fig, axes = plt.subplots(1,5) # fig.subplots_adjust(left=0.06, right=0.96, wspace=0.4, hspace=0.2) if analysis_params.bw: # linestyles = ['-', '-', '--', '--', '-.', '-.', ':', ':'] linestyles = ['-', '-', '-', '-', '-', '-', '-', '-'] markerstyles = ['s', 's', 'v', 'v', 'o', 'o', '^', '^'] else: if plt.matplotlib.__version__ == '1.5.x': linestyles = ['-', ':'] * (len(params.Y) / 2) print( 'CSD variance semi log plots may fail with matplotlib.__version__ {}' .format(plt.matplotlib.__version__)) else: linestyles = ['-', (0, (1, 1))] * (len(params.Y) / 2) #cercor version # markerstyles = ['s', 's', 'v', 'v', 'o', 'o', '^', '^'] markerstyles = [None] * len(params.Y) linewidths = [1.25 for i in range(len(linestyles))] plt.delaxes(axes[0]) #population plot axes[0] = fig.add_subplot(261) axes[0].xaxis.set_ticks([]) axes[0].yaxis.set_ticks([]) axes[0].set_frame_on(False) plot_population(axes[0], params, aspect='tight', isometricangle=np.pi / 32, plot_somas=False, plot_morphos=True, num_unitsE=1, num_unitsI=1, clip_dendrites=False, main_pops=True, rasterized=False) phlp.annotate_subplot(axes[0], ncols=5, nrows=1, letter='A') axes[0].set_aspect('auto') axes[0].set_ylim(-1550, 50) axis = axes[0].axis() phlp.remove_axis_junk(axes[1]) plot_signal_sum(axes[1], params, fname=os.path.join(params.populations_path, X[0] + '_population_LFP.h5'), unit='mV', T=[800, 1000], ylim=[axis[2], axis[3]], rasterized=False) # CSD background colorplot im = plot_signal_sum_colorplot( axes[1], params, os.path.join(params.populations_path, X[0] + '_population_CSD.h5'), unit=r'$\mu$Amm$^{-3}$', T=[800, 1000], colorbar=False, ylim=[axis[2], axis[3]], fancy=False, cmap=plt.get_cmap('gray', 21) if analysis_params.bw else plt.get_cmap( 'bwr_r', 21), rasterized=False) cb = phlp.colorbar(fig, axes[1], im, width=0.05, height=0.5, hoffset=-0.05, voffset=0.5) cb.set_label('($\mu$Amm$^{-3}$)', labelpad=0.) axes[1].set_ylim(-1550, 50) axes[1].set_title('LFP and CSD ({})'.format(X[0]), va='baseline') phlp.annotate_subplot(axes[1], ncols=3, nrows=1, letter='B') #quickfix on first axes axes[0].set_ylim(-1550, 50) if show_xlabels: axes[1].set_xlabel(r'$t$ (ms)', labelpad=0.) else: axes[1].set_xlabel('') phlp.remove_axis_junk(axes[2]) plot_signal_sum(axes[2], params, fname=os.path.join(params.populations_path, X[1] + '_population_LFP.h5'), ylabels=False, unit='mV', T=[800, 1000], ylim=[axis[2], axis[3]], rasterized=False) # CSD background colorplot im = plot_signal_sum_colorplot( axes[2], params, os.path.join(params.populations_path, X[1] + '_population_CSD.h5'), unit=r'$\mu$Amm$^{-3}$', T=[800, 1000], ylabels=False, colorbar=False, ylim=[axis[2], axis[3]], fancy=False, cmap=plt.get_cmap('gray', 21) if analysis_params.bw else plt.get_cmap( 'bwr_r', 21), rasterized=False) cb = phlp.colorbar(fig, axes[2], im, width=0.05, height=0.5, hoffset=-0.05, voffset=0.5) cb.set_label('($\mu$Amm$^{-3}$)', labelpad=0.) axes[2].set_ylim(-1550, 50) axes[2].set_title('LFP and CSD ({})'.format(X[1]), va='baseline') phlp.annotate_subplot(axes[2], ncols=1, nrows=1, letter='C') if show_xlabels: axes[2].set_xlabel(r'$t$ (ms)', labelpad=0.) else: axes[2].set_xlabel('') plotPowers(axes[3], params, params.Y, 'CSD', linestyles=linestyles, transient=transient, markerstyles=markerstyles, linewidths=linewidths) axes[3].axis(axes[3].axis('tight')) axes[3].set_ylim(-1550, 50) axes[3].set_yticks(-np.arange(16) * 100) if show_xlabels: axes[3].set_xlabel(r'$\sigma^2$ ($(\mu$Amm$^{-3})^2$)', va='center') axes[3].set_title('CSD variance', va='baseline') axes[3].set_xlim(left=1E-7) phlp.remove_axis_junk(axes[3]) phlp.annotate_subplot(axes[3], ncols=1, nrows=1, letter='D') plotPowers(axes[4], params, params.Y, 'LFP', linestyles=linestyles, transient=transient, markerstyles=markerstyles, linewidths=linewidths) axes[4].axis(axes[4].axis('tight')) axes[4].set_ylim(-1550, 50) axes[4].set_yticks(-np.arange(16) * 100) if show_xlabels: axes[4].set_xlabel(r'$\sigma^2$ (mV$^2$)', va='center') axes[4].set_title('LFP variance', va='baseline') axes[4].legend(bbox_to_anchor=(1.37, 1.0), frameon=False) axes[4].set_xlim(left=1E-7) phlp.remove_axis_junk(axes[4]) phlp.annotate_subplot(axes[4], ncols=1, nrows=1, letter='E') return fig
def plot_multi_scale_output_b(fig, X='L5E'): '''docstring me''' show_ax_labels = True show_insets = False show_images = False T = [800, 1000] T_inset = [900, 920] left = 0.075 bottom = 0.05 top = 0.475 right = 0.95 axwidth = 0.16 numcols = 4 insetwidth = axwidth / 2 insetheight = 0.5 lefts = np.linspace(left, right - axwidth, numcols) lefts += axwidth / 2 #lower row of panels #fig = plt.figure() #fig.subplots_adjust(left=0.12, right=0.9, bottom=0.36, top=0.9, wspace=0.2, hspace=0.3) ############################################################################ # E part, soma locations ############################################################################ ax4 = fig.add_axes([lefts[0], bottom, axwidth, top - bottom], frameon=False) plt.locator_params(nbins=4) ax4.xaxis.set_ticks([]) ax4.yaxis.set_ticks([]) if show_ax_labels: phlp.annotate_subplot(ax4, ncols=4, nrows=1, letter='E') plot_population(ax4, params, isometricangle=np.pi / 24, rasterized=False) ############################################################################ # F part, CSD ############################################################################ ax5 = fig.add_axes([lefts[1], bottom, axwidth, top - bottom]) plt.locator_params(nbins=4) phlp.remove_axis_junk(ax5) if show_ax_labels: phlp.annotate_subplot(ax5, ncols=4, nrows=1, letter='F') plot_signal_sum(ax5, params, fname=os.path.join(params.savefolder, 'CSDsum.h5'), unit='$\mu$A mm$^{-3}$', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], rasterized=False) ax5.set_title('CSD', va='center') # Inset if show_insets: ax6 = fig.add_axes([ lefts[1] + axwidth - insetwidth, top - insetheight, insetwidth, insetheight ]) plt.locator_params(nbins=4) phlp.remove_axis_junk(ax6) plot_signal_sum_colorplot(ax6, params, os.path.join(params.savefolder, 'CSDsum.h5'), unit=r'$\mu$Amm$^{-3}$', T=T_inset, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False, colorbar=False, cmap='bwr_r') ax6.set_xticks(T_inset) ax6.set_yticklabels([]) #show traces superimposed on color image if show_images: plot_signal_sum_colorplot(ax5, params, os.path.join(params.savefolder, 'CSDsum.h5'), unit=r'$\mu$Amm$^{-3}$', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False, colorbar=False, cmap='jet_r') ############################################################################ # G part, LFP ############################################################################ ax7 = fig.add_axes([lefts[2], bottom, axwidth, top - bottom]) plt.locator_params(nbins=4) if show_ax_labels: phlp.annotate_subplot(ax7, ncols=4, nrows=1, letter='G') phlp.remove_axis_junk(ax7) plot_signal_sum(ax7, params, fname=os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], rasterized=False) ax7.set_title('LFP', va='center') # Inset if show_insets: ax8 = fig.add_axes([ lefts[2] + axwidth - insetwidth, top - insetheight, insetwidth, insetheight ]) plt.locator_params(nbins=4) phlp.remove_axis_junk(ax8) plot_signal_sum_colorplot(ax8, params, os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', T=T_inset, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False, colorbar=False, cmap='bwr_r') ax8.set_xticks(T_inset) ax8.set_yticklabels([]) #show traces superimposed on color image if show_images: plot_signal_sum_colorplot(ax7, params, os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', T=T, ylim=[ax4.axis()[2], ax4.axis()[3]], fancy=False, colorbar=False, cmap='bwr_r')
def fig_intro(params, ana_params, T=[800, 1000], fraction=0.05, rasterized=False): '''set up plot for introduction''' ana_params.set_PLOS_2column_fig_style(ratio=0.5) #load spike as database networkSim = CachedNetwork(**params.networkSimParams) if analysis_params.bw: networkSim.colors = phlp.get_colors(len(networkSim.X)) #set up figure and subplots fig = plt.figure() gs = gridspec.GridSpec(3, 4) fig.subplots_adjust(left=0.05, right=0.95, wspace=0.5, hspace=0.) #network diagram ax0_1 = fig.add_subplot(gs[:, 0], frameon=False) ax0_1.set_title('point-neuron network', va='bottom') network_sketch(ax0_1, yscaling=1.3) ax0_1.xaxis.set_ticks([]) ax0_1.yaxis.set_ticks([]) phlp.annotate_subplot(ax0_1, ncols=4, nrows=1, letter='A', linear_offset=0.065) #network raster ax1 = fig.add_subplot(gs[:, 1], frameon=True) phlp.remove_axis_junk(ax1) phlp.annotate_subplot(ax1, ncols=4, nrows=1, letter='B', linear_offset=0.065) x, y = networkSim.get_xy(T, fraction=fraction) # networkSim.plot_raster(ax1, T, x, y, markersize=0.1, alpha=1.,legend=False, pop_names=True) networkSim.plot_raster(ax1, T, x, y, markersize=0.2, marker='_', alpha=1., legend=False, pop_names=True, rasterized=rasterized) ax1.set_ylabel('') ax1.xaxis.set_major_locator(plt.MaxNLocator(4)) ax1.set_title('spiking activity', va='bottom') a = ax1.axis() ax1.vlines(x['TC'][0], a[2], a[3], 'k', lw=0.25) #population ax2 = fig.add_subplot(gs[:, 2], frameon=False) ax2.xaxis.set_ticks([]) ax2.yaxis.set_ticks([]) plot_population(ax2, params, isometricangle=np.pi / 24, plot_somas=False, plot_morphos=True, num_unitsE=1, num_unitsI=1, clip_dendrites=True, main_pops=True, title='', rasterized=rasterized) ax2.set_title('multicompartment\nneurons', va='bottom', fontweight='normal') phlp.annotate_subplot(ax2, ncols=4, nrows=1, letter='C', linear_offset=0.065) #LFP traces in all channels ax3 = fig.add_subplot(gs[:, 3], frameon=True) phlp.remove_axis_junk(ax3) plot_signal_sum(ax3, params, fname=os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', vlimround=0.8, T=T, ylim=[ax2.axis()[2], ax2.axis()[3]], rasterized=False) ax3.set_title('LFP', va='bottom') ax3.xaxis.set_major_locator(plt.MaxNLocator(4)) phlp.annotate_subplot(ax3, ncols=4, nrows=1, letter='D', linear_offset=0.065) a = ax3.axis() ax3.vlines(x['TC'][0], a[2], a[3], 'k', lw=0.25) #draw some arrows: ax = plt.gca() ax.annotate( "", xy=(0.27, 0.5), xytext=(.24, 0.5), xycoords="figure fraction", arrowprops=dict(facecolor='black', arrowstyle='simple'), ) ax.annotate( "", xy=(0.52, 0.5), xytext=(.49, 0.5), xycoords="figure fraction", arrowprops=dict(facecolor='black', arrowstyle='simple'), ) ax.annotate( "", xy=(0.78, 0.5), xytext=(.75, 0.5), xycoords="figure fraction", arrowprops=dict(facecolor='black', arrowstyle='simple'), ) return fig
def fig_intro(params, fraction=0.05, rasterized=False): '''set up plot for introduction''' plt.close("all") #load spike as database networkSim = CachedNetwork(**params.networkSimParams) # num_pops = 8 fig = plt.figure(figsize=[4.5, 3.5]) fig.subplots_adjust(left=0.03, right=0.98, wspace=0.5, hspace=0.) ax_spikes = fig.add_axes([0.09, 0.4, 0.2, 0.55]) ax_morph = fig.add_axes([0.37, 0.3, 0.3, 0.75], frameon=False, aspect=1, xticks=[], yticks=[]) ax_lfp = fig.add_axes([0.73, 0.4, 0.23, 0.55], frameon=True) ax_4s = fig.add_axes([0.42, 0.05, 0.25, 0.2], frameon=False, aspect=1, title='head model', xticks=[], yticks=[]) ax_top_EEG = fig.add_axes([0.65, 0.02, 0.33, 0.32], frameon=False, xticks=[], yticks=[], ylim=[-0.5, .25]) dt = 1 t_idx = 875 T = [t_idx, t_idx + 75] fig.text(0.55, 0.97, "multicompartment neurons", fontsize=6, ha="center") ax_spikes.set_title("spiking activity", fontsize=6) ax_lfp.set_title("LFP", fontsize=6) #network raster ax_spikes.xaxis.set_major_locator(plt.MaxNLocator(4)) phlp.remove_axis_junk(ax_spikes) phlp.annotate_subplot(ax_spikes, ncols=4, nrows=1, letter='A', linear_offset=0.045) x, y = networkSim.get_xy(T, fraction=fraction) networkSim.plot_raster(ax_spikes, T, x, y, markersize=0.2, marker='_', alpha=1., legend=False, pop_names=True, rasterized=rasterized) #population plot_population(ax_morph, params, isometricangle=np.pi / 24, plot_somas=False, plot_morphos=True, num_unitsE=1, num_unitsI=1, clip_dendrites=True, main_pops=True, title='', rasterized=rasterized) # ax_morph.set_title('multicompartment neurons', va='top') phlp.annotate_subplot(ax_morph, ncols=5, nrows=1, letter='B', linear_offset=0.005) phlp.remove_axis_junk(ax_lfp) #ax_lfp.set_title('LFP', va='bottom') ax_lfp.xaxis.set_major_locator(plt.MaxNLocator(4)) phlp.annotate_subplot(ax_lfp, ncols=4, nrows=2, letter='C', linear_offset=0.025) #print(ax_morph.axis()) plot_signal_sum(ax_lfp, params, fname=join(params.savefolder, 'LFPsum.h5'), unit='mV', vlimround=0.8, T=T, ylim=[-1600, 100], rasterized=False) plot_cdms(fig, params, dt, T) plot_foursphere_to_ax(ax_4s) phlp.annotate_subplot(ax_4s, ncols=3, nrows=7, letter='E', linear_offset=0.05) # Plot EEG at top of head # ax_top_EEG.xaxis.set_major_locator(plt.MaxNLocator(4)) phlp.annotate_subplot(ax_top_EEG, ncols=1, nrows=1, letter='F', linear_offset=-0.08) # ax_top_EEG.set_ylabel("$\mu$V", labelpad=-3) summed_top_EEG = np.load(join(params.savefolder, "summed_EEG.npy")) simple_EEG_single_pop = np.load( join(params.savefolder, "simple_EEG_single_pop.npy")) simple_EEG_pops_with_pos = np.load( join(params.savefolder, "simple_EEG_pops_with_pos.npy")) tvec = np.arange(len(summed_top_EEG)) * dt # sub_pops = ["L5I", "L4I", "L6I", "L23I", "L5E", "L4E", "L6E", "L23E"] pops = np.unique(next(zip(*params.mapping_Yy))) colors = phlp.get_colors(np.unique(pops).size) for p_idx, pop in enumerate(pops): pop_eeg = np.load(join(params.savefolder, "EEG_{}.npy".format(pop))) pop_eeg -= np.average(pop_eeg) # pop_sum.append(pop_eeg) ax_top_EEG.plot(pop_eeg, c=colors[p_idx], lw=1) ax_top_EEG.plot([878, 878], [-0.1, -0.3], c='k', lw=1) ax_top_EEG.plot([878, 888], [-0.3, -0.3], c='k', lw=1) ax_top_EEG.text(879, -0.2, "0.2 $\mu$V", va="center") ax_top_EEG.text(885, -0.32, "10 ms", va="top", ha="center") y0 = summed_top_EEG - np.average(summed_top_EEG) y1 = simple_EEG_single_pop - np.average(simple_EEG_single_pop) y2 = simple_EEG_pops_with_pos - np.average(simple_EEG_pops_with_pos) l3, = ax_top_EEG.plot(tvec, y0 - y2, lw=1.5, c='orange', ls='-') l1, = ax_top_EEG.plot(tvec, y0, lw=1.5, c='k') l2, = ax_top_EEG.plot(tvec, y2, lw=1.5, c='r', ls='--') t0_plot_idx = np.argmin(np.abs(tvec - 875)) t1_plot_idx = np.argmin(np.abs(tvec - 950)) max_sig_idx = np.argmax(np.abs(y0[t0_plot_idx:])) + t0_plot_idx EEG_error_at_max_1 = np.abs(y0[max_sig_idx] - y1[max_sig_idx]) / np.abs( y0[max_sig_idx]) EEG_error_at_max_2 = np.abs(y0[max_sig_idx] - y2[max_sig_idx]) / np.abs( y0[max_sig_idx]) max_EEG_error_1 = np.max( np.abs(y0[t0_plot_idx:t1_plot_idx] - y1[t0_plot_idx:t1_plot_idx]) / np.max(np.abs(y0[t0_plot_idx:t1_plot_idx]))) max_EEG_error_2 = np.max( np.abs(y0[t0_plot_idx:t1_plot_idx] - y2[t0_plot_idx:t1_plot_idx]) / np.max(np.abs(y0[t0_plot_idx:t1_plot_idx]))) print( "Error with single pop at sig max (t={:1.3f} ms): {:1.4f}. Max relative error: {:1.4f}" .format(tvec[max_sig_idx], EEG_error_at_max_1, max_EEG_error_1)) print( "Error with multipop at sig max (t={:1.3f} ms): {:1.4f}. Max relative error: {:1.4f}" .format(tvec[max_sig_idx], EEG_error_at_max_2, max_EEG_error_2)) ax_top_EEG.legend([l1, l2, l3], ["full sum", "pop. dipole", "difference"], frameon=False, loc=(0.5, 0.1)) # phlp.remove_axis_junk(ax_top_EEG) ax_top_EEG.axvline(900, c='gray', ls='--') ax_lfp.axvline(900, c='gray', ls='--') ax_top_EEG.set_xlim(T) fig.savefig(join("..", "figures", 'Figure6.png'), dpi=300) fig.savefig(join("..", "figures", 'Figure6.pdf'), dpi=300)
def fig_lfp_decomposition(fig, axes, params, transient=200, X=['L23E', 'L6E'], show_xlabels=True): # ana_params.set_PLOS_2column_fig_style(ratio=0.5) # fig, axes = plt.subplots(1,5) # fig.subplots_adjust(left=0.06, right=0.96, wspace=0.4, hspace=0.2) if analysis_params.bw: # linestyles = ['-', '-', '--', '--', '-.', '-.', ':', ':'] linestyles = ['-', '-', '-', '-', '-', '-', '-', '-'] markerstyles = ['s', 's', 'v', 'v', 'o', 'o', '^', '^'] else: if plt.matplotlib.__version__ == '1.5.x': linestyles = ['-', ':']*(len(params.Y) / 2) print('CSD variance semi log plots may fail with matplotlib.__version__ {}'.format(plt.matplotlib.__version__)) else: linestyles = ['-', (0, (1,1))]*(len(params.Y) / 2) #cercor version # markerstyles = ['s', 's', 'v', 'v', 'o', 'o', '^', '^'] markerstyles = [None]*len(params.Y) linewidths = [1.25 for i in range(len(linestyles))] plt.delaxes(axes[0]) #population plot axes[0] = fig.add_subplot(261) axes[0].xaxis.set_ticks([]) axes[0].yaxis.set_ticks([]) axes[0].set_frame_on(False) plot_population(axes[0], params, aspect='tight', isometricangle=np.pi/32, plot_somas = False, plot_morphos = True, num_unitsE = 1, num_unitsI=1, clip_dendrites=False, main_pops=True, rasterized=False) phlp.annotate_subplot(axes[0], ncols=5, nrows=1, letter='A') axes[0].set_aspect('auto') axes[0].set_ylim(-1550, 50) axis = axes[0].axis() phlp.remove_axis_junk(axes[1]) plot_signal_sum(axes[1], params, fname=os.path.join(params.populations_path, X[0] + '_population_LFP.h5'), unit='mV', T=[800,1000], ylim=[axis[2], axis[3]], rasterized=False) # CSD background colorplot im = plot_signal_sum_colorplot(axes[1], params, os.path.join(params.populations_path, X[0] + '_population_CSD.h5'), unit=r'$\mu$Amm$^{-3}$', T=[800,1000], colorbar=False, ylim=[axis[2], axis[3]], fancy=False, cmap=plt.get_cmap('gray', 21) if analysis_params.bw else plt.get_cmap('bwr_r', 21), rasterized=False) cb = phlp.colorbar(fig, axes[1], im, width=0.05, height=0.5, hoffset=-0.05, voffset=0.5) cb.set_label('($\mu$Amm$^{-3}$)', labelpad=0.) axes[1].set_ylim(-1550, 50) axes[1].set_title('LFP and CSD ({})'.format(X[0]), va='baseline') phlp.annotate_subplot(axes[1], ncols=3, nrows=1, letter='B') #quickfix on first axes axes[0].set_ylim(-1550, 50) if show_xlabels: axes[1].set_xlabel(r'$t$ (ms)',labelpad=0.) else: axes[1].set_xlabel('') phlp.remove_axis_junk(axes[2]) plot_signal_sum(axes[2], params, fname=os.path.join(params.populations_path, X[1] + '_population_LFP.h5'), ylabels=False, unit='mV', T=[800,1000], ylim=[axis[2], axis[3]], rasterized=False) # CSD background colorplot im = plot_signal_sum_colorplot(axes[2], params, os.path.join(params.populations_path, X[1] + '_population_CSD.h5'), unit=r'$\mu$Amm$^{-3}$', T=[800,1000], ylabels=False, colorbar=False, ylim=[axis[2], axis[3]], fancy=False, cmap=plt.get_cmap('gray', 21) if analysis_params.bw else plt.get_cmap('bwr_r', 21), rasterized=False) cb = phlp.colorbar(fig, axes[2], im, width=0.05, height=0.5, hoffset=-0.05, voffset=0.5) cb.set_label('($\mu$Amm$^{-3}$)', labelpad=0.) axes[2].set_ylim(-1550, 50) axes[2].set_title('LFP and CSD ({})'.format(X[1]), va='baseline') phlp.annotate_subplot(axes[2], ncols=1, nrows=1, letter='C') if show_xlabels: axes[2].set_xlabel(r'$t$ (ms)',labelpad=0.) else: axes[2].set_xlabel('') plotPowers(axes[3], params, params.Y, 'CSD', linestyles=linestyles, transient=transient, markerstyles=markerstyles, linewidths=linewidths) axes[3].axis(axes[3].axis('tight')) axes[3].set_ylim(-1550, 50) axes[3].set_yticks(-np.arange(16)*100) if show_xlabels: axes[3].set_xlabel(r'$\sigma^2$ ($(\mu$Amm$^{-3})^2$)', va='center') axes[3].set_title('CSD variance', va='baseline') axes[3].set_xlim(left=1E-7) phlp.remove_axis_junk(axes[3]) phlp.annotate_subplot(axes[3], ncols=1, nrows=1, letter='D') plotPowers(axes[4], params, params.Y, 'LFP', linestyles=linestyles, transient=transient, markerstyles=markerstyles, linewidths=linewidths) axes[4].axis(axes[4].axis('tight')) axes[4].set_ylim(-1550, 50) axes[4].set_yticks(-np.arange(16)*100) if show_xlabels: axes[4].set_xlabel(r'$\sigma^2$ (mV$^2$)', va='center') axes[4].set_title('LFP variance', va='baseline') axes[4].legend(bbox_to_anchor=(1.37, 1.0), frameon=False) axes[4].set_xlim(left=1E-7) phlp.remove_axis_junk(axes[4]) phlp.annotate_subplot(axes[4], ncols=1, nrows=1, letter='E') return fig
def fig_intro(params, ana_params, T=[800, 1000], fraction=0.05, rasterized=False): '''set up plot for introduction''' ana_params.set_PLOS_2column_fig_style(ratio=0.5) #load spike as database networkSim = CachedNetwork(**params.networkSimParams) if analysis_params.bw: networkSim.colors = phlp.get_colors(len(networkSim.X)) #set up figure and subplots fig = plt.figure() gs = gridspec.GridSpec(3, 4) fig.subplots_adjust(left=0.05, right=0.95, wspace=0.5, hspace=0.) #network diagram ax0_1 = fig.add_subplot(gs[:, 0], frameon=False) ax0_1.set_title('point-neuron network', va='bottom') network_sketch(ax0_1, yscaling=1.3) ax0_1.xaxis.set_ticks([]) ax0_1.yaxis.set_ticks([]) phlp.annotate_subplot(ax0_1, ncols=4, nrows=1, letter='A', linear_offset=0.065) #network raster ax1 = fig.add_subplot(gs[:, 1], frameon=True) phlp.remove_axis_junk(ax1) phlp.annotate_subplot(ax1, ncols=4, nrows=1, letter='B', linear_offset=0.065) x, y = networkSim.get_xy(T, fraction=fraction) # networkSim.plot_raster(ax1, T, x, y, markersize=0.1, alpha=1.,legend=False, pop_names=True) networkSim.plot_raster(ax1, T, x, y, markersize=0.2, marker='_', alpha=1.,legend=False, pop_names=True, rasterized=rasterized) ax1.set_ylabel('') ax1.xaxis.set_major_locator(plt.MaxNLocator(4)) ax1.set_title('spiking activity', va='bottom') a = ax1.axis() ax1.vlines(x['TC'][0], a[2], a[3], 'k', lw=0.25) #population ax2 = fig.add_subplot(gs[:, 2], frameon=False) ax2.xaxis.set_ticks([]) ax2.yaxis.set_ticks([]) plot_population(ax2, params, isometricangle=np.pi/24, plot_somas=False, plot_morphos=True, num_unitsE=1, num_unitsI=1, clip_dendrites=True, main_pops=True, title='', rasterized=rasterized) ax2.set_title('multicompartment\nneurons', va='bottom', fontweight='normal') phlp.annotate_subplot(ax2, ncols=4, nrows=1, letter='C', linear_offset=0.065) #LFP traces in all channels ax3 = fig.add_subplot(gs[:, 3], frameon=True) phlp.remove_axis_junk(ax3) plot_signal_sum(ax3, params, fname=os.path.join(params.savefolder, 'LFPsum.h5'), unit='mV', vlimround=0.8, T=T, ylim=[ax2.axis()[2], ax2.axis()[3]], rasterized=False) ax3.set_title('LFP', va='bottom') ax3.xaxis.set_major_locator(plt.MaxNLocator(4)) phlp.annotate_subplot(ax3, ncols=4, nrows=1, letter='D', linear_offset=0.065) a = ax3.axis() ax3.vlines(x['TC'][0], a[2], a[3], 'k', lw=0.25) #draw some arrows: ax = plt.gca() ax.annotate("", xy=(0.27, 0.5), xytext=(.24, 0.5), xycoords="figure fraction", arrowprops=dict(facecolor='black', arrowstyle='simple'), ) ax.annotate("", xy=(0.52, 0.5), xytext=(.49, 0.5), xycoords="figure fraction", arrowprops=dict(facecolor='black', arrowstyle='simple'), ) ax.annotate("", xy=(0.78, 0.5), xytext=(.75, 0.5), xycoords="figure fraction", arrowprops=dict(facecolor='black', arrowstyle='simple'), ) return fig