From 59d0f36d88fedf72e38f936e4b803c54557abb66 Mon Sep 17 00:00:00 2001 From: leon Date: Thu, 21 Sep 2023 18:36:06 +0200 Subject: [PATCH] added EI notebook --- README.md | 6 +- conf/config_EI.yml | 2 +- org/EI_bal.ipynb | 1 + org/EI_bal.org | 213 ++++++++++++ org/bump.org | 5 +- org/doc.org | 738 ++++++++++++++++++++-------------------- src/model/rate_model.py | 2 + 7 files changed, 592 insertions(+), 375 deletions(-) create mode 100644 org/EI_bal.ipynb create mode 100644 org/EI_bal.org diff --git a/README.md b/README.md index 3cf1a77..2be225a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Introduction This package provides an implementation of a recurrent neural network simulator with NUMBA. The network can have multiple neural populations, different connectivity profiles (all to all, sparse, tuned, ...). -For more info look at the config files in ./conf +For more info look at the config files in ./conf/. ## Installation Provide clear instructions on how to get your development environment running. @@ -25,7 +25,9 @@ model = Network(config_file_name, output_file_name, path_to_repo, **kwargs) # run the model model.run() ``` - +There are two configs here: +- The first one is config_bump.py which is a continuous 1 population bump attractor model as in the NB stim paper. +- The second is config_EI.py which are standard parameters for a tuned bump attractor balance network with 2 populations. ## Contributing Feel free to contribute. diff --git a/conf/config_EI.yml b/conf/config_EI.yml index 5531125..98d0722 100644 --- a/conf/config_EI.yml +++ b/conf/config_EI.yml @@ -105,7 +105,7 @@ M0: 1.0 # To add an attentional switch # if BUMP_SWITCH[i] == 1 it sets Iext[i] to zero before stimulus presentation -BUMP_SWITCH: [0, 0] +BUMP_SWITCH: [1, 1] ######################## # Plasticity diff --git a/org/EI_bal.ipynb b/org/EI_bal.ipynb new file mode 100644 index 0000000..ffbf05e --- /dev/null +++ b/org/EI_bal.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","metadata":{},"source":"EI Bump Attractor Network Model\n===============================\n\n"},{"cell_type":"markdown","metadata":{},"source":["## notebook settings\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"The autoreload extension is already loaded. To reload it, use:\n %reload_ext autoreload\nPython exe\n/home/leon/mambaforge/envs/dual_data/bin/python"}],"source":["%load_ext autoreload\n%autoreload 2\n%reload_ext autoreload\n\n%run ../notebooks/setup.py\n%matplotlib inline\n%config InlineBackend.figure_format = 'png'"]},{"cell_type":"markdown","metadata":{},"source":["## EI Balanced Attractor Model\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Here I implemented a balanced EI network that exhibits attractor dynamics.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### imports\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["import sys\nsys.path.insert(0, '/home/leon/tmp/rnn_numba') # put here the path to the repo\nfrom src.model.rate_model import Network"]},{"cell_type":"markdown","metadata":{},"source":["### Single trial\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Simulation\n\n"]},{"cell_type":"markdown","metadata":{},"source":["To run a simulation, first we need to define a network model.\nThe class Network takes three mandatory arguments:\n\n1. The name of the configuration file that defines the model,\n eg 'configEI.yml', these files are in ../conf/ and well detailed.\n\n2. The name of the output file that will contain the simulation data.\n eg 'bump'. Simulation results will be saved as a data frame to '../data/simul/bump.h5'.\n\n3. The path to the root of this repository.\n\nOne can also pass extra arguments to Network, basically any parameter that is in the config file so that it will be overwritten.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml\nSaving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5\nJab [[ 1. -1.5]\n [ 1. -1. ]]\nTuning, KAPPA [5. 0. 0. 0.]\nAsymmetry, SIGMA [0. 0. 0. 0.]\nIext [0.5 0.25]"}],"source":["REPO_ROOT = \"/home/leon/tmp/rnn_numba\"\nmodel = Network('config_EI.yml', 'bump', REPO_ROOT, VERBOSE=1)"]},{"cell_type":"markdown","metadata":{},"source":["Then one just runs the model with\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"#+begin_example\n Generating matrix Cij\n sparse connectivity\n with spec cosine structure\n sparse connectivity\n sparse connectivity\n sparse connectivity\n Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy\n Parameters:\n N 10000 Na [7500 2500] K 500.0 Ka [500. 500.]\n Iext [11.18033989 5.59016994] Jab [ 0.04472136 -0.06708204 0.04472136 -0.04472136]\n Tuning, KAPPA [5. 0. 0. 0.]\n Asymmetry, SIGMA [0. 0. 0. 0.]\n MF Rates: [0.25 0.5 ]\n Transfert Func Sigmoid\n Running simulation\n times (s) 0.25 rates (Hz) [0.03, 0.12]\n times (s) 0.5 rates (Hz) [0.03, 0.12]\n times (s) 0.75 rates (Hz) [0.03, 0.11]\n times (s) 1.0 rates (Hz) [0.03, 0.12]\n STIM ON\n times (s) 1.25 rates (Hz) [0.53, 0.74]\n times (s) 1.5 rates (Hz) [0.53, 0.74]\n STIM OFF\n times (s) 1.75 rates (Hz) [0.36, 0.6]\n times (s) 2.0 rates (Hz) [0.36, 0.6]\n times (s) 2.25 rates (Hz) [0.36, 0.6]\n times (s) 2.5 rates (Hz) [0.36, 0.6]\n times (s) 2.75 rates (Hz) [0.36, 0.6]\n times (s) 3.0 rates (Hz) [0.36, 0.6]\n times (s) 3.25 rates (Hz) [0.36, 0.6]\n times (s) 3.5 rates (Hz) [0.36, 0.6]\n times (s) 3.75 rates (Hz) [0.36, 0.6]\n times (s) 4.0 rates (Hz) [0.36, 0.6]\n saving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5\n Elapsed (with compilation) = 59.40574227599427s\n#+end_example"}],"source":["model.run()"]},{"cell_type":"markdown","metadata":{},"source":["#### Analysis\n\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Imports\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["import pandas as pd\nfrom src.analysis.decode import decode_bump"]},{"cell_type":"markdown","metadata":{},"source":["##### Load data\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"rates ff h_E h_I neurons time\n0 0.016484 0.516858 0.660207 -4.258005 0 0.249\n1 0.010508 0.068475 0.606468 -4.101016 1 0.249\n2 0.039072 0.148301 0.625659 -3.540477 2 0.249\n3 0.033662 1.185190 0.600276 -3.787884 3 0.249\n4 0.044454 -0.488017 0.634493 -3.749277 4 0.249"}],"source":["df = pd.read_hdf(REPO_ROOT + \"/data/simul/bump.h5\", mode=\"r\")\ndf_E = df[df.neurons<7500]\ndf_I = df[df.neurons>=7500]\n\nprint(df.head())"]},{"cell_type":"markdown","metadata":{},"source":["##### Rates\n\n"]},{"cell_type":"markdown","metadata":{},"source":["###### raster\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"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","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["fig, ax = plt.subplots(1, 2, figsize=[2*width, height])\npt = pd.pivot_table(df, values=\"rates\", index=[\"neurons\"], columns=\"time\")\n\nsns.heatmap(pt[:7500], cmap=\"jet\", ax=ax[0], vmax=1, vmin=0)\nax[0].set_yticks([0, 2500, 5000, 7500], [0, 2500, 5000, 7500])\nax[0].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4])\nax[0].set_title('Excitatory')\n\nsns.heatmap(pt[7500:], cmap=\"jet\", ax=ax[1], vmax=1, vmin=0)\nax[1].set_yticks([0, 625, 1250, 1875, 2500], [0, 625, 1250, 1875, 2500])\nax[1].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4])\nax[1].set_title('Inhibitory')\n\nplt.show()"]},{"cell_type":"markdown","metadata":{},"source":["###### histograms\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"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ybmsG+Q81h116VxqFEVRrN0IIYQQQtRP8mhGCCGEEFYjgYgQQgghrEYCESGEEEJYjXRWrecKCgrYtm0bISEhREREkJmZia+vLz169GDixIn06tWryscICwvj888/5/jx4yQkJODq6krLli0ZOXIk48ePx8HBoUbqqMuq+zzq9Xr27NnDzp07OX/+PMnJydjb2+Pv70+fPn149NFHadWqVal19OvXj8TExHId7/Dhw/j6+lapzbVVdZ9LS50HuSZLVx3n8fr16wwaNKhS7YmIiCi2zlauSemsWo+lpaUxa9Ysjh07Zna7RqNh2rRpLFy4sNLHWLNmDcuWLUOv15vd3qFDB1auXEnjxo2rtY66rLrP419//cWcOXM4ffp0iWV0Oh3PP/8806dPN7s9Pj6eu+++u9zHrK+BSHWfS0udB7kmS1dd57GygYi9vT3nzp0zWWdL16TcEamnFEVh3rx5hgulf//+TJo0CR8fH8LDw1m1ahXR0dGsWbMGb2/vSs30u2PHDt544w0AGjVqxMyZM+nUqRM3btxg06ZNHDx4kAsXLjBz5ky+/vprHB0dq6WOuqy6z2NOTg5PPPEEf/zxBwA9e/ZkwoQJtGzZkoyMDH755RfWr19PZmYmb731Fs7OzkyaNKlYPeHh4Ybl1157ja5du5Z6XC8vrwq1sy6oiWvSEudBrsnSVed5bNSoESEhIeUqu3jxYs6fPw/AkiVLim23qWtSEfXSt99+q7Rr105p166dsnDhwmLbk5OTleHDhyvt2rVTunTposTGxlao/rS0NKVPnz5Ku3btlP79+ytxcXHFyrz99tuGNnz66afVUkddV93nceXKlYb6X3nlFaWgoKBYmQsXLijBwcFKu3btlO7duytJSUnFynz00UeGehITEyvUhvqius+lolT9PMg1WbaaOI9l+fTTTw1tWLRokdkytnRNSmfVemrNmjUAuLq6smDBgmLbPT09efXVVwH1W/G6desqVP/WrVtJTk4GYM6cOfj5+RUrM2/ePFq2bGloT0FBgcXrqOuq+zxu2bIFAG9vbxYvXoxGoylWpn379jz99NMAZGRkcODAgWJlCr99NWrUiIYNG1aoDfVFdZ9LqPp5kGuybDVxHksTERHB8uXLAQgMDOTll182W86WrkkJROqhqKgowsLCABgwYACenp5mywUHBxv+oOzZs6dCx9i7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","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["mean_df_E = df_E.groupby(\"neurons\").mean()\nmean_df_E[mean_df_E.rates<.001] = np.nan\n\nmean_df_I = df_I.groupby(\"neurons\").mean()\nmean_df_I[mean_df_I.rates<.001] = np.nan\n\nsns.histplot(mean_df_E, x=mean_df_E.rates, kde=True, color='r', label='E')\nsns.histplot(mean_df_I, x=mean_df_I.rates, kde=True, color='b', label='I')\nplt.legend(fontsize=12)\nplt.xlabel(\"Rates (au)\")\nplt.show()"]},{"cell_type":"markdown","metadata":{},"source":["##### Tuning\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"time m0 m1 phase\n0 0.249 0.026883 0.000102 6.019133\n1 0.499 0.026896 0.000113 3.882348\n2 0.749 0.026606 0.000504 0.829742\n3 0.999 0.027251 0.000305 2.127723\n4 1.249 0.534482 0.597531 3.139320"}],"source":["data = df_E.groupby(['time'])['rates'].apply(decode_bump).reset_index()\ndata[['m0', 'm1', 'phase']] = pd.DataFrame(data['rates'].tolist(), index=data.index)\ndata = data.drop(columns=['rates'])\n\nprint(data.head())"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"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UdNGjBiBzZs3i6+XLVsmJpW2J73h92dv+IxA7/icnfmM9vZ30ZuYLtOqr69v8fe/SqUS2y31mzlzJsaMGdOh8SQnJ2PdunXia3u8PvSG3ydA7/ic/Iwta60fAz52IDAwEAkJCdYeBllQREQE1+nbGf43tS1SqRTx8fGIj49v13533HFHm5NbDhkyBGvWrOnI8CzCz8/P7PXw4cN7xb/B3vD/Wm/4jEDv+Jy94TOSed6euro6eHh4NNvXNOG+p6dns/2CgoJaTQDdVr3h+tBb/l/rDZ+Tn7F9OE+QiIiIiIioiwQHB4vtgoKCFvuabg8ICOiyMRFR78CADxERERERURcZNGiQ2M7Ozm6xr2mFxYEDB3bZmIiod2DAh4iIiIiIqItERUWJyZqbKhRgKjk5GYAhZUNISEiXj42I7BsDPkRERERERF0kMDAQUVFRAIBDhw6hurq6yX4pKSnIysoCAEyaNKm7hkdEdowBHyIiIiIioi40f/58AEBFRQVWrlwJvV5vtr2yshIrV64EAMjlcsybN6/bx0hE9odVuoiIiIiIiLrQlClTsGPHDiQlJWHfvn0oLCzEggULEBAQgIyMDGzYsAF5eXkAgKVLlyI0NNTKIyYie8CADxERERERURdbt24dFi9ejNOnTyMlJaXJfD4LFy7EokWLrDA6IrJHDPgQERERERF1MYVCgcTEROzatQt79uxBeno6lEolvL29MWLECCQkJGD06NHWHiYR2REGfIiIiIiIiLqBVCpFfHw84uPjrT0UIuoFmLSZiIiIiIiIiMjOMOBDRERERERERGRnGPAhIiIiIiIiIrIzDPgQEREREREREdkZJm0msgFBQUF4/PHHzV5Tz8b/pmRtveXfYG/4nL3hMwK943P2hs9Itq83/DvsDZ8R6B2fk5+xcySCIAgWOxoREREREREREVkdl3QREREREREREdkZBnyIiIiIiIiIiOwMAz5ERERERERERHaGSZuJrKikpARffvklkpKSkJWVhdraWigUCgwaNAgTJkzA7Nmz4erqau1hUidUVVVhypQpuH79Ou677z7885//tPaQyM7p9Xrs3LkTu3btQkZGBmpra+Hv74+RI0dizpw5iImJsfYQu8xLL72Ebdu2YfHixXjqqaesPRyLsPfrRFFRET777DMcO3YMubm5AICAgADExcVh1qxZiIiIsPII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","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["fig, ax = plt.subplots(1, 3, figsize=[2*width, height])\n\nsns.lineplot(data=data, x='time', y='m0', legend=False, lw=2, ax=ax[0])\nax[0].set_xlabel('Time (s)')\nax[0].set_ylabel('$\\mathcal{F}_0 (Hz)$')\nax[1].set_xticks([0, 1, 2, 3, 4])\n\nsns.lineplot(x=data['time'], y=data['m1']/data['m0'], legend=False, lw=2, ax=ax[1])\nax[1].set_xlabel('Time (s)')\nax[1].set_ylabel('$\\mathcal{F}_1 / \\mathcal{F}_0$')\nax[1].set_xticks([0, 1, 2, 3, 4])\n\nsns.lineplot(x=data['time'], y=data['phase']*180/np.pi, legend=False, lw=2, ax=ax[2])\nax[2].set_xlabel('Time (s)')\nax[2].set_ylabel('$\\phi$ (°)')\nax[2].set_xticks([0, 1, 2, 3, 4])\nax[2].set_yticks([0, 90, 180, 270, 360])\nplt.show()"]}],"metadata":{"org":null,"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"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.5.2"}},"nbformat":4,"nbformat_minor":0} diff --git a/org/EI_bal.org b/org/EI_bal.org new file mode 100644 index 0000000..e4538f8 --- /dev/null +++ b/org/EI_bal.org @@ -0,0 +1,213 @@ +#+STARTUP: fold +#+TITLE: EI Bump Attractor Network Model +#+PROPERTY: header-args:ipython :results both :exports both :async yes :session dual_data :kernel dual_data + +* notebook settings + +#+begin_src ipython + %load_ext autoreload + %autoreload 2 + %reload_ext autoreload + + %run ../notebooks/setup.py + %matplotlib inline + %config InlineBackend.figure_format = 'png' +#+end_src + +#+RESULTS: +: The autoreload extension is already loaded. To reload it, use: +: %reload_ext autoreload +: Python exe +: /home/leon/mambaforge/envs/dual_data/bin/python + +* EI Balanced Attractor Model +Here I implemented a balanced EI network that exhibits attractor dynamics. +** imports +#+begin_src ipython + import sys + sys.path.insert(0, '/home/leon/tmp/rnn_numba') # put here the path to the repo + from src.model.rate_model import Network +#+end_src + +#+RESULTS: + +** Single trial +*** Simulation +To run a simulation, first we need to define a network model. +The class Network takes three mandatory arguments: + + 1. The name of the configuration file that defines the model, + eg 'config_EI.yml', these files are in ../conf/ and well detailed. + + 2. The name of the output file that will contain the simulation data. + eg 'bump'. Simulation results will be saved as a data frame to '../data/simul/bump.h5'. + + 3. The path to the root of this repository. + +One can also pass extra arguments to Network, basically any parameter that is in the config file so that it will be overwritten. + +#+begin_src ipython + REPO_ROOT = "/home/leon/tmp/rnn_numba" + model = Network('config_EI.yml', 'bump', REPO_ROOT, VERBOSE=1) +#+end_src + +#+RESULTS: +: Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml +: Saving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5 +: Jab [[ 1. -1.5] +: [ 1. -1. ]] +: Tuning, KAPPA [5. 0. 0. 0.] +: Asymmetry, SIGMA [0. 0. 0. 0.] +: Iext [0.5 0.25] + +Then one just runs the model with +#+begin_src ipython + model.run() +#+end_src + +#+RESULTS: +#+begin_example + Generating matrix Cij + sparse connectivity + with spec cosine structure + sparse connectivity + sparse connectivity + sparse connectivity + Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Parameters: + N 10000 Na [7500 2500] K 500.0 Ka [500. 500.] + Iext [11.18033989 5.59016994] Jab [ 0.04472136 -0.06708204 0.04472136 -0.04472136] + Tuning, KAPPA [5. 0. 0. 0.] + Asymmetry, SIGMA [0. 0. 0. 0.] + MF Rates: [0.25 0.5 ] + Transfert Func Sigmoid + Running simulation + times (s) 0.25 rates (Hz) [0.03, 0.12] + times (s) 0.5 rates (Hz) [0.03, 0.12] + times (s) 0.75 rates (Hz) [0.03, 0.11] + times (s) 1.0 rates (Hz) [0.03, 0.12] + STIM ON + times (s) 1.25 rates (Hz) [0.53, 0.74] + times (s) 1.5 rates (Hz) [0.53, 0.74] + STIM OFF + times (s) 1.75 rates (Hz) [0.36, 0.6] + times (s) 2.0 rates (Hz) [0.36, 0.6] + times (s) 2.25 rates (Hz) [0.36, 0.6] + times (s) 2.5 rates (Hz) [0.36, 0.6] + times (s) 2.75 rates (Hz) [0.36, 0.6] + times (s) 3.0 rates (Hz) [0.36, 0.6] + times (s) 3.25 rates (Hz) [0.36, 0.6] + times (s) 3.5 rates (Hz) [0.36, 0.6] + times (s) 3.75 rates (Hz) [0.36, 0.6] + times (s) 4.0 rates (Hz) [0.36, 0.6] + saving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5 + Elapsed (with compilation) = 59.40574227599427s +#+end_example + +*** Analysis +**** Imports +#+begin_src ipython + import pandas as pd + from src.analysis.decode import decode_bump +#+end_src + +#+RESULTS: + +**** Load data +#+begin_src ipython + df = pd.read_hdf(REPO_ROOT + "/data/simul/bump.h5", mode="r") + df_E = df[df.neurons<7500] + df_I = df[df.neurons>=7500] + + print(df.head()) +#+end_src + +#+RESULTS: +: rates ff h_E h_I neurons time +: 0 0.016484 0.516858 0.660207 -4.258005 0 0.249 +: 1 0.010508 0.068475 0.606468 -4.101016 1 0.249 +: 2 0.039072 0.148301 0.625659 -3.540477 2 0.249 +: 3 0.033662 1.185190 0.600276 -3.787884 3 0.249 +: 4 0.044454 -0.488017 0.634493 -3.749277 4 0.249 +**** Rates +***** raster +#+begin_src ipython + fig, ax = plt.subplots(1, 2, figsize=[2*width, height]) + pt = pd.pivot_table(df, values="rates", index=["neurons"], columns="time") + + sns.heatmap(pt[:7500], cmap="jet", ax=ax[0], vmax=1, vmin=0) + ax[0].set_yticks([0, 2500, 5000, 7500], [0, 2500, 5000, 7500]) + ax[0].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) + ax[0].set_title('Excitatory') + + sns.heatmap(pt[7500:], cmap="jet", ax=ax[1], vmax=1, vmin=0) + ax[1].set_yticks([0, 625, 1250, 1875, 2500], [0, 625, 1250, 1875, 2500]) + ax[1].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) + ax[1].set_title('Inhibitory') + + plt.show() +#+end_src + +#+RESULTS: +[[file:./.ob-jupyter/f33e2bf59d4004bf01d9b42395a2fe97b381e362.png]] + +***** histograms + +#+begin_src ipython + mean_df_E = df_E.groupby("neurons").mean() + mean_df_E[mean_df_E.rates<.001] = np.nan + + mean_df_I = df_I.groupby("neurons").mean() + mean_df_I[mean_df_I.rates<.001] = np.nan + + sns.histplot(mean_df_E, x=mean_df_E.rates, kde=True, color='r', label='E') + sns.histplot(mean_df_I, x=mean_df_I.rates, kde=True, color='b', label='I') + plt.legend(fontsize=12) + plt.xlabel("Rates (au)") + plt.show() +#+end_src + +#+RESULTS: +[[file:./.ob-jupyter/66e9897b32db80297981892d9c7c48cbb08188f0.png]] + +**** Tuning + +#+begin_src ipython + data = df_E.groupby(['time'])['rates'].apply(decode_bump).reset_index() + data[['m0', 'm1', 'phase']] = pd.DataFrame(data['rates'].tolist(), index=data.index) + data = data.drop(columns=['rates']) + + print(data.head()) +#+end_src + +#+RESULTS: +: time m0 m1 phase +: 0 0.249 0.026883 0.000102 6.019133 +: 1 0.499 0.026896 0.000113 3.882348 +: 2 0.749 0.026606 0.000504 0.829742 +: 3 0.999 0.027251 0.000305 2.127723 +: 4 1.249 0.534482 0.597531 3.139320 + +#+begin_src ipython + fig, ax = plt.subplots(1, 3, figsize=[2*width, height]) + + sns.lineplot(data=data, x='time', y='m0', legend=False, lw=2, ax=ax[0]) + ax[0].set_xlabel('Time (s)') + ax[0].set_ylabel('$\mathcal{F}_0 (Hz)$') + ax[1].set_xticks([0, 1, 2, 3, 4]) + + sns.lineplot(x=data['time'], y=data['m1']/data['m0'], legend=False, lw=2, ax=ax[1]) + ax[1].set_xlabel('Time (s)') + ax[1].set_ylabel('$\mathcal{F}_1 / \mathcal{F}_0$') + ax[1].set_xticks([0, 1, 2, 3, 4]) + + sns.lineplot(x=data['time'], y=data['phase']*180/np.pi, legend=False, lw=2, ax=ax[2]) + ax[2].set_xlabel('Time (s)') + ax[2].set_ylabel('$\phi$ (°)') + ax[2].set_xticks([0, 1, 2, 3, 4]) + ax[2].set_yticks([0, 90, 180, 270, 360]) + plt.show() +#+end_src + +#+RESULTS: +[[file:./.ob-jupyter/2596d8031fe7e25fbeb082a671606fd6f2681fdc.png]] diff --git a/org/bump.org b/org/bump.org index 2085129..65958cd 100644 --- a/org/bump.org +++ b/org/bump.org @@ -21,6 +21,9 @@ : /home/leon/mambaforge/envs/dual_data/bin/python * Continuous Bump Attractor Model + +Here I will explain how to use the package to run a one population continuous attractor network model. + ** imports #+begin_src ipython import sys @@ -887,9 +890,9 @@ from src.analysis.decode import decode_bump : 0 2.596293 10.528442 -5.977084 0 0.499 0.0 : 1 1.005097 4.559610 -5.977084 1 0.499 0.0 : 2 3.421589 -1.393433 -5.977084 2 0.499 0.0 -: 3 2.504058 -1.709201 -5.977084 3 0.499 0.0 : 4 2.531308 -2.055951 -5.977084 4 0.499 0.0 +: 3 2.504058 -1.709201 -5.977084 3 0.499 0.0 #+begin_src ipython res = df.groupby(['time', 'J1'])['rates'].apply(decode_bump).reset_index() diff --git a/org/doc.org b/org/doc.org index 43cdd19..5207deb 100644 --- a/org/doc.org +++ b/org/doc.org @@ -1,5 +1,5 @@ #+STARTUP: fold -#+TITLE: RNN numba package +#+TITLE: EI Bump Attractor Network Model #+PROPERTY: header-args:ipython :results both :exports both :async yes :session dual_data :kernel dual_data * notebook settings @@ -20,7 +20,9 @@ : Python exe : /home/leon/mambaforge/envs/dual_data/bin/python -* Continuous Bump Attractor Model + +* EI Continuous Attractor Model +Here I implemented a balanced EI network that exhibits attractor dynamics. ** imports #+begin_src ipython import sys @@ -29,27 +31,35 @@ #+end_src #+RESULTS: + ** Single trial *** Simulation To run a simulation, first we need to define a network model. -The class Network takes two arguments: - 1. the name of the configuration file that defines the model. - This file is well detailed (check config_bump.yml or config_EI.yml) - 2. the name of the output file that will contain the simulation data. - The model writes all relevant data to a single dataframe stored in an h5 format +The class Network takes three mandatory arguments: + + 1. The name of the configuration file that defines the model, + eg 'config_EI.yml', these files are in ../conf/ and well detailed. + + 2. The name of the output file that will contain the simulation data. + eg 'bump'. Simulation results will be saved as a data frame to '../data/simul/bump.h5'. + + 3. The path to the root of this repository. + +One can also pass extra arguments to Network, basically any parameter that is in the config file so that it will be overwritten. #+begin_src ipython REPO_ROOT = "/home/leon/tmp/rnn_numba" - model = Network('config_bump.yml', 'bump', REPO_ROOT, VERBOSE=1) + model = Network('config_2pop.yml', 'bump', REPO_ROOT, VERBOSE=1) #+end_src #+RESULTS: -: Loading config from /home/leon/tmp/rnn_numba/conf/config_bump.yml +: Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml : Saving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5 -: Jab [[-2.75]] -: Tuning, KAPPA [0.4] -: Asymmetry, SIGMA [0.] -: Iext [14.] +: Jab [[ 2. -1.5] +: [ 1. -1. ]] +: Tuning, KAPPA [0.6 0. 0.6 0. ] +: Asymmetry, SIGMA [0. 0. 0. 0.] +: Iext [0.5 0.25] Then one just runs the model with #+begin_src ipython @@ -61,27 +71,41 @@ Then one just runs the model with Generating matrix Cij all to all connectivity with cosine structure + all to all connectivity + with cosine structure + all to all connectivity + with cosine structure + all to all connectivity + with cosine structure Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Parameters: - N 1000 Na [1000] K 1.0 Ka [1.] - Iext [14.] Jab [-2.75] - Tuning, KAPPA [0.4] - Asymmetry, SIGMA [0.] - MF Rates: [5.09090909] + N 2000 Na [1500 500] K 1.0 Ka [1. 1.] + Iext [0.5 0.25] Jab [ 2. -1.5 1. -1. ] + Tuning, KAPPA [0.6 0. 0.6 0. ] + Asymmetry, SIGMA [0. 0. 0. 0.] + MF Rates: [-0.25 -0. ] Transfert Func Sigmoid Running simulation - times (s) 0.5 rates (Hz) [2.18] - times (s) 1.0 rates (Hz) [2.19] + times (s) 0.25 rates (Hz) [15.38, 13.66] + times (s) 0.5 rates (Hz) [15.38, 13.65] + times (s) 0.75 rates (Hz) [15.38, 13.64] + times (s) 1.0 rates (Hz) [15.38, 13.67] STIM ON - times (s) 1.5 rates (Hz) [6.25] + times (s) 1.25 rates (Hz) [15.38, 13.83] + times (s) 1.5 rates (Hz) [15.38, 13.83] STIM OFF - times (s) 2.0 rates (Hz) [5.9] - times (s) 2.5 rates (Hz) [5.91] - times (s) 3.0 rates (Hz) [5.87] - times (s) 3.5 rates (Hz) [5.87] - times (s) 4.0 rates (Hz) [5.89] + times (s) 1.75 rates (Hz) [15.38, 13.81] + times (s) 2.0 rates (Hz) [15.38, 13.82] + times (s) 2.25 rates (Hz) [15.38, 13.84] + times (s) 2.5 rates (Hz) [15.38, 13.83] + times (s) 2.75 rates (Hz) [15.38, 13.84] + times (s) 3.0 rates (Hz) [15.38, 13.82] + times (s) 3.25 rates (Hz) [15.38, 13.81] + times (s) 3.5 rates (Hz) [15.38, 13.82] + times (s) 3.75 rates (Hz) [15.38, 13.82] + times (s) 4.0 rates (Hz) [15.38, 13.82] saving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5 - Elapsed (with compilation) = 7.23014812899055s + Elapsed (with compilation) = 14.116994161042385s #+end_example *** Analysis @@ -92,55 +116,68 @@ Then one just runs the model with #+end_src #+RESULTS: +: 7ecd988c-cf80-4c9a-b6be-f85e7bd11e6c **** Load data #+begin_src ipython - df = pd.read_hdf(REPO_ROOT + "/data/simul/bump.h5", mode="r") + df = pd.read_hdf(REPO_ROOT + "/data/simul/bump.h5", mode="r") + df_E = df[df.neurons<1500] + df_I = df[df.neurons>=500] print(df.head()) #+end_src #+RESULTS: -: rates ff h_E neurons time -: 0 2.512678 -11.005349 -5.810748 0 0.499 -: 1 1.003620 -0.271863 -5.810921 1 0.499 -: 2 4.395283 4.921598 -5.811103 2 0.499 -: 3 1.868867 -2.958338 -5.811292 3 0.499 -: 4 2.314441 -5.003102 -5.811489 4 0.499 +: rates ff h_E h_I neurons time +: 0 15.378125 -0.573451 30.780855 -20.504734 0 0.249 +: 1 15.378125 -0.419887 30.780855 -20.504734 1 0.249 +: 2 15.378125 -1.284868 30.780854 -20.504734 2 0.249 +: 3 15.378125 -0.012410 30.780853 -20.504734 3 0.249 +: 4 15.378125 -0.355423 30.780851 -20.504734 4 0.249 **** Rates ***** raster #+begin_src ipython - fig, ax = plt.subplots() + fig, ax = plt.subplots(1, 2, figsize=[2*width, height]) pt = pd.pivot_table(df, values="rates", index=["neurons"], columns="time") - sns.heatmap(pt, cmap="jet", ax=ax, vmax=15, vmin=0) - ax.set_yticks([0, 500, 1000], [0, 500, 1000]) - ax.set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) - ax.set_title('Excitatory') + sns.heatmap(pt[:1500], cmap="jet", ax=ax[0], vmax=15, vmin=0) + ax[0].set_yticks([0, 500, 1000, 1500], [0, 500, 1000, 1500]) + ax[0].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) + ax[0].set_title('Excitatory') + + sns.heatmap(pt[1500:], cmap="jet", ax=ax[1], vmax=15, vmin=0) + ax[1].set_yticks([0, 250, 500], [0, 250, 500]) + ax[1].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) + ax[1].set_title('Inhibitory') plt.show() #+end_src #+RESULTS: -[[file:./.ob-jupyter/306021ad36bc6d21d2cd282fdbdf644e30bf8ac9.png]] +: 81ce2943-73d4-4a52-811f-a560e64e339d ***** histograms #+begin_src ipython - mean_df = df.groupby("neurons").mean() - mean_df[mean_df.rates<.01] = np.nan + mean_df_E = df_E.groupby("neurons").mean() + mean_df_E[mean_df_E.rates<.001] = np.nan + + mean_df_I = df_I.groupby("neurons").mean() + mean_df_I[mean_df_I.rates<.001] = np.nan - sns.histplot(mean_df_E, x=mean_df_E.rates, kde=True, color='r') + sns.histplot(mean_df_E, x=mean_df_E.rates, kde=True, color='r', label='E') + sns.histplot(mean_df_I, x=mean_df_I.rates, kde=True, color='b', label='I') + plt.legend(fontsize=12) plt.xlabel("Rates (au)") plt.show() #+end_src #+RESULTS: -[[file:./.ob-jupyter/9d093648db94aadb517d2d376ca2e5a6d38d7d2a.png]] +: f30fef55-f4e2-4add-8f41-a0eff5181e5d **** Tuning #+begin_src ipython - data = df.groupby(['time'])['rates'].apply(decode_bump).reset_index() + data = df_E.groupby(['time'])['rates'].apply(decode_bump).reset_index() data[['m0', 'm1', 'phase']] = pd.DataFrame(data['rates'].tolist(), index=data.index) data = data.drop(columns=['rates']) @@ -149,11 +186,11 @@ Then one just runs the model with #+RESULTS: : time m0 m1 phase -: 0 0.499 2.182644 0.170818 0.151626 -: 1 0.999 2.189366 0.052484 2.583821 -: 2 1.499 6.248643 7.171486 3.136531 -: 3 1.999 5.900416 5.401989 3.128763 -: 4 2.499 5.910800 5.532978 3.094187 +: 0 0.249 0.513658 0.017674 3.175195 +: 1 0.499 0.503480 0.006174 1.890976 +: 2 0.749 0.517241 0.021237 2.946893 +: 3 0.999 0.498194 0.022528 4.234585 +: 4 1.249 4.686576 5.824244 3.141923 #+begin_src ipython fig, ax = plt.subplots(1, 3, figsize=[2*width, height]) @@ -177,14 +214,171 @@ Then one just runs the model with #+end_src #+RESULTS: -[[file:./.ob-jupyter/9d36516e62ac78b20c77346607d6a05bfc9d144d.png]] +[[file:./.ob-jupyter/a2843c01394ba579257416758c88eac704e22609.png]] + +#+begin_src ipython + + +#+end_src + +** Parameter Search +*** Changing J0 +**** Simulation +#+begin_src ipython + REPO_ROOT = "/home/leon/tmp/rnn_numba" + J0_list = np.linspace(.1, 3, 10) + print(J0_list) +#+end_src + +#+RESULTS: +: [0.1 0.42222222 0.74444444 1.06666667 1.38888889 1.71111111 +: 2.03333333 2.35555556 2.67777778 3. ] + +#+begin_src ipython + IF_LOAD_MAT = 0 + IF_SAVE_MAT = 1 + + for J0 in J0_list: + model = Network('config_2pop.yml', '2pop_J0_%.1f' % J0, REPO_ROOT, + IF_LOAD_MAT=IF_LOAD_MAT, IF_SAVE_MAT=IF_SAVE_MAT, + Jab=[1, -J0, 1, -1], VERBOSE=0) + + model.run() + + IF_LOAD_MAT = 1 + IF_SAVE_MAT = 0 +#+end_src + +#+RESULTS: +#+begin_example + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_0.0.h5 + Generating matrix Cij + Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + /home/leon/tmp/rnn_numba/src/model/rate_model.py:180: RuntimeWarning: invalid value encountered in divide + self.SIGMA = self.SIGMA / np.abs(self.Jab) + Elapsed (with compilation) = 13.715521463076584s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_0.3.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.55905929300934s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_0.6.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.694595383945853s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_0.9.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.68189989507664s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_1.2.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.617455482017249s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_1.5.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.692804301972501s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_1.8.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.68109585007187s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_2.1.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.621808980009519s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_2.4.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.653374025016092s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_2.7.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.588475476950407s + Loading config from /home/leon/tmp/rnn_numba/conf/config_2pop.yml + Saving data to /home/leon/tmp/rnn_numba/data/simul/2pop_J0_3.0.h5 + Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy + Running simulation + Elapsed (with compilation) = 13.580890160985291s +#+end_example + +**** Analysis +#+begin_src ipython + J0_list = np.linspace(0, 3, 11) + + df_list = [] + + for i in range(J0_list.shape[0]): + df_i = pd.read_hdf(REPO_ROOT + "/data/simul/2pop_J0_%.1f.h5" % J0_list[i], mode="r") + df_i['J0'] = J0_list[i] + df_list.append(df_i) + + df = pd.concat(df_list, ignore_index=True) + print(df.head()) +#+end_src + +#+RESULTS: +: rates ff h_E neurons time J0 +: 0 2.979453 9.873323 -5.351787 0 0.499 2.0 +: 1 2.830152 -4.640124 -5.351531 1 0.499 2.0 +: 2 3.098595 2.158386 -5.351274 2 0.499 2.0 +: 3 3.415840 -6.115636 -5.351014 3 0.499 2.0 +: 4 3.625322 0.626738 -5.350751 4 0.499 2.0 + + +#+begin_src ipython + res = df.groupby(['time', 'J0'])['rates'].apply(decode_bump).reset_index() + res[['m0', 'm1', 'phase']] = pd.DataFrame(res['rates'].tolist(), index=res.index) + res = res.drop(columns=['rates']) + print(res.head()) +#+end_src + +#+RESULTS: +: time J0 m0 m1 phase +: 0 0.499 2.0 2.643238 0.074680 4.044520 +: 1 0.499 2.2 2.506782 0.028911 3.321685 +: 2 0.499 2.4 2.372550 0.021852 6.135836 +: 3 0.499 2.6 2.273263 0.004630 5.104311 +: 4 0.499 2.8 2.154610 0.054661 5.969938 #+begin_src ipython + last = res[res.time==res.time.iloc[-1]] + last = last.drop(columns=['time']) + print(last.head()) +#+end_src + +#+RESULTS: +: J0 m0 m1 phase +: 77 2.0 7.223276 0.059838 5.009779 +: 78 2.2 6.785306 0.235569 5.189480 +: 79 2.4 6.319345 2.347832 3.364468 +: 80 2.6 6.067178 4.456472 2.924240 +: 81 2.8 5.822750 5.580686 3.089648 +#+begin_src ipython + sns.lineplot(last, x='J0', y=last['m1']/last['m0']) + plt.xlabel('Recurrent Strength $J_0$') + plt.ylabel('$\mathcal{F}_1$ (Hz)') + plt.show() #+end_src #+RESULTS: +[[file:./.ob-jupyter/f76613de4bb887e4b31e648704cdd64935475d1f.png]] + +#+begin_src ipython +#+end_src + +#+RESULTS: ** Multiple trials *** Simulations #+begin_src ipython @@ -220,7 +414,7 @@ Then one just runs the model with Generating matrix Cij Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 53.97293146402808s + Elapsed (with compilation) = 59.94008179299999s ########################################## trial 2 ########################################## @@ -228,7 +422,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_2.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 56.96205114200711s + Elapsed (with compilation) = 58.91828673589043s ########################################## trial 3 ########################################## @@ -236,7 +430,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_3.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 46.552777758974116s + Elapsed (with compilation) = 59.18604208598845s ########################################## trial 4 ########################################## @@ -244,7 +438,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_4.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 57.053969001048245s + Elapsed (with compilation) = 60.01277774409391s ########################################## trial 5 ########################################## @@ -252,7 +446,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_5.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 54.42072479397757s + Elapsed (with compilation) = 59.28222737403121s ########################################## trial 6 ########################################## @@ -260,7 +454,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_6.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 50.73790435300907s + Elapsed (with compilation) = 59.428383418009616s ########################################## trial 7 ########################################## @@ -268,7 +462,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_7.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 51.30651221697917s + Elapsed (with compilation) = 59.492747734999284s ########################################## trial 8 ########################################## @@ -276,7 +470,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_8.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 48.36234194302233s + Elapsed (with compilation) = 53.652442602906376s ########################################## trial 9 ########################################## @@ -284,7 +478,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_9.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 52.83128838700941s + Elapsed (with compilation) = 50.68888223904651s #+end_example *** Analysis @@ -308,19 +502,20 @@ from src.analysis.decode import decode_bump df_list.append(df_i) df = pd.concat(df_list, ignore_index=True) + df_E = df[df.neurons<7500] print(df.head()) #+end_src #+RESULTS: -: rates ff h_E h_I neurons time trial -: 0 0.620963 17.178619 7.837148 -24.014507 0 0.499 1 -: 1 0.348972 19.188986 8.049864 -25.528297 1 0.499 1 -: 2 0.044523 18.140488 8.291198 -27.459217 2 0.499 1 -: 3 0.051996 17.061010 7.774259 -26.545981 3 0.499 1 -: 4 0.396972 16.060816 8.087732 -25.197549 4 0.499 1 +: rates ff h_E h_I neurons time trial +: 0 0.026551 1.559067 0.607519 -3.676191 0 0.249 1 +: 1 0.035987 -0.175400 0.605969 -3.863151 1 0.249 1 +: 2 0.038527 -0.821442 0.616959 -4.002131 2 0.249 1 +: 3 0.054012 1.180297 0.596296 -3.823737 3 0.249 1 +: 4 0.053022 1.574449 0.541678 -3.569974 4 0.249 1 #+begin_src ipython - data = df.groupby(['time', 'trial'])['rates'].apply(decode_bump).reset_index() + data = df_E.groupby(['time', 'trial'])['rates'].apply(decode_bump).reset_index() data[['m0', 'm1', 'phase']] = pd.DataFrame(data['rates'].tolist(), index=data.index) data = data.drop(columns=['rates']) print(data.head()) @@ -328,11 +523,11 @@ from src.analysis.decode import decode_bump #+RESULTS: : time trial m0 m1 phase -: 0 0.499 1 0.310010 0.436322 1.350543 -: 1 0.499 2 0.309471 0.435234 1.345035 -: 2 0.499 3 0.309075 0.434342 1.501287 -: 3 0.499 4 0.308214 0.433595 1.501947 -: 4 0.499 5 0.309797 0.435703 1.300236 +: 0 0.249 1 0.027236 0.000214 5.286942 +: 1 0.249 2 0.026499 0.000367 5.583405 +: 2 0.249 3 0.026858 0.000417 0.416132 +: 3 0.249 4 0.027228 0.000225 3.461241 +: 4 0.249 5 0.026906 0.000285 4.473676 #+begin_src ipython end_point = data[data.time == data.time.iloc[-1]] @@ -340,12 +535,12 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -: time trial m0 m1 phase -: 63 3.999 1 0.305413 0.429020 2.379814 -: 64 3.999 2 0.306242 0.430313 2.387125 -: 65 3.999 3 0.305628 0.429620 2.393247 -: 66 3.999 4 0.304745 0.428685 2.389969 -: 67 3.999 5 0.305512 0.429292 2.385865 +: time trial m0 m1 phase +: 135 3.999 1 0.364449 0.318936 3.722584 +: 136 3.999 2 0.365353 0.314348 3.685926 +: 137 3.999 3 0.361278 0.314820 3.690810 +: 138 3.999 4 0.363572 0.315568 3.700796 +: 139 3.999 5 0.364761 0.320093 3.639834 **** Phases #+begin_src ipython @@ -365,7 +560,7 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -[[file:./.ob-jupyter/ee0887ee475c849e0d32b48f85ee4f24b0b344de.png]] +[[file:./.ob-jupyter/c58995b988723f1b09be9f70dcb826cdee33e4e0.png]] **** Precision Errors @@ -380,19 +575,19 @@ from src.analysis.decode import decode_bump #+RESULTS: #+begin_example - time trial m0 m1 phase accuracy precision - 63 3.999 1 0.305413 0.429020 2.379814 -0.761779 -0.000976 - 64 3.999 2 0.306242 0.430313 2.387125 -0.754468 0.006335 - 65 3.999 3 0.305628 0.429620 2.393247 -0.748345 0.012458 - 66 3.999 4 0.304745 0.428685 2.389969 -0.751623 0.009180 - 67 3.999 5 0.305512 0.429292 2.385865 -0.755728 0.005076 - /tmp/ipykernel_2966984/1857574883.py:4: SettingWithCopyWarning: + time trial m0 m1 phase accuracy precision + 135 3.999 1 0.364449 0.318936 3.722584 0.580992 0.029979 + 136 3.999 2 0.365353 0.314348 3.685926 0.544333 -0.006680 + 137 3.999 3 0.361278 0.314820 3.690810 0.549218 -0.001795 + 138 3.999 4 0.363572 0.315568 3.700796 0.559204 0.008191 + 139 3.999 5 0.364761 0.320093 3.639834 0.498242 -0.052771 + /tmp/ipykernel_3718977/1857574883.py:4: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy end_point['accuracy'] = end_point.phase - stim_phase - /tmp/ipykernel_2966984/1857574883.py:5: SettingWithCopyWarning: + /tmp/ipykernel_3718977/1857574883.py:5: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead @@ -415,52 +610,11 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -[[file:./.ob-jupyter/7ebef37e9d33cbff0298800444b68f12b1c8b0b9.png]] - -** Parameter Search -*** Changing J0 - -#+begin_src ipython - REPO_ROOT = "/home/leon/tmp/rnn_numba" - - J0_list = np.linspace(1, 3, 11) - print(J0_list) -#+end_src - -#+RESULTS: -: [1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. ] - -#+begin_src ipython - - IF_LOAD_MAT = 0 - IF_SAVE_MAT = 1 - - for J0 in J0_list: - print('##########################################') - print("J0", J0) - print('##########################################') - - model = Network('config_bump.yml', 'bump_J0_%.1f' % J0, REPO_ROOT, - IF_LOAD_MAT=IF_LOAD_MAT, IF_SAVE_MAT=IF_SAVE_MAT, - Jab=[-J0]) - - model.run() - - IF_LOAD_MAT = 1 - IF_SAVE_MAT = 0 - -#+end_src - -#+RESULTS: -: ########################################## -: J0 1.0 -: ########################################## -: Loading config from /home/leon/tmp/rnn_numba/conf/config_bump.yml -: Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_J0_1.0.h5 -: Generating matrix Cij +[[file:./.ob-jupyter/4b114fa93c95418d96d6689c7f7d2e312ee3bc36.png]] -* Balanced EI Bump Attractor Model +* EI Bump Attractor Model +Here I implemented a balanced EI network that exhibits attractor dynamics. ** imports #+begin_src ipython import sys @@ -469,18 +623,25 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: + ** Single trial *** Simulation To run a simulation, first we need to define a network model. -The class Network takes two arguments: - 1. the name of the configuration file that defines the model. - This file is well detailed (check config_bump.yml or config_EI.yml) - 2. the name of the output file that will contain the simulation data. - The model writes all relevant data to a single dataframe stored in an h5 format +The class Network takes three mandatory arguments: + + 1. The name of the configuration file that defines the model, + eg 'config_EI.yml', these files are in ../conf/ and well detailed. + + 2. The name of the output file that will contain the simulation data. + eg 'bump'. Simulation results will be saved as a data frame to '../data/simul/bump.h5'. + + 3. The path to the root of this repository. + +One can also pass extra arguments to Network, basically any parameter that is in the config file so that it will be overwritten. #+begin_src ipython REPO_ROOT = "/home/leon/tmp/rnn_numba" - model = Network('config_EI.yml', 'bump', REPO_ROOT, VERBOSE=1 , M0=1) + model = Network('config_EI.yml', 'bump', REPO_ROOT, VERBOSE=1) #+end_src #+RESULTS: @@ -514,26 +675,26 @@ Then one just runs the model with MF Rates: [0.25 0.5 ] Transfert Func Sigmoid Running simulation - times (s) 0.25 rates (Hz) [0.0, 0.29] - times (s) 0.5 rates (Hz) [0.0, 0.29] - times (s) 0.75 rates (Hz) [0.0, 0.29] - times (s) 1.0 rates (Hz) [0.0, 0.29] + times (s) 0.25 rates (Hz) [0.03, 0.12] + times (s) 0.5 rates (Hz) [0.03, 0.12] + times (s) 0.75 rates (Hz) [0.03, 0.11] + times (s) 1.0 rates (Hz) [0.03, 0.12] STIM ON - times (s) 1.25 rates (Hz) [0.54, 0.74] - times (s) 1.5 rates (Hz) [0.54, 0.74] + times (s) 1.25 rates (Hz) [0.53, 0.74] + times (s) 1.5 rates (Hz) [0.53, 0.74] STIM OFF - times (s) 1.75 rates (Hz) [0.37, 0.6] - times (s) 2.0 rates (Hz) [0.37, 0.6] - times (s) 2.25 rates (Hz) [0.37, 0.6] - times (s) 2.5 rates (Hz) [0.37, 0.6] - times (s) 2.75 rates (Hz) [0.37, 0.6] + times (s) 1.75 rates (Hz) [0.36, 0.6] + times (s) 2.0 rates (Hz) [0.36, 0.6] + times (s) 2.25 rates (Hz) [0.36, 0.6] + times (s) 2.5 rates (Hz) [0.36, 0.6] + times (s) 2.75 rates (Hz) [0.36, 0.6] times (s) 3.0 rates (Hz) [0.37, 0.6] - times (s) 3.25 rates (Hz) [0.37, 0.6] - times (s) 3.5 rates (Hz) [0.37, 0.6] - times (s) 3.75 rates (Hz) [0.37, 0.6] - times (s) 4.0 rates (Hz) [0.37, 0.6] + times (s) 3.25 rates (Hz) [0.36, 0.6] + times (s) 3.5 rates (Hz) [0.36, 0.6] + times (s) 3.75 rates (Hz) [0.36, 0.6] + times (s) 4.0 rates (Hz) [0.36, 0.6] saving data to /home/leon/tmp/rnn_numba/data/simul/bump.h5 - Elapsed (with compilation) = 55.362914263037965s + Elapsed (with compilation) = 51.37116646301001s #+end_example *** Analysis @@ -555,12 +716,12 @@ Then one just runs the model with #+end_src #+RESULTS: -: rates ff h_E h_I neurons time -: 0 1.603719e-14 -1.237244 1.555830e-10 -9.824757 0 0.249 -: 1 1.068644e-15 -0.286277 2.175872e-10 -10.012830 1 0.249 -: 2 5.164796e-14 1.380938 3.022810e-10 -9.672483 2 0.249 -: 3 2.162490e-15 0.181033 7.054538e-11 -9.582123 3 0.249 -: 4 1.895197e-13 0.603522 2.518099e-10 -9.404711 4 0.249 +: rates ff h_E h_I neurons time +: 0 0.011703 2.091137 0.576383 -4.108179 0 0.249 +: 1 0.029542 -0.019575 0.606391 -3.970378 1 0.249 +: 2 0.023473 0.143316 0.640388 -3.931326 2 0.249 +: 3 0.018428 0.317533 0.646514 -3.824877 3 0.249 +: 4 0.014366 -0.533621 0.623375 -4.003720 4 0.249 **** Rates ***** raster #+begin_src ipython @@ -581,16 +742,16 @@ Then one just runs the model with #+end_src #+RESULTS: -[[file:./.ob-jupyter/567b587f96ee93c235c72d47aeaab2e9793c2fa4.png]] +[[file:./.ob-jupyter/6463eb2251b70e773bab6b3c8ac4502a19545658.png]] ***** histograms #+begin_src ipython mean_df_E = df_E.groupby("neurons").mean() - mean_df_E[mean_df_E.rates<.01] = np.nan + mean_df_E[mean_df_E.rates<.001] = np.nan mean_df_I = df_I.groupby("neurons").mean() - mean_df_I[mean_df_I.rates<.01] = np.nan + mean_df_I[mean_df_I.rates<.001] = np.nan sns.histplot(mean_df_E, x=mean_df_E.rates, kde=True, color='r', label='E') sns.histplot(mean_df_I, x=mean_df_I.rates, kde=True, color='b', label='I') @@ -600,7 +761,7 @@ Then one just runs the model with #+end_src #+RESULTS: -[[file:./.ob-jupyter/2cf0342fd0d41f94870518472025e535d1baaf27.png]] +[[file:./.ob-jupyter/1a9c1b567c3ab22d56bb34304662b30af8a37d76.png]] **** Tuning @@ -613,12 +774,12 @@ Then one just runs the model with #+end_src #+RESULTS: -: time m0 m1 phase -: 0 0.249 1.971564e-11 1.996778e-11 4.101198 -: 1 0.499 9.912278e-12 3.949440e-12 0.031584 -: 2 0.749 8.105434e-11 1.410955e-10 4.814738 -: 3 0.999 7.173168e-12 3.755936e-12 0.843219 -: 4 1.249 5.370993e-01 5.969055e-01 3.144594 +: time m0 m1 phase +: 0 0.249 0.027317 0.000451 3.921320 +: 1 0.499 0.026888 0.000202 3.518808 +: 2 0.749 0.026718 0.000084 3.626537 +: 3 0.999 0.026812 0.000093 5.765621 +: 4 1.249 0.531907 0.598873 3.163694 #+begin_src ipython fig, ax = plt.subplots(1, 3, figsize=[2*width, height]) @@ -642,172 +803,7 @@ Then one just runs the model with #+end_src #+RESULTS: -[[file:./.ob-jupyter/df0e799833321cc9b736bd2ec6795d703459e68a.png]] - -#+begin_src ipython - -#+end_src - -#+RESULTS: - -*** Parameter search - -#+begin_src ipython - Ie_list = np.linspace(0.1, 1, 10) - print(Ie_list) - - REPO_ROOT = "/home/leon/tmp/rnn_numba" - - IF_LOAD_MAT = 0 - IF_SAVE_MAT = 1 - - for Ie in Ie_list: - print('##########################################') - print("Ie", Ie) - print('##########################################') - - model = Network('config_EI.yml', 'bump_Ie_%.1f' % Ie, REPO_ROOT, - IF_LOAD_MAT=IF_LOAD_MAT, IF_SAVE_MAT=IF_SAVE_MAT, - Gain=Ie) - - model.run() - - IF_LOAD_MAT = 1 - IF_SAVE_MAT = 0 - -#+end_src - -#+RESULTS: -#+begin_example - [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ] - ########################################## - Ie 0.1 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.1.h5 - Generating matrix Cij - Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 57.59470825298922s - ########################################## - Ie 0.2 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.2.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 58.72569092398044s - ########################################## - Ie 0.30000000000000004 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.3.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 58.357797659002244s - ########################################## - Ie 0.4 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.4.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 58.12026895402232s - ########################################## - Ie 0.5 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.5.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 58.90326176898088s - ########################################## - Ie 0.6 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.6.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 58.6129756779992s - ########################################## - Ie 0.7000000000000001 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.7.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 58.70668443996692s - ########################################## - Ie 0.8 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.8.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 53.72524890798377s - ########################################## - Ie 0.9 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_0.9.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 57.952931727981195s - ########################################## - Ie 1.0 - ########################################## - Loading config from /home/leon/tmp/rnn_numba/conf/config_EI.yml - Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_Ie_1.0.h5 - Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy - Running simulation - Elapsed (with compilation) = 57.457209688960575s -#+end_example - -#+begin_src ipython - Ie_list = np.linspace(0.1, 1.0, 10) - - df_list = [] - - for i in range(Ie_list.shape[0]): - df_i = pd.read_hdf(REPO_ROOT + "/data/simul/bump_Ie_%.1f.h5" % Ie_list[i], mode="r") - df_i['Ie'] = i - df_list.append(df_i) - - df = pd.concat(df_list, ignore_index=True) - df_E = df[df.neurons<7500] - print(df.head()) - -#+end_src - -#+RESULTS: -: rates ff h_E h_I neurons time Ie -: 0 0.368926 12.781403 9.071170 -20.381302 0 0.249 0 -: 1 0.548235 12.137876 8.606775 -19.757314 1 0.249 0 -: 2 0.791355 12.516987 8.236397 -18.628502 2 0.249 0 -: 3 0.659268 10.232158 8.340149 -19.042084 3 0.249 0 -: 4 0.235941 8.420432 8.426077 -20.439227 4 0.249 0 - -#+begin_src ipython - trial = 0 - fig, ax = plt.subplots(1, 2, figsize=[2*width, height]) - pt = pd.pivot_table(df[df.Ie==trial], values="rates", index=["neurons"], columns="time") - - sns.heatmap(pt[:7500], cmap="jet", ax=ax[0], vmax=1, vmin=0) - ax[0].set_yticks([0, 2500, 5000, 7500], [0, 2500, 5000, 7500]) - ax[0].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) - ax[0].set_title('Excitatory') - - sns.heatmap(pt[7500:], cmap="jet", ax=ax[1], vmax=1, vmin=0) - ax[1].set_yticks([0, 625, 1250, 1875, 2500], [0, 625, 1250, 1875, 2500]) - ax[1].set_xticks([0, 2, 4, 6, 8], [0, 1, 2, 3, 4]) - ax[1].set_title('Inhibitory') - - plt.show() - -#+end_src - -#+RESULTS: -[[file:./.ob-jupyter/2ab394c7fca4f3c4c0ff8920d2f93d171cb0b91b.png]] +[[file:./.ob-jupyter/ce4ca0715fa00f6388a19dbe6ea909decac78503.png]] ** Multiple trials *** Simulations @@ -844,7 +840,7 @@ Then one just runs the model with Generating matrix Cij Saving matrix to /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 53.97293146402808s + Elapsed (with compilation) = 51.05978687806055s ########################################## trial 2 ########################################## @@ -852,7 +848,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_2.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 56.96205114200711s + Elapsed (with compilation) = 59.463344207033515s ########################################## trial 3 ########################################## @@ -860,7 +856,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_3.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 46.552777758974116s + Elapsed (with compilation) = 59.76340044499375s ########################################## trial 4 ########################################## @@ -868,7 +864,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_4.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 57.053969001048245s + Elapsed (with compilation) = 50.80682804493699s ########################################## trial 5 ########################################## @@ -876,7 +872,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_5.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 54.42072479397757s + Elapsed (with compilation) = 59.20731191406958s ########################################## trial 6 ########################################## @@ -884,7 +880,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_6.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 50.73790435300907s + Elapsed (with compilation) = 52.11593077890575s ########################################## trial 7 ########################################## @@ -892,7 +888,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_7.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 51.30651221697917s + Elapsed (with compilation) = 54.824766193982214s ########################################## trial 8 ########################################## @@ -900,7 +896,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_8.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 48.36234194302233s + Elapsed (with compilation) = 50.43251221999526s ########################################## trial 9 ########################################## @@ -908,7 +904,7 @@ Then one just runs the model with Saving data to /home/leon/tmp/rnn_numba/data/simul/bump_ini_9.h5 Loading matrix from /home/leon/tmp/rnn_numba/data/matrix/Cij.npy Running simulation - Elapsed (with compilation) = 52.83128838700941s + Elapsed (with compilation) = 51.49602844903711s #+end_example *** Analysis @@ -937,12 +933,12 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -: rates ff h_E h_I neurons time trial -: 0 0.620963 17.178619 7.837148 -24.014507 0 0.499 1 -: 1 0.348972 19.188986 8.049864 -25.528297 1 0.499 1 -: 2 0.044523 18.140488 8.291198 -27.459217 2 0.499 1 -: 3 0.051996 17.061010 7.774259 -26.545981 3 0.499 1 -: 4 0.396972 16.060816 8.087732 -25.197549 4 0.499 1 +: rates ff h_E h_I neurons time trial +: 0 0.026551 1.559067 0.607519 -3.676191 0 0.249 1 +: 1 0.035987 -0.175400 0.605969 -3.863151 1 0.249 1 +: 2 0.038527 -0.821442 0.616959 -4.002131 2 0.249 1 +: 3 0.054012 1.180297 0.596296 -3.823737 3 0.249 1 +: 4 0.053022 1.574449 0.541678 -3.569974 4 0.249 1 #+begin_src ipython data = df_E.groupby(['time', 'trial'])['rates'].apply(decode_bump).reset_index() @@ -953,11 +949,11 @@ from src.analysis.decode import decode_bump #+RESULTS: : time trial m0 m1 phase -: 0 0.499 1 0.310010 0.436322 1.350543 -: 1 0.499 2 0.309471 0.435234 1.345035 -: 2 0.499 3 0.309075 0.434342 1.501287 -: 3 0.499 4 0.308214 0.433595 1.501947 -: 4 0.499 5 0.309797 0.435703 1.300236 +: 0 0.249 1 0.027236 0.000214 5.286942 +: 1 0.249 2 0.026499 0.000367 5.583405 +: 2 0.249 3 0.026858 0.000417 0.416132 +: 3 0.249 4 0.027228 0.000225 3.461241 +: 4 0.249 5 0.026906 0.000285 4.473676 #+begin_src ipython end_point = data[data.time == data.time.iloc[-1]] @@ -965,12 +961,12 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -: time trial m0 m1 phase -: 63 3.999 1 0.305413 0.429020 2.379814 -: 64 3.999 2 0.306242 0.430313 2.387125 -: 65 3.999 3 0.305628 0.429620 2.393247 -: 66 3.999 4 0.304745 0.428685 2.389969 -: 67 3.999 5 0.305512 0.429292 2.385865 +: time trial m0 m1 phase +: 135 3.999 1 0.364449 0.318936 3.722584 +: 136 3.999 2 0.365353 0.314348 3.685926 +: 137 3.999 3 0.361278 0.314820 3.690810 +: 138 3.999 4 0.363572 0.315568 3.700796 +: 139 3.999 5 0.364761 0.320093 3.639834 **** Phases #+begin_src ipython @@ -990,7 +986,7 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -[[file:./.ob-jupyter/ee0887ee475c849e0d32b48f85ee4f24b0b344de.png]] +[[file:./.ob-jupyter/c58995b988723f1b09be9f70dcb826cdee33e4e0.png]] **** Precision Errors @@ -1005,19 +1001,19 @@ from src.analysis.decode import decode_bump #+RESULTS: #+begin_example - time trial m0 m1 phase accuracy precision - 63 3.999 1 0.305413 0.429020 2.379814 -0.761779 -0.000976 - 64 3.999 2 0.306242 0.430313 2.387125 -0.754468 0.006335 - 65 3.999 3 0.305628 0.429620 2.393247 -0.748345 0.012458 - 66 3.999 4 0.304745 0.428685 2.389969 -0.751623 0.009180 - 67 3.999 5 0.305512 0.429292 2.385865 -0.755728 0.005076 - /tmp/ipykernel_2966984/1857574883.py:4: SettingWithCopyWarning: + time trial m0 m1 phase accuracy precision + 135 3.999 1 0.364449 0.318936 3.722584 0.580992 0.029979 + 136 3.999 2 0.365353 0.314348 3.685926 0.544333 -0.006680 + 137 3.999 3 0.361278 0.314820 3.690810 0.549218 -0.001795 + 138 3.999 4 0.363572 0.315568 3.700796 0.559204 0.008191 + 139 3.999 5 0.364761 0.320093 3.639834 0.498242 -0.052771 + /tmp/ipykernel_3718977/1857574883.py:4: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy end_point['accuracy'] = end_point.phase - stim_phase - /tmp/ipykernel_2966984/1857574883.py:5: SettingWithCopyWarning: + /tmp/ipykernel_3718977/1857574883.py:5: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead @@ -1040,4 +1036,4 @@ from src.analysis.decode import decode_bump #+end_src #+RESULTS: -[[file:./.ob-jupyter/7ebef37e9d33cbff0298800444b68f12b1c8b0b9.png]] +[[file:./.ob-jupyter/4b114fa93c95418d96d6689c7f7d2e312ee3bc36.png]] diff --git a/src/model/rate_model.py b/src/model/rate_model.py index 250eab0..b55be52 100644 --- a/src/model/rate_model.py +++ b/src/model/rate_model.py @@ -311,6 +311,8 @@ def perturb_inputs(self, step): for i in range(self.N_POP): if self.BUMP_SWITCH[i]: self.ff_inputs_0[self.csumNa[i] : self.csumNa[i + 1]] = 0.0 + if self.K !=1 and self.BUMP_SWITCH[i]: + self.ff_inputs_0[self.csumNa[i] : self.csumNa[i + 1]] = self.Iext[i] / np.sqrt(self.Ka[0]) if step == self.N_STIM_ON: for i in range(self.N_POP):