{ "cells": [ { "cell_type": "code", "source": [ "# %load imports.py\n", "%load_ext autoreload\n", "%autoreload\n" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "execution_count": 119, "metadata": {} }, { "cell_type": "code", "source": [ "import brian2 as br\n", "from brian2.units import *\n", "import numpy as np" ], "outputs": [], "execution_count": 120, "metadata": {} }, { "cell_type": "code", "source": [ "import warnings \n", "def set_parameters_from_dict(neurongroup, dictionary_of_parameters):\n", " for param_key, param_value in dictionary_of_parameters.items():\n", " try: \n", " neurongroup.__setattr__(param_key, param_value)\n", " except AttributeError as err:\n", " warnings.warn(\"{:s} has no paramater {:s}\".format(neurongroup.name, param_key))" ], "outputs": [], "execution_count": 121, "metadata": {} }, { "cell_type": "markdown", "source": [ "# Definition of the Neuron and Synapse Model" ], "metadata": {} }, { "cell_type": "code", "source": [ "model_eqs = \"\"\"\n", "dv/dt =1.0/tau* (-v + u_ext) :volt (unless refractory)\n", "tau :second\n", "u_ext: volt\n", "v_threshold: volt\n", "v_reset: volt\n", "tau_refractory: second\n", "\"\"\"\n", "\n", "delta_synapse_model = 'w: volt'\n", "delta_synapse = 'v+=w'\n", "\n", "threshold = \"v>v_threshold\"\n", "reset = \"v=v_reset\"\n", "refractory = \"tau_refractory\"\n", "\n", "neuron_properties = {\n", " \"tau\": 10*ms,\n", " \"v_threshold\": -40*mV,\n", " \"v_reset\": -75*mV,\n", " \"tau_refractory\": 0.5*ms,\n", " \"u_ext\": - 39 * mV\n", "}\n", "\n", "pulse_strength = -60. * mV\n" ], "outputs": [], "execution_count": 122, "metadata": {} }, { "cell_type": "markdown", "source": [ "## Analysis Functions for the Spike Train" ], "metadata": {} }, { "cell_type": "code", "source": [ "def get_spike_train(delay, pulse_strength):\n", " neuron = br.NeuronGroup(N=1, \\\n", " name='single_neuron',\\\n", " model=model_eqs, \\\n", " threshold=threshold, \\\n", " reset=reset,\\\n", " refractory = refractory)\n", "\n", " set_parameters_from_dict(neuron, neuron_properties)\n", " neuron.v = neuron_properties[\"v_reset\"]\n", "\n", " spike_recorder = br.SpikeMonitor(source=neuron)\n", "\n", " auto_synapse = br.Synapses(source=neuron, target=neuron, model=delta_synapse_model, on_pre = delta_synapse, delay = delay)\n", " auto_synapse.connect()\n", " auto_synapse.w = pulse_strength\n", " \n", " net = br.Network(neuron)\n", " net.add(auto_synapse)\n", " net.add(spike_recorder)\n", " net.run(duration=duration)\n", " \n", " spike_train = spike_recorder.spike_trains()\n", " return spike_train\n" ], "outputs": [], "execution_count": 123, "metadata": {} }, { "cell_type": "code", "source": [ "def get_mean_period(spike_train):\n", " return (np.max(spike_train[0]) - np.min(spike_train[0])) / (spike_train[0].shape[0] - 1)" ], "outputs": [], "execution_count": 124, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "def get_mean_response(spike_trains_dict,t_isi):\n", " mean_response_dict = {}\n", "# t_isi = get_mean_period(spike_trains_dict[0.0 * ms])\n", " for delay, spike_train in spike_trains_dict.items():\n", " mean_response_dict[delay] = get_mean_period(spike_train) - t_isi\n", " return mean_response_dict" ], "outputs": [], "execution_count": 125, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "markdown", "source": [ "## Plotting Functions" ], "metadata": {} }, { "cell_type": "code", "source": [ "import matplotlib.pyplot as plt" ], "outputs": [], "execution_count": 126, "metadata": {} }, { "cell_type": "code", "source": [ "def plot_spiking(spike_trains_dict):\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " for key, times in spike_trains_dict.items():\n", " ax.plot(times[0]/ms, key*np.ones(times[0].shape), 'b.')\n", "# ax.plot(spike_train[0]/ms, np.ones(spike_train[0].shape), 'b|')\n", "\n", " ax.grid(axis='x')\n", "# ax.set_ylim(-0.1, 1.1)\n", " ax.set_xlabel(\"Time(ms)\");" ], "outputs": [], "execution_count": 127, "metadata": {} }, { "cell_type": "code", "source": [ "def plot_mean_period(mean_period_dict):\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " ax.plot(list(mean_period_dict.keys()), list(mean_period_dict.values()), 'b')\n", "\n", " ax.grid(axis='x')\n", " ax.set_xlabel(\"Delay (ms)\");" ], "outputs": [], "execution_count": 128, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "def plot_mean_response(mean_response_dict):\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " ax.plot(np.array(list(mean_response_dict.keys())), 1e3*np.array(list(mean_response_dict.values())), 'b')\n", " ax.plot(list(mean_response_dict.keys()), list(mean_response_dict.keys()), 'k--')\n", "\n", " ax.grid(axis='x')\n", " ax.set_xlabel(\"t_inh (ms)\")\n", " ax.set_ylabel(\"exc_spike_delay (ms)\");" ], "outputs": [], "execution_count": 129, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "def plot_delay_minus_response(mean_response_dict):\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " print(np.array(list(mean_response_dict.keys())))\n", " print(np.array(list(mean_response_dict.values())))\n", " print(np.array(list(mean_response_dict.keys()))-np.array(list(mean_response_dict.values())))\n", " ax.plot(list(mean_response_dict.keys()), np.array(list(mean_response_dict.keys()))-1e3*np.array(list(mean_response_dict.values())), 'b')\n", "\n", " ax.grid(axis='x')\n", " ax.set_xlabel(\"Delay (ms)\");" ], "outputs": [], "execution_count": 130, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "def plot_phase_response_curve(mean_response_dict, t_isi):\n", " \n", " phi_inh = np.array(list(mean_response_dict.keys())) * ms / t_isi\n", " delta_phi = -np.array(list(mean_response_dict.values())) * second / t_isi\n", " \n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " ax.plot(phi_inh, delta_phi, 'b')\n", " ax.plot(phi_inh, -phi_inh, 'k--')\n", "\n", " ax.grid(axis='x')\n", " ax.set_xlabel(\"phase of inhibition (ms)\")\n", " ax.set_ylabel(\"phase shift (ms)\");" ], "outputs": [], "execution_count": 131, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "markdown", "source": [ "## Execution" ], "metadata": {} }, { "cell_type": "code", "source": [ "duration = 1000*ms\n", "n_simulations = 100\n", "\n", "t_isi = get_mean_period(get_spike_train(0.0 * ms,0.0))\n", "\n", "delay_list = np.linspace(0.0 * ms,t_isi,n_simulations)\n", "spike_trains_dict = {}\n", "\n", "for delay in delay_list:\n", " spike_train = get_spike_train(delay, pulse_strength)\n", " spike_trains_dict[delay/ms] = spike_train" ], "outputs": [], "execution_count": 132, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "# mean_response_dict = get_mean_response(spike_trains_dict, t_isi)\n", "# plot_mean_response(mean_response_dict)" ], "outputs": [], "execution_count": 133, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "plot_phase_response_curve(mean_response_dict, t_isi)" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": [ "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\n" ] }, "metadata": { "needs_background": "light" } } ], "execution_count": 134, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } }, { "cell_type": "code", "source": [ "plot_spiking(spike_trains_dict)" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": [ "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\n" ] }, "metadata": { "needs_background": "light" } } ], "execution_count": 135, "metadata": { "collapsed": false, "outputHidden": false, "inputHidden": false } } ], "metadata": { "kernelspec": { "name": "micro_circuit_notebooks", "language": "python", "display_name": "micro_circuit_notebooks" }, "language_info": { "name": "python", "version": "3.7.5", "mimetype": "text/x-python", "codemirror_mode": { "name": "ipython", "version": 3 }, "pygments_lexer": "ipython3", "nbconvert_exporter": "python", "file_extension": ".py" }, "kernel_info": { "name": "micro_circuit_notebooks" }, "nteract": { "version": "0.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }