{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get input map" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'scripts'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mscripts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspatial_network\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mperlin\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_entropy_maximisation_perlin_map\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_perlin_map\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mscripts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspatial_layout\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSpatialLayout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mscripts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minterneuron_placement\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mplot_neural_sheet\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'scripts'" ] } ], "source": [ "from scripts.spatial_network.perlin.run_entropy_maximisation_perlin_map import get_perlin_map\n", "from scripts.spatial_layout import SpatialLayout\n", "from scripts.interneuron_placement import plot_neural_sheet" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "seed = 1\n", "correlation_length = 200\n", "map_size = 900\n", "long_half = 100\n", "short_half = 25\n", "\n", "Ne = 3600\n", "Ni = 400\n", "\n", "Ne_per_row = int(np.sqrt(Ne))\n", "Ni_per_row = int(np.sqrt(Ni))\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "input_map = get_perlin_map(correlation_length, seed, map_size, Ne)\n", "spatial_layout = SpatialLayout(input_map, Ne, Ni, long_half, short_half, map_size )" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_neural_sheet(spatial_layout.ex_positions, spatial_layout.ex_tunings)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Choose interneuron and get entropies" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from scripts.interneuron_placement import Pickle, get_excitatory_phases_in_inhibitory_axon, get_correct_position_mesh" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from scripts.spatial_layout import get_entropy" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "in_idx = 144" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "pos_x = spatial_layout.in_positions[in_idx][0]\n", "pos_y = spatial_layout.in_positions[in_idx][1]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "equivalent_radius = np.sqrt(long_half*short_half)\n", "circular_axon = Pickle(pos_x, pos_y, equivalent_radius, equivalent_radius, 0)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "neuron_positions = spatial_layout.ex_positions\n", "neuron_tunings = spatial_layout.ex_tunings" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "number_of_phases = 36\n", "phases = np.linspace(-np.pi/2, np.pi/2, number_of_phases, endpoint=False)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "number_of_bins = 10\n", "tuning_bins = np.linspace(-np.pi, np.pi, number_of_bins+1)\n", "tunings = []\n", "entropies = []\n", "for phase in phases:\n", " axonal_cloud = Pickle(pos_x, pos_y, long_half, short_half, phase)\n", " tunings.append(get_excitatory_phases_in_inhibitory_axon(neuron_positions, neuron_tunings, axonal_cloud))\n", " entropies.append(get_entropy(axonal_cloud, neuron_positions, neuron_tunings, tuning_bins))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "circular_entropy = get_entropy(circular_axon, neuron_positions, neuron_tunings, tuning_bins)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "max_entropy = max(entropies)\n", "max_phase = phases[np.argmax(entropies)]\n", "max_id = np.argmax(entropies)\n", "\n", "min_entropy = min(entropies)\n", "min_phase = phases[np.argmin(entropies)]\n", "min_id = np.argmin(entropies)\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "circular_tuning = get_excitatory_phases_in_inhibitory_axon(neuron_positions, neuron_tunings, circular_axon)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Figures" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "import matplotlib" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "plt.style.use('../scripts/spatial_network/perlin/figures.mplstyle')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "width = 4.0/2.54\n", "height = 3.2/2.54\n", "\n", "detail_size = 2.5*long_half\n", "\n", "detail_x_low = pos_x-detail_size/2.0\n", "detail_x_high = pos_x+detail_size/2.0\n", "detail_y_low = pos_y-detail_size/2.0\n", "detail_y_high = pos_y+detail_size/2.0\n", "\n", "colormap = matplotlib.cm.get_cmap('hsv')\n", "\n", "bar_colors =[colormap(value) for value in np.linspace(0,1,number_of_bins)]\n", "\n", "X, Y = get_correct_position_mesh(spatial_layout.ex_positions)\n", "head_dir_preference = np.array(spatial_layout.ex_tunings).reshape((Ne_per_row, Ne_per_row))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Polar Interneuron" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(width,height))\n", "\n", "ax_map = fig.add_axes([0.05,0.1,0.7*height/width,0.7])\n", "\n", "ax_map.pcolor(X, Y, head_dir_preference, vmin=-np.pi, vmax=np.pi, cmap=colormap)\n", "\n", "line_length = 1.2*detail_size\n", "max_entropy_ell = Pickle(pos_x, pos_y, long_half, short_half, max_phase ).get_ellipse()\n", "\n", "max_entropy_line = plt.Line2D([pos_x-np.cos(max_phase)*line_length/2.0, pos_x+np.cos(max_phase)*line_length/2.0],[pos_y-np.sin(max_phase)*line_length/2.0, pos_y+np.sin(max_phase)*line_length/2.0] )\n", "max_entropy_line.set_linestyle('dotted')\n", "max_entropy_line.set_clip_on(False)\n", "\n", "\n", "min_entropy_ell = Pickle(pos_x, pos_y, long_half, short_half, min_phase ).get_ellipse()\n", "min_entropy_ell.set_linestyle('dashed')\n", "\n", "min_entropy_line = plt.Line2D([pos_x-np.cos(min_phase)*line_length/2.0, pos_x+np.cos(min_phase)*line_length/2.0],[pos_y-np.sin(min_phase)*line_length/2.0, pos_y+np.sin(min_phase)*line_length/2.0] )\n", "min_entropy_line.set_linestyle('dotted')\n", "min_entropy_line.set_clip_on(False)\n", "\n", "\n", "ax_map.add_artist(max_entropy_ell)\n", "ax_map.add_artist(max_entropy_line)\n", "ax_map.add_artist(min_entropy_ell)\n", "ax_map.add_artist(min_entropy_line)\n", "\n", "\n", "ax_map.set_xlim(detail_x_low, detail_x_high)\n", "ax_map.set_ylim(detail_y_low, detail_y_high)\n", "\n", "ax_map.spines[\"right\"].set_visible(False)\n", "ax_map.spines[\"left\"].set_visible(False)\n", "ax_map.spines[\"top\"].set_visible(False)\n", "ax_map.spines[\"bottom\"].set_visible(False)\n", "ax_map.xaxis.set_ticks([])\n", "ax_map.yaxis.set_ticks([])\n", "\n", "ax_map.text(pos_x-np.cos(max_phase)*line_length/2.0, pos_y-np.sin(max_phase)*line_length/2.0, \"$\\\\theta_{max}$\", va='bottom', ha='left')\n", "ax_map.text(pos_x+np.cos(min_phase)*line_length/2.0, pos_y+np.sin(min_phase)*line_length/2.0, \"$\\\\theta_{min}$\", va='center', ha='left')\n", "\n", "\n", "ax_dist_max = fig.add_axes([0.05+0.7*height/width+0.03, 0.1, 1-0.75*height/width-0.05-0.05-0.1, 0.27])\n", "n_max_entropy, _, bars = ax_dist_max.hist(tunings[max_id], bins=number_of_bins, range=(-np.pi, np.pi))\n", "for bar, bar_color in zip(bars, bar_colors):\n", " bar.set_color(bar_color)\n", "ax_dist_max.text(0,1.2,\"$\\\\theta_{max}$\\n\"+\"{:.2f}\".format(entropies[max_id]), transform=ax_dist_max.transAxes, va='top')\n", " \n", "ax_dist_min = fig.add_axes([0.05+0.7*height/width+0.03, 0.48, 1-0.75*height/width-0.05-0.05-0.1, 0.27])\n", "n_min_entropy, _, bars = ax_dist_min.hist(tunings[min_id], bins=number_of_bins, range=(-np.pi, np.pi))\n", "for bar, bar_color in zip(bars, bar_colors):\n", " bar.set_color(bar_color)\n", "ax_dist_min.text(0,1.2,\"$\\\\theta_{min}$\\n\"+\"{:.2f}\".format(entropies[min_id]), transform=ax_dist_min.transAxes, va='top')\n", "\n", "for ax in [ax_dist_max, ax_dist_min]:\n", " ax.set_ylim(0, max(max(n_max_entropy), max(n_min_entropy))) \n", " ax.spines[\"right\"].set_visible(False)\n", " ax.spines[\"left\"].set_visible(False)\n", " ax.spines[\"top\"].set_visible(False)\n", " ax.spines[\"bottom\"].set_linewidth(0.5)\n", " ax.xaxis.set_ticks([])\n", " ax.yaxis.tick_right()\n", "\n", "fig.savefig(\"../figures/figure_4_paper_perlin/B_ii_max_entropy_rule_polar_ins.png\")\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Circular Interneuron" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "from scripts.spatial_network.perlin.figure_utils import add_length_scale" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(width,height))\n", "\n", "ax_map = fig.add_axes([0.05,0.1,0.7*height/width,0.7])\n", "\n", "ax_map.pcolor(X, Y, head_dir_preference, vmin=-np.pi, vmax=np.pi, cmap=colormap)\n", "\n", "circle = Pickle(pos_x, pos_y, equivalent_radius, equivalent_radius, 0).get_ellipse()\n", "\n", "\n", "ax_map.add_artist(circle)\n", "\n", "ax_map.set_xlim(detail_x_low, detail_x_high)\n", "ax_map.set_ylim(detail_y_low, detail_y_high)\n", "\n", "ax_map.spines[\"right\"].set_visible(False)\n", "ax_map.spines[\"left\"].set_visible(False)\n", "ax_map.spines[\"top\"].set_visible(False)\n", "ax_map.spines[\"bottom\"].set_visible(False)\n", "ax_map.xaxis.set_ticks([])\n", "ax_map.yaxis.set_ticks([])\n", "\n", "add_length_scale(ax_map, 100, detail_x_high+30, detail_x_high+10+100, detail_y_low+40, detail_y_low+40)\n", "\n", "\n", "ax_dist = fig.add_axes([0.05+0.7*height/width+0.03, 0.375, 1-0.75*height/width-0.05-0.05-0.1, 0.27])\n", "n_circle, _, bars = ax_dist.hist(circular_tuning, bins=number_of_bins, range=(-np.pi, np.pi))\n", "for bar, bar_color in zip(bars, bar_colors):\n", " bar.set_color(bar_color)\n", " \n", "ax_dist.text(0,1.2,\"circ. \\n{:.2f}\".format(circular_entropy), transform=ax_dist.transAxes, va='top')\n", " \n", "\n", "for ax in [ax_dist]:\n", " ax.set_ylim(0, max(max(n_max_entropy), max(n_min_entropy))) \n", " ax.spines[\"right\"].set_visible(False)\n", " ax.spines[\"left\"].set_visible(False)\n", " ax.spines[\"top\"].set_visible(False)\n", " ax.spines[\"bottom\"].set_linewidth(0.5)\n", " ax.xaxis.set_ticks([])\n", " ax.yaxis.tick_right()\n", " \n", "\n", "fig.savefig(\"../figures/figure_4_paper_perlin/B_ii_max_entropy_rule_circular_in.png\")\n", " " ] } ], "metadata": { "kernelspec": { "display_name": "subiculum_polar_interneurons_from_paul", "language": "python", "name": "subiculum_polar_interneurons_from_paul" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }