{ "cells": [ { "cell_type": "markdown", "id": "787df035", "metadata": { "lines_to_next_cell": 0 }, "source": [ "# [2D] Decision Making Model with ``SlowPointFinder``\n", "\n", "[![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/brainpy/examples/blob/main/dynamics_analysis/2d_decision_making_model.ipynb)\n", "[![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/brainpy/examples/blob/main/dynamics_analysis/2d_decision_making_model.ipynb)" ] }, { "cell_type": "code", "execution_count": 1, "id": "12436e45", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.283167100Z", "start_time": "2023-07-22T05:47:29.565205500Z" } }, "outputs": [], "source": [ "import brainpy as bp\n", "import brainpy.math as bm\n", "\n", "bp.math.enable_x64()\n", "# bp.math.set_platform('cpu')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.299153900Z", "start_time": "2023-07-22T05:47:30.283167100Z" }, "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'2.4.3'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bp.__version__" ] }, { "cell_type": "code", "execution_count": 3, "id": "9ff6cefe", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.314817200Z", "start_time": "2023-07-22T05:47:30.299153900Z" } }, "outputs": [], "source": [ "# parameters\n", "gamma = 0.641 # Saturation factor for gating variable\n", "tau = 0.06 # Synaptic time constant [sec]\n", "a = 270.\n", "b = 108.\n", "d = 0.154" ] }, { "cell_type": "code", "execution_count": 4, "id": "4d87df9d", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.330420600Z", "start_time": "2023-07-22T05:47:30.314817200Z" } }, "outputs": [], "source": [ "JE = 0.3725 # self-coupling strength [nA]\n", "JI = -0.1137 # cross-coupling strength [nA]\n", "JAext = 0.00117 # Stimulus input strength [nA]" ] }, { "cell_type": "code", "execution_count": 5, "id": "105c6436", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.348498Z", "start_time": "2023-07-22T05:47:30.332605200Z" } }, "outputs": [], "source": [ "mu = 20. # Stimulus firing rate [spikes/sec]\n", "coh = 0.5 # Stimulus coherence [%]\n", "Ib1 = 0.3297\n", "Ib2 = 0.3297" ] }, { "cell_type": "code", "execution_count": 6, "id": "dbae0bd7", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.362028400Z", "start_time": "2023-07-22T05:47:30.348498Z" } }, "outputs": [], "source": [ "@bp.odeint\n", "def int_s1(s1, t, s2, coh=0.5, mu=20.):\n", " I1 = JE * s1 + JI * s2 + Ib1 + JAext * mu * (1. + coh)\n", " r1 = (a * I1 - b) / (1. - bm.exp(-d * (a * I1 - b)))\n", " return - s1 / tau + (1. - s1) * gamma * r1" ] }, { "cell_type": "code", "execution_count": 7, "id": "02cf4d0c", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.378580500Z", "start_time": "2023-07-22T05:47:30.362028400Z" } }, "outputs": [], "source": [ "@bp.odeint\n", "def int_s2(s2, t, s1, coh=0.5, mu=20.):\n", " I2 = JE * s2 + JI * s1 + Ib2 + JAext * mu * (1. - coh)\n", " r2 = (a * I2 - b) / (1. - bm.exp(-d * (a * I2 - b)))\n", " return - s2 / tau + (1. - s2) * gamma * r2" ] }, { "cell_type": "code", "execution_count": 8, "id": "e8b04c87", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:30.395661200Z", "start_time": "2023-07-22T05:47:30.378580500Z" } }, "outputs": [], "source": [ "def cell(s):\n", " ds1 = int_s1.f(s[0], 0., s[1])\n", " ds2 = int_s2.f(s[1], 0., s[0])\n", " return bm.asarray([ds1, ds2])" ] }, { "cell_type": "code", "execution_count": 9, "id": "c501e54a", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:33.051774400Z", "start_time": "2023-07-22T05:47:30.395661200Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Optimizing with Adam(lr=ExponentialDecay(0.01, decay_steps=1, decay_rate=0.9999), last_call=-1), beta1=0.9, beta2=0.999, eps=1e-08) to find fixed points:\n", " Batches 1-200 in 0.21 sec, Training loss 0.0625203577\n", " Batches 201-400 in 0.14 sec, Training loss 0.0057188183\n", " Batches 401-600 in 0.13 sec, Training loss 0.0008378543\n", " Batches 601-800 in 0.14 sec, Training loss 0.0001745589\n", " Batches 801-1000 in 0.14 sec, Training loss 0.0000399469\n", " Batches 1001-1200 in 0.14 sec, Training loss 0.0000091676\n", " Stop optimization as mean training loss 0.0000091676 is below tolerance 0.0000100000.\n", "Excluding fixed points with squared speed above tolerance 1e-05:\n", " Kept 942/1000 fixed points with tolerance under 1e-05.\n", "Excluding non-unique fixed points:\n", " Kept 3/942 unique fixed points with uniqueness tolerance 0.025.\n", "fixed_points: [[0.70045189 0.00486431]\n", " [0.28276323 0.40635171]\n", " [0.01394651 0.65738904]]\n", "losses: [2.16451334e-30 1.09995369e-24 1.14704280e-30]\n" ] } ], "source": [ "finder = bp.analysis.SlowPointFinder(f_cell=cell, f_type='continuous')\n", "finder.find_fps_with_gd_method(\n", " candidates=bm.random.random((1000, 2)),\n", " tolerance=1e-5, num_batch=200,\n", " optimizer=bp.optim.Adam(lr=bp.optim.ExponentialDecay(0.01, 1, 0.9999)),\n", ")\n", "finder.filter_loss(1e-5)\n", "finder.keep_unique()\n", "\n", "print('fixed_points: ', finder.fixed_points)\n", "print('losses:', finder.losses)" ] }, { "cell_type": "code", "execution_count": 10, "id": "d2b88f6d", "metadata": { "ExecuteTime": { "end_time": "2023-07-22T05:47:33.589709800Z", "start_time": "2023-07-22T05:47:33.051774400Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\adadu\\miniconda3\\envs\\brainpy\\lib\\site-packages\\jax\\_src\\numpy\\array_methods.py:329: FutureWarning: The arr.split() method is deprecated. Use jax.numpy.split instead.\n", " warnings.warn(\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "jac = finder.compute_jacobians(finder.fixed_points, plot=True, num_col=1)" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "-all", "encoding": "# -*- coding: utf-8 -*-", "formats": "ipynb,auto:percent", "notebook_metadata_filter": "-all" }, "kernelspec": { "display_name": "brainpy", "language": "python", "name": "brainpy" }, "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.8.11" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }