{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "[](https://colab.research.google.com/github/RatInABox-Lab/RatInABox/blob/main/demos/simple_example.ipynb)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Simple RatInABox demo\n", "Initialise a 2D Environment. Initialise an Agent in the environment. Initialise some PlaceCells. Simulate for 60 seconds. Print table of times, position and firing rates and spikes. Plot trajectory and rate timeseries'." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: ratinabox in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (1.3.3)\n", "Requirement already satisfied: scipy~=1.9.3 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from ratinabox) (1.9.3)\n", "Requirement already satisfied: matplotlib~=3.7.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from ratinabox) (3.7.1)\n", "Requirement already satisfied: numpy~=1.24.2 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from ratinabox) (1.24.2)\n", "Requirement already satisfied: shapely~=2.0.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from ratinabox) (2.0.1)\n", "Requirement already satisfied: pillow>=6.2.0 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (9.4.0)\n", "Requirement already satisfied: cycler>=0.10 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (0.11.0)\n", "Requirement already satisfied: fonttools>=4.22.0 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (4.38.0)\n", "Requirement already satisfied: packaging>=20.0 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (23.0)\n", "Requirement already satisfied: python-dateutil>=2.7 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (2.8.2)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (1.4.4)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (3.0.9)\n", "Requirement already satisfied: contourpy>=1.0.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from matplotlib~=3.7.1->ratinabox) (1.0.7)\n", "Requirement already satisfied: six>=1.5 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib~=3.7.1->ratinabox) (1.16.0)\n", "Requirement already satisfied: pandas in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (2.0.0)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from pandas) (2.8.2)\n", "Requirement already satisfied: tzdata>=2022.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from pandas) (2023.3)\n", "Requirement already satisfied: pytz>=2020.1 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from pandas) (2023.3)\n", "Requirement already satisfied: numpy>=1.21.0 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from pandas) (1.24.2)\n", "Requirement already satisfied: six>=1.5 in /Users/tomgeorge/miniconda3/envs/riab/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n" ] } ], "source": [ "# Install dependencies \n", "!pip install ratinabox\n", "!pip install pandas" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import ratinabox \n", "import ratinabox\n", "from ratinabox.Environment import Environment\n", "from ratinabox.Agent import Agent\n", "from ratinabox.Neurons import *\n", "import pandas as pd " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Run a very simple simulation \n", "Env = Environment()\n", "Ag = Agent(Env)\n", "PCs = PlaceCells(Ag)\n", "for i in range(int(60 / Ag.dt)):\n", " Ag.update()\n", " PCs.update()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | t | \n", "pos | \n", "vel | \n", "rot_vel | \n", "
|---|---|---|---|---|
| 0 | \n", "0.01 | \n", "[0.7149792560205227, 0.43050616998020885] | \n", "[0.048888166267990446, -0.05442913744195902] | \n", "-0.490511 | \n", "
| 1 | \n", "0.02 | \n", "[0.7154135133118109, 0.43001622026441333] | \n", "[0.04342572912882092, -0.04899497157955235] | \n", "-0.660761 | \n", "
| 2 | \n", "0.03 | \n", "[0.7158284321082329, 0.42955056648087875] | \n", "[0.04149187964219703, -0.04656537835345809] | \n", "0.263463 | \n", "
| 3 | \n", "0.04 | \n", "[0.7162103493627244, 0.4291176745962729] | \n", "[0.038191725449154834, -0.043289188460582384] | \n", "-0.492651 | \n", "
| 4 | \n", "0.05 | \n", "[0.7165781627424781, 0.4287014881615713] | \n", "[0.03678133797536676, -0.04161864347016486] | \n", "0.085656 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 5995 | \n", "59.96 | \n", "[0.08190916125337111, 0.06766882211303965] | \n", "[-0.018734975593387437, -0.008228372483735924] | \n", "2.559365 | \n", "
| 5996 | \n", "59.97 | \n", "[0.0816941787580427, 0.06756026624305612] | \n", "[-0.021498249532840574, -0.010855586998352595] | \n", "2.140784 | \n", "
| 5997 | \n", "59.98 | \n", "[0.08147210263202699, 0.06744186872061435] | \n", "[-0.022207612601571336, -0.01183975224417766] | \n", "1.479985 | \n", "
| 5998 | \n", "59.99 | \n", "[0.08125954020737682, 0.06732646623580935] | \n", "[-0.02125624246501756, -0.011540248480500226] | \n", "1.399114 | \n", "
| 5999 | \n", "60.00 | \n", "[0.08100283159978669, 0.06717251120796199] | \n", "[-0.025670860759012537, -0.01539550278473606] | \n", "1.180786 | \n", "
6000 rows × 4 columns
\n", "