{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "\n",
    "from definitions import RESULTS_FOLDER\n",
    "from hippocampus.environments import HexWaterMaze"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "en = HexWaterMaze(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "res_dir = os.path.join(RESULTS_FOLDER, 'mb_spatialmemory')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv(os.path.join(res_dir, 'spatial_memory'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Unnamed: 0', 'DLS reliability', 'HPC reliability', 'M_hat', 'P(SR)',\n",
       "       'Q_mf', 'RPE', 'R_hat', 'SPE', 'alpha', 'beta', 'choice', 'platform',\n",
       "       'reward', 'state', 'time', 'Q', 'Q_allo', 'features', 'landmark',\n",
       "       'weights', 'trial', 'escape time', 'session', 'total trial',\n",
       "       'total time'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>DLS reliability</th>\n",
       "      <th>HPC reliability</th>\n",
       "      <th>M_hat</th>\n",
       "      <th>P(SR)</th>\n",
       "      <th>Q_mf</th>\n",
       "      <th>RPE</th>\n",
       "      <th>R_hat</th>\n",
       "      <th>SPE</th>\n",
       "      <th>alpha</th>\n",
       "      <th>...</th>\n",
       "      <th>Q</th>\n",
       "      <th>Q_allo</th>\n",
       "      <th>features</th>\n",
       "      <th>landmark</th>\n",
       "      <th>weights</th>\n",
       "      <th>trial</th>\n",
       "      <th>escape time</th>\n",
       "      <th>session</th>\n",
       "      <th>total trial</th>\n",
       "      <th>total time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>[1.54201195 0.57061154 0.57058036 ... 0.652488...</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.069722</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>[[1.54201195 0.57061154 0.57058036 ... 0.01565...</td>\n",
       "      <td>0.867326</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...</td>\n",
       "      <td>[-1.69531697e-03 -1.46805481e-03 -9.45433645e-...</td>\n",
       "      <td>1.069722</td>\n",
       "      <td>...</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[1.04879789e-46 6.22312918e-43 7.92610564e-40 ...</td>\n",
       "      <td>(-5, 6.92820323027551)</td>\n",
       "      <td>[[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...</td>\n",
       "      <td>0</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>[[1.54201195 0.57061154 0.57058036 ... 0.01565...</td>\n",
       "      <td>0.874674</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...</td>\n",
       "      <td>[ 1.29177083e-03  1.62847693e-03  9.66093332e-...</td>\n",
       "      <td>1.069722</td>\n",
       "      <td>...</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[6.45282964e-35 1.09111715e-32 3.96028640e-31 ...</td>\n",
       "      <td>(-5, 6.92820323027551)</td>\n",
       "      <td>[[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...</td>\n",
       "      <td>0</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>[[1.54201195 0.57061154 0.57058036 ... 0.01565...</td>\n",
       "      <td>0.873021</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...</td>\n",
       "      <td>[ 3.91728776e-03  4.93600164e-03  2.89495412e-...</td>\n",
       "      <td>1.069722</td>\n",
       "      <td>...</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[3.44565986e-31 6.04574572e-29 2.27699136e-27 ...</td>\n",
       "      <td>(-5, 6.92820323027551)</td>\n",
       "      <td>[[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...</td>\n",
       "      <td>0</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>[[1.54201195 0.57061154 0.57058036 ... 0.01565...</td>\n",
       "      <td>0.873393</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...</td>\n",
       "      <td>[ 2.49490053e-03  4.96097982e-03  2.82030639e-...</td>\n",
       "      <td>1.069722</td>\n",
       "      <td>...</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[0. 0. 0. 0. 0. 0.]</td>\n",
       "      <td>[2.70417405e-34 3.23431029e-31 8.30352991e-29 ...</td>\n",
       "      <td>(-5, 6.92820323027551)</td>\n",
       "      <td>[[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...</td>\n",
       "      <td>0</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  DLS reliability  HPC reliability  \\\n",
       "0           0              0.0              0.8   \n",
       "1           1              0.0              0.8   \n",
       "2           2              0.0              0.8   \n",
       "3           3              0.0              0.8   \n",
       "4           4              0.0              0.8   \n",
       "\n",
       "                                               M_hat     P(SR)  \\\n",
       "0  [1.54201195 0.57061154 0.57058036 ... 0.652488...  0.900000   \n",
       "1  [[1.54201195 0.57061154 0.57058036 ... 0.01565...  0.867326   \n",
       "2  [[1.54201195 0.57061154 0.57058036 ... 0.01565...  0.874674   \n",
       "3  [[1.54201195 0.57061154 0.57058036 ... 0.01565...  0.873021   \n",
       "4  [[1.54201195 0.57061154 0.57058036 ... 0.01565...  0.873393   \n",
       "\n",
       "                  Q_mf  RPE  \\\n",
       "0  [0. 0. 0. 0. 0. 0.]  0.0   \n",
       "1  [0. 0. 0. 0. 0. 0.]  0.0   \n",
       "2  [0. 0. 0. 0. 0. 0.]  0.0   \n",
       "3  [0. 0. 0. 0. 0. 0.]  0.0   \n",
       "4  [0. 0. 0. 0. 0. 0.]  0.0   \n",
       "\n",
       "                                               R_hat  \\\n",
       "0  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...   \n",
       "1  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...   \n",
       "2  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...   \n",
       "3  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...   \n",
       "4  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ...   \n",
       "\n",
       "                                                 SPE     alpha  ...  \\\n",
       "0                                                0.0  1.069722  ...   \n",
       "1  [-1.69531697e-03 -1.46805481e-03 -9.45433645e-...  1.069722  ...   \n",
       "2  [ 1.29177083e-03  1.62847693e-03  9.66093332e-...  1.069722  ...   \n",
       "3  [ 3.91728776e-03  4.93600164e-03  2.89495412e-...  1.069722  ...   \n",
       "4  [ 2.49490053e-03  4.96097982e-03  2.82030639e-...  1.069722  ...   \n",
       "\n",
       "                     Q               Q_allo  \\\n",
       "0                  NaN                  NaN   \n",
       "1  [0. 0. 0. 0. 0. 0.]  [0. 0. 0. 0. 0. 0.]   \n",
       "2  [0. 0. 0. 0. 0. 0.]  [0. 0. 0. 0. 0. 0.]   \n",
       "3  [0. 0. 0. 0. 0. 0.]  [0. 0. 0. 0. 0. 0.]   \n",
       "4  [0. 0. 0. 0. 0. 0.]  [0. 0. 0. 0. 0. 0.]   \n",
       "\n",
       "                                            features                landmark  \\\n",
       "0                                                NaN                     NaN   \n",
       "1  [1.04879789e-46 6.22312918e-43 7.92610564e-40 ...  (-5, 6.92820323027551)   \n",
       "2  [6.45282964e-35 1.09111715e-32 3.96028640e-31 ...  (-5, 6.92820323027551)   \n",
       "3  [3.44565986e-31 6.04574572e-29 2.27699136e-27 ...  (-5, 6.92820323027551)   \n",
       "4  [2.70417405e-34 3.23431029e-31 8.30352991e-29 ...  (-5, 6.92820323027551)   \n",
       "\n",
       "                                             weights  trial escape time  \\\n",
       "0                                                NaN      0      1000.0   \n",
       "1  [[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...      0      1000.0   \n",
       "2  [[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...      0      1000.0   \n",
       "3  [[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...      0      1000.0   \n",
       "4  [[0. 0. 0. 0. 0. 0.]\\n [0. 0. 0. 0. 0. 0.]\\n [...      0      1000.0   \n",
       "\n",
       "  session total trial total time  \n",
       "0       0           0          0  \n",
       "1       0           0          1  \n",
       "2       0           0          2  \n",
       "3       0           0          3  \n",
       "4       0           0          4  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x116246080>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEKCAYAAAAb7IIBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztvXl4ZGWd9/25a0lVUqlK0kk66aSXpHc63U1v7NAiILuggiOujTovjLigzoyivjOOOs+jMz4zMLzj8qAwMoqKg8qmILIIsgj0Ru/QTXfSWTv7nspSdb9/1DmV6qQqtW/dv8915UrVqVN17pwk53t+u9JaIwiCIJx+WLK9AEEQBCE7iAAIgiCcpogACIIgnKaIAAiCIJymiAAIgiCcpogACIIgnKaIAAiCIJymiAAIgiCcpogACIIgnKbYsr2AuaioqNB1dXXZXoYgCEJesWPHjm6tdWW0/XJaAOrq6ti+fXu2lyEIgpBXKKWaYtlPXECCIAinKSIAgiAIpykiAIIgCKcpOR0DEAQht5mcnKSlpQWv15vtpZyWOJ1OFi5ciN1uT+j9IgCCICRMS0sLbreburo6lFLZXs5phdaanp4eWlpaqK+vT+gzorqAlFL3KaU6lVL7QrbNU0r9USl12PheZmxXSqm7lVJHlFJ7lFKbQt6zzdj/sFJqW0KrFQQhp/B6vZSXl8vFPwsopSgvL0/K+oolBvAT4MoZ2+4AntFarwCeMZ4DXAWsML5uAX5gLHQe8HXgHOBs4OumaAiCkN/IxT97JHvuowqA1voFoHfG5uuB+43H9wPvCdn+3zrAX4BSpdQC4Argj1rrXq11H/BHZovKLDoGvYxP+WL7SQRBEIS4SDQLqEpr3Q5gfJ9vbK8FmkP2azG2Rdo+C6XULUqp7Uqp7V1D4wyOTSW4REEQhOzx8MMPc+DAgeDzf/zHf+Tpp5/O4opmk+o00HD2iJ5j++yNWt+jtd6itd4CMDIuAiAIQv4xUwC++c1vctlll2VxRbNJVABOGK4djO+dxvYWYFHIfguBtjm2R2VYBEAQhDn42c9+xtlnn82GDRu49dZb8fl8+Hw+br75ZtauXcu6deu48847AThy5AiXXXYZZ555Jps2beLtt99meHiYSy+9lE2bNrFu3ToeeeQRABobG1m9ejXbtm1j/fr13HjjjYyOjgKwY8cO3vGOd7B582auuOIK2tvbT1rTyy+/zKOPPsrf//3fs2HDBt5++21uvvlmHnroISDQ5uarX/0q5513Hlu2bGHnzp1cccUVLFu2jB/+8IfBz/nud7/LWWedxfr16/n617+e8nOXaBroo8A24DvG90dCtn9GKfVLAgHfAa11u1LqD8D/Dgn8Xg58JZYDDXlFAAQhH/jGY/s50DaY0s9cU+Ph6+9uiPj6wYMHefDBB3nppZew2+3cdtttPPDAAzQ0NNDa2sq+fYHkxf7+fgA+/OEPc8cdd/De974Xr9eL3++noKCA3/72t3g8Hrq7uzn33HO57rrrAHjzzTe59957ueCCC/jEJz7B97//fW6//XY++9nP8sgjj1BZWcmDDz7I1772Ne67777gus4//3yuu+46rr32Wm688cawa1+0aBGvvPIKX/jCF7j55pt56aWX8Hq9NDQ08Dd/8zc89dRTHD58mNdeew2tNddddx0vvPACW7duTdXpjS4ASqlfABcDFUqpFgLZPN8BfqWU+iRwHHi/sfvvgauBI8Ao8HEArXWvUupbwOvGft/UWs8MLIdFXECCIETimWeeYceOHZx11lkAjI2NMX/+fN797ndz9OhRPvvZz3LNNddw+eWXMzQ0RGtrK+9973uBQBEVBIrZvvrVr/LCCy9gsVhobW3lxIkTQOAifcEFFwDwkY98hLvvvpsrr7ySffv28a53vQsAn8/HggUL4l67KTLr1q1jeHgYt9uN2+3G6XTS39/PU089xVNPPcXGjRsBGB4e5vDhw5kVAK31ByO8dGmYfTXw6Qifcx9wX7jX5kJcQIKQH8x1p54utNZs27aNb3/727Nee+ONN/jDH/7A9773PX71q19x1113hf2MBx54gK6uLnbs2IHdbqeuri6YWz8zzVIphdaahoYGXnnllaTW7nA4ALBYLMHH5vOpqSm01nzlK1/h1ltvTeo4c5HzvYBEAARBiMSll17KQw89RGdnIAzZ29tLU1MT3d3d+P1+brjhBr71rW+xc+dOPB4PCxcu5OGHHwZgfHyc0dFRBgYGmD9/Pna7neeee46mpulOysePHw9e6H/xi19w4YUXsmrVKrq6uoLbJycn2b9//6y1ud1uhoaGEv7ZrrjiCu677z6Gh4cBaG1tDf6cqUIEQBCEvGXNmjX88z//M5dffjnr16/n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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.plot(x='total trial', y='escape time')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = df[['trial', 'total trial', 'session', 'escape time','platform', 'state']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>escape time</th>\n",
       "      <th>platform</th>\n",
       "      <th>previous platform</th>\n",
       "      <th>trial</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>session</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>508.0</td>\n",
       "      <td>210.0</td>\n",
       "      <td>197.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>152.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>210.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>206.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>362.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>296.0</td>\n",
       "      <td>210.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>212.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>210.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>240.0</td>\n",
       "      <td>203.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>59.0</td>\n",
       "      <td>216.0</td>\n",
       "      <td>203.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>618.0</td>\n",
       "      <td>203.0</td>\n",
       "      <td>216.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>694.0</td>\n",
       "      <td>174.0</td>\n",
       "      <td>203.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         escape time  platform  previous platform  trial\n",
       "session                                                 \n",
       "1              508.0     210.0              197.0      0\n",
       "2              152.0     181.0              210.0      0\n",
       "3              206.0     192.0              181.0      0\n",
       "4              362.0     181.0              192.0      0\n",
       "5              296.0     210.0              181.0      0\n",
       "6              212.0     192.0              210.0      0\n",
       "7              240.0     203.0              192.0      0\n",
       "8               59.0     216.0              203.0      0\n",
       "9              618.0     203.0              216.0      0\n",
       "10             694.0     174.0              203.0      0"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_first_trial_info(data):\n",
    "    d2 = data.pivot_table(index='total trial')\n",
    "    d2['previous platform'] = d2['platform'].shift(1)\n",
    "    first_trials = d2[d2['trial']==0]\n",
    "    first_trials = first_trials.drop(0).pivot_table(index='session')\n",
    "    return first_trials"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_surrounding_states(state, env, rec_depth=4):\n",
    "    surrounding_states = [state]\n",
    "    for i in range(rec_depth):\n",
    "        added_states = []\n",
    "        for s in surrounding_states:\n",
    "            neighbours = np.flatnonzero(env.adjacency_graph[s])\n",
    "            for n in neighbours:\n",
    "                if n not in surrounding_states and n not in added_states:\n",
    "                    added_states.append(n)\n",
    "        surrounding_states += added_states\n",
    "    return surrounding_states\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_allo_index(agent_data):\n",
    "    first_trials = get_first_trial_info(agent_data)\n",
    "    prop_times = []\n",
    "    for ses in [1]:\n",
    "        states = np.sort(data[data.session==ses][data.trial==0]['state'])\n",
    "        previous_platform = first_trials['previous platform'][ses]\n",
    "        indices = np.searchsorted(states, np.sort(np.array(get_surrounding_states(int(previous_platform), en))))\n",
    "        prop_times.append( len(indices) / len(states))\n",
    "\n",
    "    return np.mean(prop_times)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.1965659326200388"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_allo_index(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n",
      "/Users/jessegeerts/miniconda3/envs/models/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  \"\"\"\n"
     ]
    }
   ],
   "source": [
    "scores = []\n",
    "\n",
    "for a in range(36):\n",
    "    df = pd.read_csv(os.path.join(res_dir, 'spatial_agent{}'.format(a)))\n",
    "    scores.append(get_allo_index(df))\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.1822993729375062,\n",
       " 0.18954747068035668,\n",
       " 0.19276792858410732,\n",
       " 0.19607029057352787,\n",
       " 0.19972029389460774,\n",
       " 0.17670613171900357,\n",
       " 0.19072914589925707,\n",
       " 0.19210470631030888,\n",
       " 0.186467704601547,\n",
       " 0.1935880229578511,\n",
       " 0.19253248022129418,\n",
       " 0.19789328253068203,\n",
       " 0.2011683674882634,\n",
       " 0.19380736353150038,\n",
       " 0.1864154251942985,\n",
       " 0.18418036673580895,\n",
       " 0.18956878655015846,\n",
       " 0.19031254346713203,\n",
       " 0.18940985291150045,\n",
       " 0.18450441335959916,\n",
       " 0.18276213514282807,\n",
       " 0.18250673752852592,\n",
       " 0.17843827805199491,\n",
       " 0.19374907214687548,\n",
       " 0.18862248069140036,\n",
       " 0.1896095958456809,\n",
       " 0.19108999894952394,\n",
       " 0.19570949212718164,\n",
       " 0.19455434062297844,\n",
       " 0.18070933490023366,\n",
       " 0.19064237117135704,\n",
       " 0.1912908378159769,\n",
       " 0.1782440851350393,\n",
       " 0.18120204458239508,\n",
       " 0.18262272983643896,\n",
       " 0.17954421951745284]"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "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.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}