|
@@ -1,3 +1,4 @@
|
|
|
+import itertools
|
|
|
import os
|
|
|
|
|
|
import matplotlib.legend as mlegend
|
|
@@ -23,9 +24,8 @@ from scripts.spatial_network.perlin.run_entropy_maximisation_perlin_map import D
|
|
|
|
|
|
plt.style.use('figures.mplstyle')
|
|
|
|
|
|
-FIGURE_SAVE_PATH = '../../../figures/figure_4_paper_perlin/'
|
|
|
-# FIGURE_SAVE_PATH = '../../figures/figure_4_poster_fens/'
|
|
|
-
|
|
|
+FIGURE_SAVE_PATH = '../../../figures/figure_4_paper_perlin/svg_figures/'
|
|
|
+FIGURE_SAVE_FORMAT = '.pdf'
|
|
|
save_figs = False
|
|
|
|
|
|
|
|
@@ -138,6 +138,17 @@ def get_closest_correlation_length(traj, correlation_length):
|
|
|
return corr_len
|
|
|
|
|
|
|
|
|
+def get_closest_fit_correlation_length(traj, fit_corr_len):
|
|
|
+ corr_len_fit_dict = correlation_length_fit_dict(traj, map_type='perlin', load=True)
|
|
|
+ available_lengths = list(corr_len_fit_dict.values())
|
|
|
+ closest_length = available_lengths[np.argmin(np.abs(np.array(available_lengths) - fit_corr_len))]
|
|
|
+ closest_corresponding_scale = list(corr_len_fit_dict.keys())[list(corr_len_fit_dict.values()).index(closest_length)]
|
|
|
+ if closest_length != fit_corr_len:
|
|
|
+ print("Warning: desired fit correlation length {:.1f} not available. Taking {:.1f} instead".format(
|
|
|
+ fit_corr_len, closest_length))
|
|
|
+ return closest_corresponding_scale
|
|
|
+
|
|
|
+
|
|
|
def colorbar(mappable):
|
|
|
from mpl_toolkits.axes_grid1 import make_axes_locatable
|
|
|
import matplotlib.pyplot as plt
|
|
@@ -208,7 +219,7 @@ def plot_firing_rate_map_excitatory(traj, direction_idx, plot_run_names, exempla
|
|
|
ax.cax.annotate("fr (Hz)", xy=(1, 1), xytext=(3, 3), xycoords="axes fraction", textcoords="offset points")
|
|
|
# fig.tight_layout()
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'C_firing_rate_map_excitatory.png', dpi=300)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'C_firing_rate_map_excitatory' + FIGURE_SAVE_FORMAT, dpi=300)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -263,11 +274,13 @@ def plot_firing_rate_map_inhibitory(traj, direction_idx, plot_run_names, selecte
|
|
|
remove_ticks(ax)
|
|
|
# fig.colorbar(c, ax=ax, label="f (Hz)")
|
|
|
# fig.suptitle('spatial firing rate map', fontsize=16)
|
|
|
- ax.cax.colorbar(c)
|
|
|
+ cbar = ax.cax.colorbar(c)
|
|
|
+ cbar_ticks = range(0,151,30)
|
|
|
+ cbar.ax.set_yticks(cbar_ticks)
|
|
|
ax.cax.annotate("fr (Hz)", xy=(1, 1), xytext=(3, 3), xycoords="axes fraction", textcoords="offset points")
|
|
|
# fig.tight_layout()
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'C_firing_rate_map_inhibitory.png', dpi=300)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'C_firing_rate_map_inhibitory' + FIGURE_SAVE_FORMAT, dpi=300)
|
|
|
plt.close(fig)
|
|
|
return max_val
|
|
|
|
|
@@ -295,13 +308,13 @@ def plot_hdi_over_tuning(traj, plot_run_names):
|
|
|
ax.set_title('hdi over input tuning', fontsize=16)
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'hdi_over_tuning.png')
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'hdi_over_tuning' + FIGURE_SAVE_FORMAT)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
|
def normal_labels(label):
|
|
|
if label == POLARIZED:
|
|
|
- label = 'polar'
|
|
|
+ label = 'polarized'
|
|
|
elif label == NO_SYNAPSES:
|
|
|
label = 'no interneurons'
|
|
|
return label
|
|
@@ -309,15 +322,15 @@ def normal_labels(label):
|
|
|
|
|
|
def short_labels(label):
|
|
|
if label == POLARIZED:
|
|
|
- label = 'polar'
|
|
|
+ label = 'pol.'
|
|
|
elif label == CIRCULAR:
|
|
|
- label = 'circ.'
|
|
|
+ label = 'cir.'
|
|
|
elif label == "no conn":
|
|
|
label = "no inh."
|
|
|
return label
|
|
|
|
|
|
|
|
|
-def plot_input_map(traj, run_name, figsize=(panel_size, panel_size), figname='input_map.png'):
|
|
|
+def plot_input_map(traj, run_name, figsize=(panel_size, panel_size), figname='input_map' + FIGURE_SAVE_FORMAT):
|
|
|
n_ex = int(np.sqrt(traj.N_E))
|
|
|
|
|
|
width, height = figsize
|
|
@@ -355,6 +368,93 @@ def plot_input_map(traj, run_name, figsize=(panel_size, panel_size), figname='in
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
|
+def plot_example_input_maps(traj, figsize=(panel_size, panel_size), figname='perlin_example_input_maps' + FIGURE_SAVE_FORMAT):
|
|
|
+ n_ex = int(np.sqrt(traj.N_E))
|
|
|
+
|
|
|
+ width, height = figsize
|
|
|
+
|
|
|
+ fig = plt.figure(figsize=(width, height))
|
|
|
+
|
|
|
+ axes = ImageGrid(fig, (0.1, 0.1, 0.85, 0.85), axes_pad=panel_size / 12.0, nrows_ncols=(3, 3))
|
|
|
+
|
|
|
+ fit_corr_len_list = [20, 50, 100]
|
|
|
+ seed_list = [1, 2, 3]
|
|
|
+ corr_and_seed = itertools.product(fit_corr_len_list, seed_list)
|
|
|
+
|
|
|
+ corr_len_fit_dict = correlation_length_fit_dict(traj, map_type='perlin', load=True)
|
|
|
+
|
|
|
+ for idx, (ax, (fit_corr_len, seed)) in enumerate(zip(axes, corr_and_seed)):
|
|
|
+ corresp_scale = get_closest_fit_correlation_length(traj, fit_corr_len)
|
|
|
+ par_dict = {'seed': seed, 'correlation_length': corresp_scale}
|
|
|
+
|
|
|
+ run_name = filter_run_names_by_par_dict(traj, par_dict)[0]
|
|
|
+ print(run_name)
|
|
|
+ traj.f_set_crun(run_name)
|
|
|
+
|
|
|
+ X, Y = get_correct_position_mesh(traj.results.runs[run_name].ex_positions)
|
|
|
+ head_dir_preference = np.array(traj.results.runs[run_name].ex_tunings).reshape((n_ex, n_ex))
|
|
|
+ scale_length = traj.morphology.long_axis * 2
|
|
|
+ traj.f_restore_default()
|
|
|
+
|
|
|
+ ax.pcolor(X, Y, head_dir_preference, vmin=-np.pi, vmax=np.pi, cmap=head_direction_input_colormap)
|
|
|
+
|
|
|
+ for spine in ax.spines.values():
|
|
|
+ spine.set_edgecolor("grey")
|
|
|
+ spine.set_linewidth(0.5)
|
|
|
+ remove_ticks(ax)
|
|
|
+
|
|
|
+ ax.set_ylabel('{:3.0f} um'.format(corr_len_fit_dict[corresp_scale]))
|
|
|
+
|
|
|
+ inhibitory_axonal_cloud_array = traj.results.runs[run_name].inhibitory_axonal_cloud_array
|
|
|
+
|
|
|
+ plt_polar_id = 255
|
|
|
+ plt_polar_coordinates = inhibitory_axonal_cloud_array[plt_polar_id]
|
|
|
+ plt_polar_neuron = Pickle(plt_polar_coordinates[0],
|
|
|
+ plt_polar_coordinates[1],
|
|
|
+ traj.morphology.long_axis,
|
|
|
+ traj.morphology.short_axis,
|
|
|
+ plt_polar_coordinates[2])
|
|
|
+
|
|
|
+ circ_radius = np.sqrt(traj.morphology.long_axis * traj.morphology.short_axis)
|
|
|
+
|
|
|
+ plt_circ_id = 65
|
|
|
+ plt_circ_coordinates = inhibitory_axonal_cloud_array[plt_circ_id]
|
|
|
+ plt_circ_neuron = Pickle(plt_circ_coordinates[0],
|
|
|
+ plt_circ_coordinates[1],
|
|
|
+ circ_radius,
|
|
|
+ circ_radius,
|
|
|
+ plt_circ_coordinates[2])
|
|
|
+
|
|
|
+ plt_interneurons = [plt_polar_neuron, plt_circ_neuron]
|
|
|
+
|
|
|
+ for p in plt_interneurons:
|
|
|
+ ell = p.get_ellipse()
|
|
|
+ edgecolor = 'black'
|
|
|
+ alpha = 1
|
|
|
+ zorder = 10
|
|
|
+ linewidth = 1.
|
|
|
+
|
|
|
+ ell.set_edgecolor(edgecolor)
|
|
|
+ ell.set_alpha(alpha)
|
|
|
+ ell.set_zorder(zorder)
|
|
|
+ ell.set_linewidth(linewidth)
|
|
|
+ ax.add_artist(ell)
|
|
|
+
|
|
|
+
|
|
|
+ if idx == 8:
|
|
|
+ start_scale_x = 100
|
|
|
+ end_scale_x = start_scale_x + scale_length
|
|
|
+ start_scale_y = -70
|
|
|
+ end_scale_y = start_scale_y
|
|
|
+
|
|
|
+ add_length_scale(ax, scale_length, start_scale_x, end_scale_x, start_scale_y, end_scale_y)
|
|
|
+ ax.cax.set_visible(False)
|
|
|
+
|
|
|
+ if save_figs:
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + figname)
|
|
|
+ plt.close(fig)
|
|
|
+
|
|
|
+
|
|
|
def plot_axonal_clouds(traj, plot_run_names):
|
|
|
n_ex = int(np.sqrt(traj.N_E))
|
|
|
|
|
@@ -431,7 +531,7 @@ def plot_axonal_clouds(traj, plot_run_names):
|
|
|
traj.f_restore_default()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'B_i_axonal_clouds.png')
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'B_i_axonal_clouds' + FIGURE_SAVE_FORMAT)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -469,7 +569,7 @@ def plot_orientation_maps_diff_scales(traj):
|
|
|
traj.f_restore_default()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'orientation_maps_diff_scales.png')
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'orientation_maps_diff_scales' + FIGURE_SAVE_FORMAT)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -535,12 +635,12 @@ def plot_orientation_maps_diff_scales_with_ellipse(traj):
|
|
|
fig.tight_layout()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'F_orientation_maps_diff_scales_with_ellipse.png')
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'F_orientation_maps_diff_scales_with_ellipse' + FIGURE_SAVE_FORMAT)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
|
def plot_polar_plot_excitatory(traj, plot_run_names, selected_neuron_idx,
|
|
|
- figname=FIGURE_SAVE_PATH + 'D_polar_plot_excitatory.png'):
|
|
|
+ figname=FIGURE_SAVE_PATH + 'D_polar_plot_excitatory' + FIGURE_SAVE_FORMAT):
|
|
|
directions = np.linspace(-np.pi, np.pi, traj.input.number_of_directions, endpoint=False)
|
|
|
directions_plt = list(directions)
|
|
|
directions_plt.append(directions[0])
|
|
@@ -554,27 +654,28 @@ def plot_polar_plot_excitatory(traj, plot_run_names, selected_neuron_idx,
|
|
|
|
|
|
line_styles = ['dotted', 'solid', 'dashed']
|
|
|
colors = ['r', 'lightsalmon', 'grey']
|
|
|
- labels = ['polar ', 'circ. ', 'no inh.']
|
|
|
+ labels = ['pol. ', 'cir. ', 'no inh.']
|
|
|
line_widths = [1.5, 1.5, 1]
|
|
|
zorders = [10, 2, 1]
|
|
|
|
|
|
max_rate = 0.0
|
|
|
- ax.plot([], [], color='white',label=' HDI')
|
|
|
-
|
|
|
+ ax.plot([], [], color='white',label=' ')
|
|
|
+ hdis = []
|
|
|
for run_idx, run_name in enumerate(plot_run_names):
|
|
|
# label = traj.derived_parameters.runs[run_name].morphology.morph_label
|
|
|
label = labels[run_idx]
|
|
|
hdi = traj.results.runs[run_name].head_direction_indices[selected_neuron_idx]
|
|
|
-
|
|
|
+ hdis.append(hdi)
|
|
|
tuning_vectors = traj.results.runs[run_name].tuning_vectors
|
|
|
rate_plot = [np.linalg.norm(v) for v in tuning_vectors[plot_n_idx]]
|
|
|
run_max_rate = np.max(rate_plot)
|
|
|
if run_max_rate > max_rate:
|
|
|
max_rate = run_max_rate
|
|
|
rate_plot.append(rate_plot[0])
|
|
|
+ # plt_label = '{:s} {:.2f}'.format(short_labels(label), hdi)
|
|
|
+ plt_label = '{:s}'.format(short_labels(label))
|
|
|
ax.plot(directions_plt, rate_plot, linewidth=line_widths[run_idx],
|
|
|
- label='{:s} {:.2f}'.format(short_labels(label), hdi),
|
|
|
- color=colors[run_idx], linestyle=line_styles[run_idx], zorder=zorders[run_idx])
|
|
|
+ label=plt_label, color=colors[run_idx], linestyle=line_styles[run_idx], zorder=zorders[run_idx])
|
|
|
# ax.set_title('Firing Rate')
|
|
|
# ax.plot([0.0, 0.0], [0.0, 1.05 * max_rate], color='red', alpha=0.25, linewidth=4.)
|
|
|
# TODO: Set ticks for polar
|
|
@@ -586,6 +687,14 @@ def plot_polar_plot_excitatory(traj, plot_run_names, selected_neuron_idx,
|
|
|
ax.yaxis.grid(linewidth=0.4)
|
|
|
leg = ax.legend(loc="lower right", bbox_to_anchor=(1.15, -0.2), handlelength=1, fontsize="medium")
|
|
|
leg.get_frame().set_linewidth(0.0)
|
|
|
+
|
|
|
+ hdi_box_x, hdi_box_y = (0.86, -0.09)
|
|
|
+ hdi_box_dy = 0.14
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y + 3 * hdi_box_dy, 'HDI', fontsize='medium', transform=ax.transAxes,zorder=9.)
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y + 2 * hdi_box_dy, '{:.2f}'.format(hdis[0]), fontsize='medium',transform=ax.transAxes, zorder=9.)
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y + hdi_box_dy, '{:.2f}'.format(hdis[1]), fontsize='medium', transform=ax.transAxes,zorder=9.)
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y, '{:.2f}'.format(hdis[2]), fontsize='medium', transform=ax.transAxes,zorder=9.)
|
|
|
+
|
|
|
ax.axes.spines["polar"].set_visible(False)
|
|
|
if save_figs:
|
|
|
plt.savefig(figname)
|
|
@@ -593,7 +702,7 @@ def plot_polar_plot_excitatory(traj, plot_run_names, selected_neuron_idx,
|
|
|
|
|
|
|
|
|
def plot_polar_plot_inhibitory(traj, plot_run_names, selected_neuron_idx, figname=FIGURE_SAVE_PATH +
|
|
|
- 'D_polar_plot_inhibitory.png'):
|
|
|
+ 'D_polar_plot_inhibitory' + FIGURE_SAVE_FORMAT):
|
|
|
directions = np.linspace(-np.pi, np.pi, traj.input.number_of_directions, endpoint=False)
|
|
|
directions_plt = list(directions)
|
|
|
directions_plt.append(directions[0])
|
|
@@ -607,12 +716,12 @@ def plot_polar_plot_inhibitory(traj, plot_run_names, selected_neuron_idx, fignam
|
|
|
|
|
|
line_styles = ['dotted', 'solid']
|
|
|
colors = ['b', 'lightblue']
|
|
|
- labels = ['polar ', 'circ. ']
|
|
|
+ labels = ['pol. ', 'cir. ']
|
|
|
|
|
|
line_widths = [1.5, 1.5]
|
|
|
zorders = [10, 2]
|
|
|
|
|
|
- ax.plot([], [], color='white',label=' HDI')
|
|
|
+ ax.plot([], [], color='white',label=' ')
|
|
|
hdis = []
|
|
|
for run_idx, run_name in enumerate(plot_run_names[:2]):
|
|
|
# ax = axes[max_hdi_idx, run_idx]
|
|
@@ -624,8 +733,10 @@ def plot_polar_plot_inhibitory(traj, plot_run_names, selected_neuron_idx, fignam
|
|
|
tuning_vectors = traj.results.runs[run_name].inh_tuning_vectors
|
|
|
rate_plot = [np.linalg.norm(v) for v in tuning_vectors[plot_n_idx]]
|
|
|
rate_plot.append(rate_plot[0])
|
|
|
+ # plt_label = '{:s} {:.2f}'.format(short_labels(label), hdi)
|
|
|
+ plt_label = '{:s}'.format(short_labels(label))
|
|
|
ax.plot(directions_plt, rate_plot, linewidth=line_widths[run_idx],
|
|
|
- label='{:s} {:.2f}'.format(short_labels(label), hdi),
|
|
|
+ label=plt_label,
|
|
|
color=colors[run_idx], linestyle=line_styles[run_idx], zorder=zorders[run_idx])
|
|
|
# ax.set_title('Inh. Firing Rate')
|
|
|
# TODO: Set ticks for polar
|
|
@@ -639,7 +750,12 @@ def plot_polar_plot_inhibitory(traj, plot_run_names, selected_neuron_idx, fignam
|
|
|
leg = ax.legend(loc="lower right", bbox_to_anchor=(1.15, -0.15), handlelength=1, fontsize="medium")
|
|
|
leg.get_frame().set_linewidth(0.0)
|
|
|
|
|
|
- # hdi_box = ax.text(1.15, -0.15, 'HDI \n{:.2f} \n{:.2f}'.format(hdis[0], hdis[1]))
|
|
|
+ hdi_box_x, hdi_box_y = (0.86, -0.04)
|
|
|
+ hdi_box_dy = 0.14
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y+2*hdi_box_dy, 'HDI', fontsize='medium', transform=ax.transAxes, zorder=9.)
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y+hdi_box_dy, '{:.2f}'.format(hdis[0]), fontsize='medium', transform=ax.transAxes, zorder=9.)
|
|
|
+ hdi_box = ax.text(hdi_box_x, hdi_box_y, '{:.2f}'.format(hdis[1]), fontsize='medium', transform=ax.transAxes, zorder=9.)
|
|
|
+
|
|
|
|
|
|
ax.axes.spines["polar"].set_visible(False)
|
|
|
|
|
@@ -702,7 +818,7 @@ def plot_hdi_over_corr_len(traj, plot_run_names):
|
|
|
ax.set_xlim(0.0, 400.)
|
|
|
ax.legend()
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'hdi_over_corr_len_scaled.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'hdi_over_corr_len_scaled' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -729,7 +845,7 @@ def plot_hdi_histogram_excitatory(traj, plot_run_names):
|
|
|
fig.tight_layout()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'hdi_histogram_excitatory.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'hdi_histogram_excitatory' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -769,7 +885,7 @@ def plot_hdi_violin_excitatory(traj, plot_run_names):
|
|
|
fig.tight_layout()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'hdi_violin_excitatory.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'hdi_violin_excitatory' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -802,7 +918,7 @@ def plot_hdi_violin_inhibitory(traj, plot_run_names):
|
|
|
fig.tight_layout()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'hdi_violin_inhibitory.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'hdi_violin_inhibitory' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1027,7 +1143,7 @@ def plot_hdi_histogram_combined_and_overlayed(traj, plot_run_names, ex_polar_plo
|
|
|
ax.set_xticklabels([])
|
|
|
|
|
|
else:
|
|
|
- ax.set_xlabel('head direction index')
|
|
|
+ ax.set_xlabel('HDI')
|
|
|
remove_frame(ax, ["top", "right", "bottom"])
|
|
|
max_density = 1.2 * max_density
|
|
|
fig.subplots_adjust(left=0.2, right=0.95, bottom=0.2)
|
|
@@ -1059,7 +1175,7 @@ def plot_hdi_histogram_combined_and_overlayed(traj, plot_run_names, ex_polar_plo
|
|
|
# plt.annotate('probability density', (-0.2,1.5), xycoords='axes fraction', rotation=90, fontsize=18)
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'E_hdi_histogram_combined_and_overlayed_cutoff_{}um.png'.format(cut_off_dist))
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'E_hdi_histogram_combined_and_overlayed_cutoff_{}um' + FIGURE_SAVE_FORMAT.format(cut_off_dist))
|
|
|
plt.close(fig)
|
|
|
|
|
|
return hdi_mean_dict
|
|
@@ -1115,7 +1231,7 @@ def plot_hdi_histogram_inhibitory(traj, plot_run_names, in_polar_plot_id):
|
|
|
fig.tight_layout()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'hdi_histogram_inhibitory.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'hdi_histogram_inhibitory' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1251,7 +1367,7 @@ def plot_exc_and_inh_hdi_over_simplex_grid_scale(traj, plot_run_names, cut_off_d
|
|
|
# plt.legend()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'F_hdi_over_grid_scale.png')
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'F_hdi_over_grid_scale' + FIGURE_SAVE_FORMAT)
|
|
|
plt.close(fig)
|
|
|
|
|
|
def plot_exc_and_inh_hdi_over_fit_corr_len(traj, plot_run_names, cut_off_dist):
|
|
@@ -1347,8 +1463,7 @@ def plot_exc_and_inh_hdi_over_fit_corr_len(traj, plot_run_names, cut_off_dist):
|
|
|
inh_col, inh_lin, inh_mar, inh_mar_size = inh_style_dict[label]
|
|
|
|
|
|
fit_corr_len = [corr_len_fit_dict[corr_len] for corr_len in corr_len_range]
|
|
|
- print(corr_len_range)
|
|
|
- print(fit_corr_len)
|
|
|
+
|
|
|
ax.plot(fit_corr_len, exc_hdi_mean, label='exc., ' + label, marker=exc_mar, color=exc_col, linestyle=exc_lin,
|
|
|
markersize=exc_mar_size, alpha=0.5)
|
|
|
plt.fill_between(fit_corr_len, exc_hdi_mean - exc_hdi_std,
|
|
@@ -1358,8 +1473,9 @@ def plot_exc_and_inh_hdi_over_fit_corr_len(traj, plot_run_names, cut_off_dist):
|
|
|
plt.fill_between(fit_corr_len, inh_hdi_mean - inh_hdi_std,
|
|
|
inh_hdi_mean + inh_hdi_std, alpha=0.3, color=inh_col)
|
|
|
|
|
|
- ax.set_xlabel('correlation length')
|
|
|
+ ax.set_xlabel('correlation length (um)')
|
|
|
ax.set_ylabel('HDI')
|
|
|
+ print('The used correlation length is ', corr_len_fit_dict[get_closest_correlation_length(traj, 200.0)])
|
|
|
ax.axvline(corr_len_fit_dict[get_closest_correlation_length(traj, 200.0)], color='k', linewidth=0.5, zorder=0)
|
|
|
ax.set_ylim(0.0, 1.0)
|
|
|
# ax.set_xlim(0.0, np.max(corr_len_range))
|
|
@@ -1373,7 +1489,7 @@ def plot_exc_and_inh_hdi_over_fit_corr_len(traj, plot_run_names, cut_off_dist):
|
|
|
# plt.legend()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'F_hdi_over_corr_len_scaled.png')
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'F_hdi_over_corr_len_scaled' + FIGURE_SAVE_FORMAT)
|
|
|
plt.close(fig)
|
|
|
|
|
|
def plot_in_degree_map(traj, plot_run_names):
|
|
@@ -1405,7 +1521,7 @@ def plot_in_degree_map(traj, plot_run_names):
|
|
|
traj.f_restore_default()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'in_degree_map.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'in_degree_map' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1430,7 +1546,7 @@ def plot_spatial_hdi_map(traj, plot_run_names):
|
|
|
fig.suptitle('spatial HDI map', fontsize=16)
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'spatial_hdi_map.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'spatial_hdi_map' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1455,7 +1571,7 @@ def plot_exc_spatial_hdi_map(traj, plot_run_names):
|
|
|
fig.suptitle('spatial exc. HDI map', fontsize=16)
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'spatial_exc_hdi_map.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'spatial_exc_hdi_map' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1481,7 +1597,7 @@ def plot_inh_spatial_hdi_map(traj, plot_run_names):
|
|
|
fig.suptitle('spatial inh. HDI map', fontsize=16)
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'spatial_inh_hdi_map.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'spatial_inh_hdi_map' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1494,10 +1610,10 @@ def get_phase_difference(total_difference):
|
|
|
return (total_difference + np.pi) % (2 * np.pi) - np.pi
|
|
|
|
|
|
|
|
|
-def plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names):
|
|
|
+def plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names, figsize=(9, 9)):
|
|
|
# The plot that Imre wanted
|
|
|
n_bins = traj.parameters.input.number_of_directions
|
|
|
- fig, ax = plt.subplots(1, 1, figsize=(9, 9))
|
|
|
+ fig, ax = plt.subplots(1, 1, figsize=figsize)
|
|
|
dir_bins = np.linspace(-np.pi, np.pi, n_bins + 1)
|
|
|
print(dir_bins)
|
|
|
|
|
@@ -1509,7 +1625,7 @@ def plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names):
|
|
|
for run_idx, run_name in enumerate(plot_run_names):
|
|
|
|
|
|
label = traj.derived_parameters.runs[run_name].morphology.morph_label
|
|
|
- labels.append(label)
|
|
|
+ labels.append(short_labels(label))
|
|
|
fr_similar_tunings = []
|
|
|
fr_different_tunings = []
|
|
|
|
|
@@ -1529,16 +1645,24 @@ def plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names):
|
|
|
|
|
|
plot_fr_array = np.array(plot_fr_array)
|
|
|
|
|
|
+ # rects1 = ax.bar(x - width / 2, plot_fr_array[:, 0], width,
|
|
|
+ # label=r'$\theta_{pref} \pm 30°$')
|
|
|
+ # rects2 = ax.bar(x + width / 2, plot_fr_array[:, 1], width,
|
|
|
+ # label=r'$\theta_{opp} \pm 30°$')
|
|
|
rects1 = ax.bar(x - width / 2, plot_fr_array[:, 0], width,
|
|
|
- label='theta pref +/- {}°'.format(np.round(similarity_threshold / np.pi * 180)))
|
|
|
+ label=r'sim.')
|
|
|
rects2 = ax.bar(x + width / 2, plot_fr_array[:, 1], width,
|
|
|
- label='theta pref + 180° +/- {}°'.format(np.round(similarity_threshold / np.pi * 180)))
|
|
|
+ label=r'diff.')
|
|
|
|
|
|
ax.set_xticks(x)
|
|
|
ax.set_xticklabels(labels)
|
|
|
- ax.set_title('Mean firing rate for tunings similar and different to input')
|
|
|
- ax.set_ylabel('Mean firing rate')
|
|
|
- ax.legend()
|
|
|
+ ax.spines['right'].set_visible(False)
|
|
|
+ ax.spines['top'].set_visible(False)
|
|
|
+ # ax.set_title('Mean firing rate for tunings similar and different to input')
|
|
|
+ # ax.set_ylabel('Mean firing rate')
|
|
|
+ ax.annotate(r'$\overline{\mathrm{fr}}$ (Hz)', (0.05, 1.0), xycoords='axes fraction', va="bottom", ha="right")
|
|
|
+ leg = ax.legend(loc="upper left", bbox_to_anchor=(0.0, 1.2), handlelength=1, fontsize="medium")
|
|
|
+ leg.get_frame().set_linewidth(0.0)
|
|
|
|
|
|
def autolabel(rects):
|
|
|
"""Attach a text label above each bar in *rects*, displaying its height."""
|
|
@@ -1556,7 +1680,7 @@ def plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names):
|
|
|
fig.tight_layout()
|
|
|
|
|
|
if save_figs:
|
|
|
- plt.savefig(FIGURE_SAVE_PATH + 'firing_rate_similar_vs_diff_tuning.png', dpi=200)
|
|
|
+ plt.savefig(FIGURE_SAVE_PATH + 'firing_rate_similar_vs_diff_tuning' + FIGURE_SAVE_FORMAT, dpi=200)
|
|
|
plt.close(fig)
|
|
|
|
|
|
|
|
@@ -1630,10 +1754,13 @@ if __name__ == "__main__":
|
|
|
print("\tpanel size: {:.2f} cm".format(panel_size * cm_per_inch))
|
|
|
print()
|
|
|
|
|
|
- #
|
|
|
+
|
|
|
plot_colorbar(figsize=(0.8 * panel_size, 0.8 * panel_size), figname=FIGURE_SAVE_PATH + "A_i_colormap.svg")
|
|
|
- plot_input_map(traj, run_name_dict[POLARIZED], figname="A_i_exemplary_input_map.png",
|
|
|
+ plot_input_map(traj, run_name_dict[POLARIZED], figname="A_i_exemplary_input_map"+FIGURE_SAVE_FORMAT,
|
|
|
figsize=(panel_size, panel_size))
|
|
|
+
|
|
|
+ plot_example_input_maps(traj, figsize=(2 * panel_size, 2 * panel_size))
|
|
|
+
|
|
|
plot_axonal_clouds(traj, plot_run_names)
|
|
|
|
|
|
#
|
|
@@ -1686,11 +1813,11 @@ if __name__ == "__main__":
|
|
|
":d}.png".format(polar_hdi, circular_hdi,
|
|
|
suggested_inhibitory_neuron))
|
|
|
|
|
|
- plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names)
|
|
|
+ plot_firing_rate_similar_vs_diff_tuning(traj, plot_run_names, figsize=(1.2*panel_size, 1.2*panel_size))
|
|
|
|
|
|
plot_orientation_maps_diff_scales_with_ellipse(traj)
|
|
|
|
|
|
- plot_exc_and_inh_hdi_over_simplex_grid_scale(traj, traj.f_get_run_names(), cut_off_dist=100.)
|
|
|
+ # plot_exc_and_inh_hdi_over_simplex_grid_scale(traj, traj.f_get_run_names(), cut_off_dist=100.)
|
|
|
|
|
|
plot_exc_and_inh_hdi_over_fit_corr_len(traj, traj.f_get_run_names(), cut_off_dist=100.)
|
|
|
|