{ "cells": [ { "cell_type": "code", "execution_count": 51, "id": "da40959d", "metadata": {}, "outputs": [], "source": [ "import os, sys\n", "import json\n", "import h5py\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy import signal\n", "\n", "parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))\n", "sys.path.append(parent_dir)\n", "sys.path.append(os.path.join(parent_dir, 'postprocessing'))\n", "sys.path.append(os.path.join(parent_dir, 'session'))\n", "\n", "from performance import when_successful, calculate_performance, dump_performance_to_H5,\\\n", " get_finish_times, get_finish_times_rates\n", "from session.utils import get_sessions_list" ] }, { "cell_type": "code", "execution_count": 52, "id": "6f4f6154", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "IPython.OutputArea.prototype._should_scroll = function(lines) {\n", " return false;\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "IPython.OutputArea.prototype._should_scroll = function(lines) {\n", " return false;\n", "}" ] }, { "cell_type": "markdown", "id": "d10de8e7", "metadata": {}, "source": [ "## Compute performance and write to the file" ] }, { "cell_type": "code", "execution_count": 112, "id": "91af3047", "metadata": {}, "outputs": [], "source": [ "# session paths\n", "source = '/home/sobolev/nevermind/Andrey/data'\n", "#source = 'Z:\\\\Andrey\\\\data'\n", "animal = '006618'\n", "\n", "# single sessions\n", "sessions = ['008228_hippoSIT_2022-03-11_14-48-39']\n", "\n", "# or list of sessions\n", "sessions = get_sessions_list(os.path.join(source, animal), animal)[-8:]" ] }, { "cell_type": "code", "execution_count": 113, "id": "896a0234", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['006618_hippoSIT_2022-11-17_14-42-54', '006618_hippoSIT_2022-11-18_13-47-44']" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# see sessions\n", "sessions" ] }, { "cell_type": "code", "execution_count": 114, "id": "54278299", "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/sobolev/projects/pySIT/pipeline/analysis/../postprocessing/performance.py:56: RuntimeWarning: invalid value encountered in true_divide\n", " proportion_correct = amount_correct / amount_trials\n", "/home/sobolev/projects/pySIT/pipeline/analysis/../postprocessing/performance.py:70: RuntimeWarning: invalid value encountered in double_scalars\n", " proportion_correct_bs[bs, i] = temp_correct[temp_index].sum() / float(amount_trials)\n", "/home/sobolev/projects/pySIT/pipeline/analysis/../postprocessing/performance.py:135: RuntimeWarning: invalid value encountered in true_divide\n", " proportion_correct_bs_fake[bs, time_slot] = temp_correct.sum() / float(amount_trials)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Session 006618_hippoSIT_2022-11-17_14-42-54 done\n" ] }, { "ename": "BlockingIOError", "evalue": "[Errno 11] Unable to open file (unable to lock file, errno = 11, error message = 'Resource temporarily unavailable')", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mBlockingIOError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_420694/672943881.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0mdataset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcalculate_performance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtr_idxs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcfg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mdump_performance_to_H5\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh5name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mds_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Session %s done\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/projects/pySIT/pipeline/analysis/../postprocessing/performance.py\u001b[0m in \u001b[0;36mdump_performance_to_H5\u001b[0;34m(h5name, ds_name, dataset)\u001b[0m\n\u001b[1;32m 151\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdump_performance_to_H5\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh5name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mds_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 153\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mh5py\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh5name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'a'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 154\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m'analysis'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0manal_group\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate_group\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'analysis'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/projects/pySIT/lib/python3.8/site-packages/h5py/_hl/files.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, name, mode, driver, libver, userblock_size, swmr, rdcc_nslots, rdcc_nbytes, rdcc_w0, track_order, fs_strategy, fs_persist, fs_threshold, fs_page_size, page_buf_size, min_meta_keep, min_raw_keep, locking, **kwds)\u001b[0m\n\u001b[1;32m 505\u001b[0m \u001b[0mfs_persist\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfs_persist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfs_threshold\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfs_threshold\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m fs_page_size=fs_page_size)\n\u001b[0;32m--> 507\u001b[0;31m \u001b[0mfid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_fid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muserblock_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfapl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfcpl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mswmr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mswmr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 508\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 509\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlibver\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/projects/pySIT/lib/python3.8/site-packages/h5py/_hl/files.py\u001b[0m in \u001b[0;36mmake_fid\u001b[0;34m(name, mode, userblock_size, fapl, fcpl, swmr)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;31m# existing one (ACC_EXCL)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0mfid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh5f\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mh5f\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mACC_RDWR\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfapl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfapl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0;31m# Not all drivers raise FileNotFoundError (commented those that do not)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m except FileNotFoundError if fapl.get_driver() in (\n", "\u001b[0;32mh5py/_objects.pyx\u001b[0m in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mh5py/_objects.pyx\u001b[0m in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mh5py/h5f.pyx\u001b[0m in \u001b[0;36mh5py.h5f.open\u001b[0;34m()\u001b[0m\n", "\u001b[0;31mBlockingIOError\u001b[0m: [Errno 11] Unable to open file (unable to lock file, errno = 11, error message = 'Resource temporarily unavailable')" ] } ], "source": [ "for session in sessions:\n", " s_path = os.path.join(source, animal, session)\n", " h5name = os.path.join(s_path, session + '.h5')\n", " jsname = os.path.join(s_path, session + '.json')\n", "\n", " # loading position and trial data\n", " with h5py.File(h5name, 'r') as f:\n", " tl = np.array(f['processed']['timeline']) # time, X, Y, speed\n", " trial_idxs = np.array(f['processed']['trial_idxs']) # idx start, idx end, X, Y, R, trial result (idx to tl)\n", "\n", " # loading session configuration\n", " with open(jsname, 'r') as f:\n", " cfg = json.load(f)\n", "\n", " timepoints = cfg['experiment']['timepoints']\n", " s_duration = cfg['experiment']['session_duration']\n", "\n", " periods = [[0, s_duration], [0, timepoints[0]], [timepoints[1], timepoints[2]], [timepoints[3], s_duration]]\n", "\n", " # separate ALL, L, D, L'\n", " ds_names = ['performance_ALL', 'performance_L', 'performance_D', 'performance_Lp']\n", " #ds_names = ['performance_ALL'] # only light\n", "\n", " for i, ds_name in enumerate(ds_names):\n", " t_start, t_end = periods[i]\n", " trial_starts = tl[trial_idxs[:, 0].astype(np.int32)][:, 0]\n", " trial_ends = tl[trial_idxs[:, 1].astype(np.int32)][:, 0]\n", " tr_idxs = trial_idxs[(trial_starts >= t_start) & (trial_ends <= t_end)]\n", "\n", " dataset = calculate_performance(tl, tr_idxs, cfg)\n", " dump_performance_to_H5(h5name, ds_name, dataset)\n", " \n", " print(\"Session %s done\" % session)" ] }, { "cell_type": "markdown", "id": "72fea9eb", "metadata": {}, "source": [ "## Plot performance" ] }, { "cell_type": "code", "execution_count": 115, "id": "4d1226ea", "metadata": {}, "outputs": [], "source": [ "n_cols = 4\n", "n_rows = 1 + int(len(sessions) / n_cols)" ] }, { "cell_type": "code", "execution_count": 120, "id": "93c94b1d", "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAR0AAAEYCAYAAABhpyLIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABF4ElEQVR4nO2dd3xc1ZX4v0fd6r3Yci9ykeWGjY1tsA2EkgApkF0gxAYCS3o2PZsC2Q0bUjYJ6WEJJfxoDiWwhGqwKQaMm2zLvclW720kjaSZub8/3pM9FlOepGmS7vfzmY9m7rvvvaOZ0dE9554iSik0Go0mVESFWwCNRjO20EpHo9GEFK10NBpNSNFKR6PRhBStdDQaTUjRSkej0YQUrXQ0Gk1I0UonRIjI90Rku4i0i0iDiPyfiBQPmCMicpeIVItIt4hsEZF5bseniMhfReSEefyEiPxURMa5zVkgIo+LSIU557CIfFtEfH7WIlIgIo+JyCERcYrIQx7mzBORp8z7KhG5y+Lv/kkRecX8vZWIrPEwJ19EHhGRWhHpEpE9InKjleub539fRLaKSKeIfCj4TERyTBmqRaTHfH/+ICJpg7jHKhFxiEjZgPEt5u818LF/ENf+nnnO733M+Ys555tWrxuJaKUTOtYAfwQuANYBDmCTiGS6zfk28A3gy8BSoB54TURSzOOzgWjg88A8c95ngXvdrrEEaABuMufcCfwQ+K4f+eKBRuAeYJuXOYlAOfAD4KSf67mTBLwLfN3HnL8Bc4BrgGLz9SMicqHFe8QDzwC/8XLcBTwLXAXMAjYAFwP/a+XiIpJhyvS6h8OfBArcHlOADmCjxWsvB24H9vqYcy2wDKi2cs2IRimlH2F4AMmAE7jKfC1ADfB9tznjML68/+bjOl8Amvzc6+fAzkHI9gLwkJ85ZcBdg/ydswEFrPFwzAbcPGDsFPDNQd7jWuNrbWnuV4Aai3OfwVDgdwFlfubeiPFPZaKF66YBx4G1wBbg9x7mTAaqMJRy+WDfk0h76JVO+EjBWGm2mK+nAvnAq/0TlFLdwFsYqyNvpLpdYzhzws07wKdFJEtEokTkGiAH2BSMm4nIeIwVypsW5n4ByAN+YvHytwEvK6UqLMy9D3hKKbXZy71jgMeBnyilDlq8f0SjlU74uBcoBd4zX+ebP+sGzKtzO3YOIjIZ+CaG2eYREVmMYUr8aeiihoRPY6yCGoEe4FHgeqVUaSBvYvq7ujBWDh3AzX7mz8dY4XxGKeW0cP1ZwEVYMNtE5DZgBoa56o0fA41KqUj//CyjlU4YEJFfAauAT1n5Inu5Rh7wMvAa8Gsvc4qAfwK/UUo97TZuc3v8eSj393K/Gwdce/UgTv8Jhvl1CXAe8AvgbyKyIFDymfw7sBjDdzQNNx/QwPdFROKBJzHMGas+rNswzOR/ul139YBr32h+Nv8N3KCU6vN0IdPhvgG4dZC/Y2QTbvturD0wFEQNMHvA+DSM//RLB4z/E3h4wFg+cAD4OxDj5T6zzfv82sOxGW6PXA/Hh+TTwTAZ3a89bsBxjz4dYLo5vmDA+Cbg/kG+v4Px6awy7zvR0/uC4RBWGP6Z/ofLbewjA64Xh+H8v3vA+LgB107BUCYDr63M6zswHON3ub12n+MEKsP9XR7qI8aPTtIEEBG5F/gXYK1S6tCAwyeBWuBSYLs5PwFYDXzL7RoFwGZgP4b54fBwn7nAG8BGpdS/DzyulDoWkF/ow9ftwDBZBkui+XPgqs9JcFfj/deOhw+/LyISC8wfcM4XMD6jT2A4dd35OIZi/av7oDJ8cwOv/Q9gx4DzHwSOYqyAejHM5qcGzHkFw8djadctEtFKJ0SIyB8wtrE/DrSISL+fxqaUsimllIj8BvgPETkEHMGw9W3AY+Y1xmPscFQDXwOyRaT/Fg1KKacZ1/MGhmL6b7f7oJSq9SPjQvNpKuAyX/cqpQ6Yx+OAueacBCDfnGPzpcjMsIBJQLo5NENEWoFaU6ZDGH+UfzRjUJrM9+lSDDPILyIyCcjEWJ24/y7HlFI2EfkYkAXsxHhP52GYcO97k10ZZs/AmJx6oEcpVebhlNuB15VSJ/zJq5RqBVoHXLsTaHa7dr35cJ/Th/G+HfZ3j4gl3EutsfLAWBZ7etzlNkcwltQ1gB1jZ6XY7fgGH9eZYs65y9ucIcpY7nZ8ipc5W/xc15vc7r/7TOBpDMd5J7AHWD+I9/chL/dYYx6/BMNp3wp0Yyj1nwEZg/wc78LDljmGeewCPj2M78gWPGyZD5hTzgjfMhfzF9FoNJqQoHevNBpNSNFKRxPxiMh/DNhydn+8FG75NINDm1eaiMd0RGd6OdytlKoKpTya4aGVjkajCSmjass8PT1dzZgxI9xiANDZ2UlSUlK4xQC0LN7QsngmULLs3LmzUSmV86ED4d4+C+Rj1qxZKlLYvHlzuEU4g5bFM1oWzwRKFmCH8vB3qh3JGo0mpGilo9FoQopWOhqNJqSMKkeyJ/r6+qisrMRut4f0vmlpaRw8GBk1lyJBloSEBAoLC8MqgyYyGPVKp7KykpSUFKZMmYJbcmTQ6ejoICUlxf/EEBBuWZRSNDU1UVlZGTYZNJHDqDev7HY7WVlZIVU4mnMREbKyskK+2tREJqNe6QBa4UQA+jPQ9DMmlI5Go4kctNIJAdHR0SxcuJDi4mKuu+46urq6BnX+t771LebNm8e3vvUt/5M1mghHK50QMG7cOEpLSykrKyMuLo4//9laLXSHw6hEet9997F3715+8YtfDOo8jSYS0UonxKxevZpjx47R2dnJLbfcwrJly1i0aBHPPfccAA899BBXX30169at4+KLL+bqq6/GZrOxZMkSnnzyScrLy1m3bh0lJSVcfPHFnD59GoANGzZwxx13cP755/Ptb3+bDRs28PnPf57ly5dTUlLCli1buOWWW5gzZw4bNmw4I8/nP/95zjvvPObNm8edd955ZnzKlCnceeedLF68mPnz53PokFHS2WazcfPNNzN//nxKSkp4+mmjycSrr77KihUrWLx4Mddddx02my1E76hmpDHqt8zd+fH/7edAdXtArzl3fCp3XjXP/0SMFchLL73E5Zdfzt133826det44IEHaG1tZdmyZVxyySUA7Nq1i71795KZaVRzSE5OprS0FICrrrqK9evXs379eh544AG+8pWv8I9//AMwwgPeffddoqOj2bBhAy0tLbz33ns8+eSTXH311WzdupX777+fpUuXUlpaysKFC7n77rvJzMzE6XRy8cUXs3fvXkpKSgDIzs5m165d/PGPf+SXv/wl999/P//1X/9FWloa+/btA6ClpYXGxkZ+8pOfsGnTJpKSkvjZz37Gr371K370ox8F8J3WjBb0SicEdHd3s3DhQs477zwmTZrErbfeyquvvso999zDwoULWbNmDXa7/cyq5dJLLz2jcAby3nvvccMNNwBw00038c4775w5dt111xEdHX3m9VVXXYWIMHfuXPLy8pg/fz5RUVHMmzeP8vJyADZu3MjixYtZtGgR+/fv58CBA2fO/+QnPwnAkiVLzszftGkTX/ziF8/MycjI4P333+fAgQOsXLmShQsX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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "selected = [sessions[1]]\n", "\n", "fig = plt.figure(figsize=(3.5 * n_cols, 4 * n_rows))\n", "\n", "for i, session in enumerate(selected):\n", " h5name = os.path.join(source, animal, session, session + '.h5')\n", " with h5py.File(h5name, 'r') as f:\n", " perf = np.array(f['analysis']['performance_ALL'])\n", " x = perf[:, 6]\n", " \n", " ax = fig.add_subplot(n_rows, n_cols, i+1)\n", "\n", " ax.plot(x, perf[:, 0], label='Performance') # performance\n", " ax.plot(x, perf[:, 3], label='Chance') # chance\n", " ax.fill_between(x, perf[:, 0] + perf[:, 1], perf[:, 0] + perf[:, 2], alpha=0.4)\n", " ax.fill_between(x, perf[:, 3] + perf[:, 4], perf[:, 3] + perf[:, 5], alpha=0.4)\n", " ax.set_ylim(0, 110)\n", " ax.set_xlim(0, 65)\n", " ax.grid()\n", " ax.set_title(session[-19:], fontsize=14)\n", " ax.set_xlabel('Time, s', fontsize=14)\n", " ax.legend(loc='upper left')\n", " \n", " if i == 0:\n", " ax.set_ylabel('Successful trials, %', fontsize=14)\n", " \n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "9090e619", "metadata": {}, "source": [ "## Separate periods" ] }, { "cell_type": "code", "execution_count": null, "id": "fc5b694e", "metadata": {}, "outputs": [], "source": [ "names = ['ALL', 'L', 'D', 'Lp']\n", "performances = []\n", "with h5py.File(h5name, 'r') as f:\n", " for name in names:\n", " performances.append( np.array(f['analysis']['performance_%s' % name]) )" ] }, { "cell_type": "code", "execution_count": 13, "id": "4e1470d7", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(15,4))\n", "\n", "for i, name in enumerate(names):\n", " ax = fig.add_subplot(1, 4, i+1)\n", "\n", " perf = performances[i]\n", " x = perf[:, 6]\n", " \n", " ax.plot(x, perf[:, 0]) # performance\n", " ax.plot(x, perf[:, 3]) # chance\n", " ax.fill_between(x, perf[:, 0] + perf[:, 1], perf[:, 0] + perf[:, 2], alpha=0.4)\n", " ax.fill_between(x, perf[:, 3] + perf[:, 4], perf[:, 3] + perf[:, 5], alpha=0.4)\n", " ax.set_ylim(0, 110)\n", " ax.set_xlim(0, 65)\n", " ax.grid()\n", " ax.set_title(name, fontsize=14)\n", " ax.set_xlabel('Time, s', fontsize=14)\n", " \n", " if i == 0:\n", " ax.set_ylabel('Successful trials, %', fontsize=14)" ] }, { "cell_type": "markdown", "id": "324613ac", "metadata": {}, "source": [ "## Reward performance in light vs dark" ] }, { "cell_type": "code", "execution_count": 5, "id": "904887f6", "metadata": {}, "outputs": [], "source": [ "def reward_counts_in_light_and_dark(source, animal, session):\n", " s_path = os.path.join(source, animal, session)\n", " h5name = os.path.join(s_path, session + '.h5')\n", " jsname = os.path.join(s_path, session + '.json')\n", " \n", " # loading session configuration\n", " with open(jsname, 'r') as f:\n", " cfg = json.load(f)\n", "\n", " # loading position and trial data\n", " with h5py.File(h5name, 'r') as f:\n", " tl = np.array(f['processed']['timeline']) # time, X, Y, speed\n", " trial_idxs = np.array(f['processed']['trial_idxs']) # idx start, idx end, X, Y, R, trial result (idx to tl)\n", "\n", " s_duration = cfg['experiment']['session_duration']\n", " timepoints = cfg['experiment']['timepoints']\n", " l_periods = [[0, timepoints[0]], [timepoints[3], s_duration]]\n", " d_periods = [[timepoints[0], timepoints[3]]]\n", " trial_starts = tl[trial_idxs[:, 0].astype(np.int32)][:, 0]\n", " trial_ends = tl[trial_idxs[:, 1].astype(np.int32)][:, 0]\n", "\n", " def get_reward_count(periods):\n", " rewards = 0\n", " duration = 0\n", " for t_start, t_end in periods:\n", " tr_idxs = trial_idxs[(trial_starts >= t_start) & (trial_ends <= t_end)]\n", " rewards += len(tr_idxs[tr_idxs[:, 5] == 1])\n", " duration += t_end - t_start\n", " return rewards, duration\n", "\n", " return np.array([get_reward_count(l_periods), get_reward_count(d_periods)])" ] }, { "cell_type": "code", "execution_count": 6, "id": "5a173322", "metadata": {}, "outputs": [], "source": [ "# session paths\n", "source = '/home/sobolev/nevermind/Andrey/data'\n", "animal = '006865'\n", "\n", "# single sessions\n", "sessions = ['006865_hippoSIT_2021-12-17_15-14-51']\n", "\n", "# or list of sessions\n", "sessions = get_sessions_list(os.path.join(source, animal), animal)" ] }, { "cell_type": "code", "execution_count": 7, "id": "162ba711", "metadata": {}, "outputs": [], "source": [ "all_stats = []\n", "for session in sessions:\n", " all_stats.append( reward_counts_in_light_and_dark(source, animal, session) )" ] }, { "cell_type": "code", "execution_count": 8, "id": "af2f2bb5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Animal #006865')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ygYbbMCoUaN43/vex8KFC1fs44YbbiAiuPrqq9ltt90YMmQI11xzzUrHevjhh9luu+049thjeemll/rsPUqSJElqrj4feEXds8MOOzBlyhQuu+wyAP72t78xY8YM7rjjDq688kqWLl3KkUceudLrTjvtNL70pS9x77338ta3vvU16+bNm8eee+7JAQccwMyZMxk0qCWDrEqSJElqAv933wbGjx/PddddB8Dxxx+/on3rrbfmO9/5Dttvvz2PPvoom2+++Yp106dPZ7/99ltpX7fccgsHHnggn/zkJznjjDOaX7ykvudUGw3R1YBd/W1QLUld6O20KK36N9TpXNRA9uS1gcykGLcGbr/9dg455BC23HJLNthgAyZOnAgUl1/W6mivtXDhQvbdd19OO+00A54kSZJUUYa8NnDPPfew9dZb8+yzz/Lud7+b9dZbjx/84AfMmTOHX//610BxGWetYcOGrbSfESNGsPvuu3PJJZfwxBMrzTcvSZIkqQIMef3cXXfdxa9//WsOP/xw7r33XpYuXcpZZ53F29/+drbbbjuWLFlS977WWWcdrrjiCjbaaCMmT57Mk08+2bzCJUmSJLWEIa8fefHFF3nsscdYtGgRd9xxB+eccw6TJk3iLW95C6eeeipjx45lnXXW4Vvf+hYPPfQQV111FWeeeWa3jjF06FB+9atfseGGGxr0JEmSpApaawZeaYeb5a+77jo23XRTBg4cyPDhw9lhhx2YPn06U6dOZciQIQwbNoyLLrqI008/nfPOO48dd9yRc845hylTpnTrOEOHDuXKK6/koIMOYvLkycyaNYvhw4c3501JkiRJ6lNrTcjr72bOnMnMmTPXuN0RRxzBEUcc8Zq2zFdHXZo0adJrljtMnz6d6dOnr1geOnQos2fP7nG9kiRJkvonL9eUJEmSpAqxJ6+R/vfWldtev/JUBpIkrbUqNheY8yk2ifN9to+K/Z2uCnvyJEmSJKlCDHmSJEmSVCGVDHldDTyinvGzlCRJktpL5ULe4MGDef7551tdRmUsX76cQYO8dVOSJElqF5ULeaNGjWLhwoU899xz9kL10iuvvMLjjz/Ohhtu2OpSJEmSJNWpcl00r3vd6wBYtGgRy5cv79uDP7t05bYl8/q2hgYbNmwYI0aMaHUZkiRJkupUuZAHRdDrCHt96kfjV25z+FhJUpto1+kA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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# for 006865 sessions before 9 are not in dark\n", "idx = 9\n", "labels = sessions[idx:]\n", "rewards_l = np.array([x[0][0] for x in all_stats[idx:]])\n", "rewards_d = np.array([x[1][0] for x in all_stats[idx:]])\n", "\n", "x = np.arange(len(labels)) # the label locations\n", "width = 0.35 # the width of the bars\n", "\n", "fig = plt.figure(figsize=(15,4))\n", "ax = fig.add_subplot(1, 1, 1)\n", "\n", "rects1 = ax.bar(x - width/2, rewards_l, width, label='Light', color='orange')\n", "rects2 = ax.bar(x + width/2, rewards_d, width, label='Dark', color='gray')\n", "ax.legend(fontsize=14)\n", "ax.set_xlabel('Session, #', fontsize=14)\n", "ax.set_ylabel('Reward count', fontsize=14)\n", "ax.set_title('Animal #%s' % animal, fontsize=14)" ] }, { "cell_type": "code", "execution_count": 12, "id": "478891a2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Reward count, %')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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810TOee7Y7js6luY8Jd76du37xKdd0lH62yrjn7mT5IkSZI6pWV69WK1gf1Zc/UBDP2vIZx8wqHccd2PeejvT/C9730PgMsvv5ytttqK5ZdfngEDBvCpT31q3kTsAHfccQcRwc0338zWW29Nr169+OMf/9jiWs888wwbb7wxRx55JO+9915d3o/JnyRJkiRV6UObbMAeu2zH+PHjAXjnnXcYPXo0jzzyCDfeeCOzZ8/mM59p2enxtNNO49xzz+WJJ55gm222abLv8ccfZ4cddmCvvfZi7Nix9OhRnw6aHT3giyRJkiR1KZsOWZfb7izmBDzmmGPmbV9vvfW49NJL2WSTTZg+fTprrbXWvH2jRo1i9913b3Gu++67j7333psvf/nLnHnmmXWN25Y/SZIkSVoMmfMnW3/ooYfYf//9WWeddVh++eUZNqyY/P2ZZ55pUmbu9kozZsxgt91247TTTqt74gcmf5IkSZK0WP45+WnWW2893nzzTT72sY/Rp08fLrvsMh544AH+8Ic/AEV30EqtDQ7Tv39/tt12W6688kpeeeWVusdt8idJkiRJVXr08Sn84c/3cOCBB/LEE08we/ZszjvvPHbccUc23nhjZs2aVfW5lllmGa6//npWWmklRowYwauvvlq/wDH5kyRJkqRWvf3OOzz/wmyem/kijzz6JD+45AqG7/85/vvDm3DqqacyaNAglllmGS6++GKefvppbrrpJs4+++zFukbv3r254YYbWHHFFeueADrgiyRJkqR2dc4X9p6/skrLZ+F4aWJ1J2pL2Src9pf7WX2zPenevTv9VlyOD228PqO+OpKRR3yCXn370rdvX8aNG8cZZ5zBj370IzbffHN+8IMfsMceeyzWdXr37s2NN97IPvvsw4gRI7j11lvp169fzd7HXCZ/kiRJktTM2ItHMfbiUYs87uCDD+bggw9usi0z5y0PHz68yfpco0aNYtSo+efv3bs3EyZMWOJ4q2G3T0mSJElqACZ/kiRJktQATP4kSZIkqQGY/EmSJElSAzD5kyRJkqQGYPInSZIkSQ3A5E+SJEmSGoDJnyRJkiQ1AJM/SZIkSWoAPTo6AEmSJEkN5o9bte/1PvZATU83eIv9+MKJJ3PqqadWdfzUqVNZd911eeCBBxg2bFhNY1kctvxJkiRJUjNHfWEU+3zmy63ue+DWcZxwwgk1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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# for 006865 sessions before 9 are not in dark\n", "idx = 9\n", "labels = sessions[idx:]\n", "rewards_l = np.array([x[0][0] for x in all_stats[idx:]])\n", "rewards_d = np.array([x[1][0] for x in all_stats[idx:]])\n", "rew_total = rewards_l + rewards_d\n", "\n", "x = np.arange(len(labels)) # the label locations\n", "width = 0.7 # the width of the bars\n", "\n", "fig = plt.figure(figsize=(15,4))\n", "ax = fig.add_subplot(1, 1, 1)\n", "\n", "rects1 = ax.bar(x, 100*rewards_d/rew_total, width, label='Dark', color='gray')\n", "rects2 = ax.bar(x, 100*rewards_l/rew_total, width, bottom=100*rewards_d/rew_total, label='Light', color='orange')\n", "ax.axhline(50, color='black', ls='--')\n", "ax.legend(fontsize=14)\n", "ax.set_title('Animal #%s' % animal, fontsize=14)\n", "ax.set_xlabel('Session, #', fontsize=14)\n", "ax.set_ylabel('Reward count, %', fontsize=14)" ] }, { "cell_type": "markdown", "id": "2daf4cf1", "metadata": {}, "source": [ "### special plot for grant application" ] }, { "cell_type": "code", "execution_count": 27, "id": "f8775ed7", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "rew_l_ = np.concatenate([rewards_l[:5], rewards_l[-5:]])\n", "rew_d_ = np.concatenate([rewards_d[:5], rewards_d[-5:]])\n", "rew_t_ = np.concatenate([rew_total[:5], rew_total[-5:]])\n", "\n", "x = np.concatenate([np.arange(5) + 1, np.arange(5) + 8])\n", "x_tick_ls = np.concatenate([np.arange(5) + 1, np.arange(5) + len(rew_total) - 5])\n", "width = 0.7 # the width of the bars\n", "\n", "fig = plt.figure(figsize=(6,4))\n", "ax = fig.add_subplot(1, 1, 1)\n", "\n", "rects1 = ax.bar(x, 100*rew_d_/rew_t_, width, label='Dark', color='gray')\n", "rects2 = ax.bar(x, 100*rew_l_/rew_t_, width, bottom=100*rew_d_/rew_t_, label='Light', color='orange')\n", "ax.axhline(50, color='black', ls='--')\n", "ax.legend(fontsize=14, loc='upper right')\n", "ax.set_title('Animal #%s' % animal, fontsize=14)\n", "ax.set_xlabel('Session with darkness, #', fontsize=14)\n", "ax.set_ylabel('Reward count, %', fontsize=14)\n", "ax.set_xticks(x)\n", "_ = ax.set_xticklabels(x_tick_ls)" ] }, { "cell_type": "markdown", "id": "010dcbc0", "metadata": {}, "source": [ "## Trial performance" ] }, { "cell_type": "code", "execution_count": 122, "id": "43187d72", "metadata": {}, "outputs": [], "source": [ "# session paths\n", "source = '/home/sobolev/nevermind/Andrey/data'\n", "animal = '006618'\n", "\n", "# or list of sessions\n", "sessions = get_sessions_list(os.path.join(source, animal), animal)" ] }, { "cell_type": "code", "execution_count": 123, "id": "f03bace1", "metadata": {}, "outputs": [], "source": [ "session = sessions[0]\n", "s_path = os.path.join(source, animal, session)\n", "h5name = os.path.join(s_path, session + '.h5')\n", "jsname = os.path.join(s_path, session + '.json')\n", "\n", "# loading session configuration\n", "with open(jsname, 'r') as f:\n", " cfg = json.load(f)\n", "\n", "with h5py.File(h5name, 'r') as f:\n", " tl = np.array(f['processed']['timeline']) # time, X, Y, speed\n", " trial_idxs = np.array(f['processed']['trial_idxs']) # idx start, idx end, X, Y, R, trial result (idx to tl)" ] }, { "cell_type": "code", "execution_count": 124, "id": "b856689b", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, '#006618, session 2022-11-17')" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "timepoints = cfg['experiment']['timepoints']\n", "durations = tl[trial_idxs[:, 1].astype(int)][:, 0] - tl[trial_idxs[:, 0].astype(int)][:, 0]\n", "failed_idxs = np.where(trial_idxs[:, 5] == 0)[0]\n", "not_none_idxs = np.where(durations < 59)[0]\n", "distrac_idxs = list(np.intersect1d(failed_idxs, not_none_idxs))\n", "\n", "_colors = ['green' if x == 1 else 'grey' for x in trial_idxs[:, 5]]\n", "colors = [_colors[i] if not i in distrac_idxs else 'red' for i in range(len(_colors))]\n", "\n", "t_dark_beg = timepoints[0]\n", "t_dark_end = timepoints[-1]\n", "trial_starts = tl[trial_idxs[:, 0].astype(int)][:, 0]\n", "\n", "idx_dark_beg = len(trial_starts[trial_starts < t_dark_beg])\n", "idx_dark_end = len(trial_starts[trial_starts < t_dark_end])\n", "\n", "fig = plt.figure(figsize=(4, 4))\n", "ax = fig.add_subplot(111)\n", "ax.barh(np.arange(len(trial_idxs)), durations, height=0.6, color=colors, align='center')\n", "ax.set_xlabel('Trial time, s', fontsize=14)\n", "ax.set_ylabel('Trial, #', fontsize=14)\n", "ax.set_title('#%s, session %s' % (animal, session[16:26]), fontsize=14)\n", "#ax.legend(fontsize=14, loc='lower right')\n", "#ax.axhspan(idx_dark_beg, idx_dark_end, facecolor='grey', alpha=0.3)" ] }, { "cell_type": "markdown", "id": "bfe2b390", "metadata": {}, "source": [ "## Miltiple island performance" ] }, { "cell_type": "code", "execution_count": 125, "id": "ac11ea2d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['006618_hippoSIT_2022-11-17_14-42-54', '006618_hippoSIT_2022-11-18_13-47-44']" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "source = '/home/sobolev/nevermind/Andrey/data'\n", "animal = '006618'\n", "\n", "# single sessions\n", "sessions = ['008229_hippoSIT_2022-06-09_14-15-49']\n", "\n", "# or list of sessions\n", "sessions = get_sessions_list(os.path.join(source, animal), animal)[-5:]\n", "sessions" ] }, { "cell_type": "code", "execution_count": 126, "id": "ed6c5723", "metadata": {}, "outputs": [], "source": [ "session = sessions[0]\n", "s_path = os.path.join(source, animal, session)\n", "h5name = os.path.join(s_path, session + '.h5')\n", "\n", "with h5py.File(h5name, 'r') as f:\n", " cfg = json.loads(f['processed'].attrs['parameters'])\n", " performance_matrix = np.array(f['analysis']['performance_ALL'])\n", " tl = np.array(f['processed']['timeline']) # time, X, Y, speed\n", " trial_idxs = np.array(f['processed']['trial_idxs']) # idx start, idx end, X, Y, R, trial result (idx to tl)" ] }, { "cell_type": "code", "execution_count": 127, "id": "3ad6589d", "metadata": {}, "outputs": [], "source": [ "durations = tl[trial_idxs[:, 1].astype(int)][:, 0] - tl[trial_idxs[:, 0].astype(int)][:, 0]\n", "\n", "# successful trials\n", "success_idxs = np.where(trial_idxs[:, 5] == 1)[0]\n", "\n", "# distractor trials\n", "failed_idxs = np.where(trial_idxs[:, 5] == 0)[0]\n", "not_none_idxs = np.where(durations < 59)[0]\n", "distrac_idxs = np.intersect1d(failed_idxs, not_none_idxs)\n", "\n", "# None trials\n", "none_idxs = np.where(durations > 59)[0]\n", "none_idxs = np.intersect1d(failed_idxs, none_idxs)\n", "\n", "perf_level, chance_level = performance_matrix[-1][0], performance_matrix[-1][3]" ] }, { "cell_type": "code", "execution_count": 128, "id": "067bcd1d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 128, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "results = [\n", " len(success_idxs) / len(trial_idxs) - chance_level/100.0,\n", " len(distrac_idxs) / len(trial_idxs) - chance_level/100.0,\n", " len(none_idxs) / len(trial_idxs) - chance_level/100.0\n", "]\n", "\n", "fig = plt.figure(figsize=(4, 4))\n", "ax = fig.add_subplot(1, 1, 1)\n", "\n", "rects1 = ax.bar([1, 2, 3], results, 0.7, label='Dark', color=['green', 'red', 'gray'])\n", "ax.grid()\n", "ax.set_ylabel('SIT incidence relative to chance', fontsize=14)\n", "ax.set_xticks([1, 2, 3])\n", "_ = ax.set_xticklabels(['Target', 'Distractor', 'None'], fontsize=14)\n", "ax.axhline(0, ls='--', color='black')" ] }, { "cell_type": "markdown", "id": "b516f26f", "metadata": {}, "source": [ "## Pie percentage target / distractors" ] }, { "cell_type": "code", "execution_count": 12, "id": "f61cc408", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "cannot reshape array of size 6 into shape (3,3)", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_420694/4257983575.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mfinish_times\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_finish_times\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0manimal\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0misland_succ_rates\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_finish_times_rates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfinish_times\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/projects/pySIT/pipeline/analysis/../postprocessing/performance.py\u001b[0m in \u001b[0;36mget_finish_times\u001b[0;34m(session_path)\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[0mtraj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtl\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrial\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrial\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 185\u001b[0;31m \u001b[0mcurrent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mislands\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 186\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0misland\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcurrent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 187\u001b[0m \u001b[0mfinish_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwhen_successful\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtraj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0misland\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0misland\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0misland\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcfg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'experiment'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'target_duration'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: cannot reshape array of size 6 into shape (3,3)" ] } ], "source": [ "session = sessions[0]\n", "\n", "finish_times = get_finish_times(os.path.join(source, animal, session))\n", "island_succ_rates = get_finish_times_rates(finish_times)" ] }, { "cell_type": "code", "execution_count": 8, "id": "233bf271", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([[ 0. , 0. , 0. ],\n", " [ 0. , 120.95, 0. ],\n", " [177.77, 0. , 0. ],\n", " [ 0. , 0. , 212.07],\n", " [297.9 , 0. , 0. ]]),\n", " array([22., 12., 11., 5.]))" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "finish_times[:5], island_succ_rates" ] }, { "cell_type": "code", "execution_count": 15, "id": "fd2b0cbb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.1254831920242543,\n", " 1.1208439095380611,\n", " -1.1339686285189259,\n", " 1.2316379554116026)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "labels = ['D%s' % str(x + 1) for x in range(len(island_succ_rates) - 2)]\n", "labels = ['Target'] + labels + ['None']\n", "sizes = island_succ_rates\n", "explode = [0.1] + [0 for x in range(len(island_succ_rates) - 1)] # only \"explode\" the target\n", "\n", "fig1, ax1 = plt.subplots()\n", "ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=0)\n", "ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle." ] }, { "cell_type": "code", "execution_count": 41, "id": "4dc144ae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Correct islands')" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "all_rates = []\n", "for session in sessions:\n", " finish_times = get_finish_times(os.path.join(source, animal, session))\n", " island_succ_rates = get_finish_times_rates(finish_times) \n", "\n", " all_rates.append(island_succ_rates)\n", " \n", "labels = ['D%s' % str(x + 1) for x in range(len(all_rates) - 2)]\n", "labels = ['Target'] + labels + ['None']\n", "\n", "fig, ax = plt.subplots()\n", "for i, rates in enumerate(np.array(all_rates).T):\n", " ax.plot(rates, label=labels[i])\n", " \n", "ax.legend(loc='upper right')\n", "ax.set_xlabel('Session #', fontsize=14)\n", "ax.set_ylabel('Correct islands', fontsize=14)" ] }, { "cell_type": "code", "execution_count": null, "id": "7f2e76c8", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }