summaryrefslogtreecommitdiff
path: root/experiment/analysis/analysis.ipynb
blob: e7b93d67aa3437a9f7f00f35ee76bd6e63654ad3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d372d82b-0842-4c24-86d1-b75c6637d2a3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "imported tools\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from pathlib import Path\n",
    "from pprint import pprint\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "import tools\n",
    "\n",
    "plt.rcParams[\"axes.prop_cycle\"] = plt.cycler(\"color\", plt.cm.tab10.colors)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3f7c451c-6afb-439d-8bfe-4e545c4f7992",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_path = Path(\"/home/niclas/repos/uni/thesis/experiment/data\")\n",
    "\n",
    "procedures = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"overall\"]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cffed6cb-ed44-4f8d-92dc-760b752d4302",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['random', 'blocked', 'fixed']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "conditions = [x.stem for x in data_path.iterdir() if x.is_dir()]\n",
    "conditions\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "511c7800-8ca9-457b-90b0-d3c3302f6ef0",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = {}\n",
    "for condition in conditions:\n",
    "    data[condition] = {}\n",
    "    for vp in (data_path / condition).iterdir():\n",
    "        data[condition][vp.stem] = tools.fix_vp(tools.unpickle(vp / \"vp.pkl\"), procedures)\n",
    "\n",
    "data_train, data_test = tools.train_test_split(data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "39503de8-fa01-4ce7-a0c9-90f337548945",
   "metadata": {},
   "outputs": [],
   "source": [
    "condition = \"blocked\"\n",
    "#print(data_train[\"fixed\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8f79bdbb-ac99-4577-866a-d566eee527ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_blocked_fixed = tools.block_vps(data_train, \"fixed\")\n",
    "train_blocked_random = tools.block_vps(data_train, \"random\")\n",
    "train_blocked_blocked = tools.block_vps(data_train, \"blocked\")\n",
    "\n",
    "test_blocked_fixed = tools.block_vps(data_test, \"fixed\")\n",
    "test_blocked_random = tools.block_vps(data_test, \"random\")\n",
    "test_blocked_blocked = tools.block_vps(data_test, \"blocked\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3ab5e63b-9c5a-4c53-9d80-983a27f833e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "#fig = tools.plot_vp(blocked_vps[list(blocked_vps.keys())[0]])\n",
    "#plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e371b733-1b94-4ec9-8223-06b82dbac3df",
   "metadata": {},
   "outputs": [],
   "source": [
    "#tools.plot_average_vps(test_blocked_fixed)\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "eb3f2e96-2246-4b08-a7d1-999161ab3fd3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAHqCAYAAADrpwd3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB3+ElEQVR4nO3dfXiT5d3/8c+VFFoKbRBGk1SxVkGxVtQKdeADoEWqCHM63YaITG/nwCfWTQvqVnAKrZuIzt/YrZsOx7h9mHODqUVQQR1jrXRMoD7N1cqkJSjaAqVFkuv3R2wktIG2JLny8H4dR4+aM2eTb2KBM5+c+Z6GaZqmAAAAAAAAAABABzarCwAAAAAAAAAAIFYRogMAAAAAAAAAEAIhOgAAAAAAAAAAIRCiAwAAAAAAAAAQAiE6AAAAAAAAAAAhEKIDAAAAAAAAABACIToAAAAAAAAAACEQogMAAAAAAAAAEAIhOgAAAAAAAAAAIRCiA0ACMwyjS19r1qw5ovuZO3euDMMIT9EAAABADIvWGjvcXn75ZY0YMUJ9+/aVYRj685//bHVJABA3DNM0TauLAABExvr164Mu/+xnP9Orr76qV155JWg8Ly9PmZmZPb6f//73v/rvf/+rr3/96z2+DQAAACAeRGuNHU6maeprX/uaTjzxRN1zzz3q27evTjrpJB111FFWlwYAcSHF6gIAAJFzcKg9aNAg2Wy2w4bdLS0tSk9P7/L9HHPMMTrmmGN6VCMAAAAQT6K1xg6nbdu2aefOnfrmN7+pCy64ICy3+cUXX8gwDKWkEC0BSHy0cwGAJDd27Fjl5+frtdde0+jRo5Wenq5rr71WkvTUU0/pwgsvlNvtVp8+fXTyySdr9uzZ2rNnT9BtdNbO5bjjjtMll1yiyspKFRQUqE+fPho2bJgee+yxqD02AAAAwArhWGNPnz5d/fr107///W9dfPHF6tevnwYPHqwf/ehHamtrC5q7ePFinXbaaerXr58yMjI0bNgw3XHHHZL8a/X2DS+lpaUyDEPHHXdc4Gfff/99TZkyRVlZWUpNTdXJJ5+s//f//l/Q7a9Zs0aGYej3v/+9fvSjH+noo49Wamqq/v3vf4f7qQOAmMTbhQAANTQ0aOrUqbr99ts1f/582Wz+91jff/99XXzxxZo1a5b69u2rd955RxUVFaqqqurwcdXO/Otf/9KPfvQjzZ49W06nU7/5zW903XXXaciQITrvvPMi/bAAAAAAy4Rjjf3FF19o8uTJuu666/SjH/1Ir732mn72s5/J4XDopz/9qSTpySef1MyZM3XzzTfrF7/4hWw2m/7973+rtrZWkvQ///M/Ou2003TZZZfp5ptv1pQpU5SamipJqq2t1ejRo3Xsscfq/vvvl8vl0sqVK3XLLbfok08+UVlZWVA9c+bM0ahRo/TrX/9aNptNWVlZkX4aASAmEKIDALRz504988wzOv/884PG77rrrsB/m6aps88+WyeffLLGjBmjt956S8OHDz/k7X7yySf629/+pmOPPVaSdN555+nll1/WsmXLCNEBAACQ0MKxxt63b5/mzZunK664QpJ0wQUX6M0339SyZcsCIfrf/vY39e/fXw899FDg5w5s2XLMMcdo//79kqRjjz02qO1MSUmJMjIy9MYbbwT6t48fP15tbW0qLy/XLbfcEtQ3/YQTTtAzzzxzxM8NAMQb2rkAAHTUUUd1WNxL0n/+8x9NmTJFLpdLdrtdvXr10pgxYyRJb7/99mFv9/TTTw8E6JKUlpamE088UfX19eErHgAAAIhB4VhjG4ahSZMmBY0NHz48aD1dWFiozz//XN/97nf1l7/8RZ988kmX6mttbdXLL7+sb37zm0pPT9f+/fsDXxdffLFaW1s7HKJ6+eWXd+m2ASDRsBMdACC3291hbPfu3Tr33HOVlpame+65RyeeeKLS09O1detWXXbZZdq7d+9hb3fgwIEdxlJTU7v0swAAAEA8C8caOz09XWlpaUFjqampam1tDVy++uqrtX//fj366KO6/PLL5fP5NHLkSN1zzz0aP358yPo+/fRT7d+/X7/85S/1y1/+stM5BwfynT0mAEgGhOgAgA6HgkrSK6+8om3btmnNmjWBnTGS9Pnnn0exMgAAACA+RXON/b3vfU/f+973tGfPHr322msqKyvTJZdcovfee085OTmd/sxRRx0lu92uq6++WjfeeGOnc3Jzc4Mud/aYACAZEKIDADrVvkBuP3So3f/+7/9aUQ4AAAAQ9yK9xu7bt68uuugi7du3T5deeqm2bNkSMkRPT0/XuHHj9M9//lPDhw9X7969w1IDACQiQnQAQKdGjx6to446Sj/4wQ9UVlamXr166Q9/+IP+9a9/WV0aAAAAEJcisca+/vrr1adP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rVunu+66S2+++aYk6dZbb9Vjjz2mxx57TO+9957Kysq0ZcuWqD+OI0WIHmbF+W4tnloglyP4nSGXI02LpxaoON9tUWUAAABA8ijKKdLCsQuVlZ4VNO5Md2rh2IUqyimyqDIAAIBgsbox94knntALL7yg3//+90pJSVF6err+8Ic/6De/+Y1eeOEFGYahF154Qeedd56uvfZanXjiifrOd76jDz/8UE6nU5L07W9/Wz/96U9VWlqqM888U/X19ZoxY0ZUH0c4GKZphvdY1xjT3Nwsh8OhpqYmZWZmRu1+vT5TVXU75dnVqqwM/ztF7EAHAACAZN0a1WpWPG6vz6saT412tOzQoPRBKsgqYAc6AAAIq9bWVtXV1Sk3N1dpaT1vuVK5uUHzVtQGHTLqdqSpbFIeG3OPwKH+/3R1fUpP9Aix2wxLTssFAAAA8BW7za6RrpFWlwEAAHBYxflujc9zsTE3BhGiAwAAAAAAAEAMYGNubKInOgAAAAAAAAAAIRCiAwAAAAAAAAAQAiE6AAAAAAAAAAAhEKIDAAAAAAAAABACIToAAAAAAAAAACEQogMAAAAAAAAAEAIhOgAAAAAAAAAAIRCiAwAAAAAAAAAiavr06br00kutLqNHCNEBAAAAAAAAAAghxeoCAAAAAAAAAACSfF6pfp20e7vUzynljJZs9qjd/b59+9S7d++o3V+8YCc6AAAAAAAAAFitdrm0KF9acon07HX+74vy/eMRMnbsWN10000qKSnR1772NY0fP14LFy7Uqaeeqr59+2rw4MGaOXOmdu/eHfiZ3/3ud+rfv79Wrlypk08+Wf369VNxcbEaGhoCc7xer0pKStS/f38NHDhQt99+u0zTDLrvtrY23XLLLcrKylJaWprOOeccVVdXB65fs2aNDMPQypUrdcYZZ6hPnz46//zz5fF49OKLL+rkk09WZmamvvvd76qlpSViz5FEiA4AAAAAAAAA1qpdLj09TWreFjze3OAfj2CQvmTJEqWkpOhvf/ub/vd//1c2m00PPfSQNm/erCVLluiVV17R7bffHvQzLS0t+sUvfqHf//73eu211/TRRx/pxz/+ceD6+++/X4899ph++9vf6o033tDOnTv13HPPBd3G7bffrmeffVZLlixRTU2NhgwZogkTJmjnzp1B8+bOnauHH35Y69at09atW3XllVdq0aJF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j9WlJZzq6mo98sgjGj58uNWlJIzPPvtMZ599tnr16qUXX3xRtbW1uv/++9W/f3+rS0sYFRUV+vWvf62HH35Yb7/9tu677z79/Oc/1y9/+UurS4tLe/bs0WmnnaaHH3640+vvu+8+LVy4UA8//LCqq6vlcrk0fvx47dq1K8qVxq9DPcctLS2qqanRT37yE9XU1OhPf/qT3nvvPU2ePNmCSuPT4X6H2/35z3/WP/7xD2VnZ0epMgBdwdof3cHrF4TC6zAcDq8j0Zl4fj1smKZpWl0EYsuOHTuUlZWltWvX6rzzzrO6nISxe/duFRQU6Fe/+pXuuecenX766ezMC4PZs2frb3/7m15//XWrS0lYl1xyiZxOp377298Gxi6//HKlp6fr97//vYWVxT/DMPTcc8/p0ksvleR/1z07O1uzZs1SaWmpJKmtrU1Op1MVFRW64YYbLKw2Ph38HHemurpahYWFqq+v17HHHhu94hJAqOf3448/1llnnaWVK1dq4sSJmjVrFjsYgRjF2h+h8PoFh8LrMBwOryNxOPH2epid6OigqalJkjRgwACLK0ksN954oyZOnKiioiKrS0koy5cv14gRI3TFFVcoKytLZ5xxhh599FGry0oo55xzjl5++WW99957kqR//etfeuONN3TxxRdbXFniqaurU2Njoy688MLAWGpqqsaMGaN169ZZWFlia2pqkmEY7JwKE5/Pp6uvvlq33XabTjnlFKvLAXAYrP0RCq9fcCi8DsPh8DoS3RXrr4dTrC4AscU0TZWUlOicc85Rfn6+1eUkjCeffFI1NTWqrq62upSE85///EeLFy9WSUmJ7rjjDlVVVemWW25Ramqqpk2bZnV5CaG0tFRNTU0aNmyY7Ha7vF6v7r33Xn33u9+1urSE09jYKElyOp1B406nU/X19VaUlPBaW1s1e/ZsTZkyRZmZmVaXkxAqKiqUkpKiW265xepSABwGa3+EwusXHA6vw3A4vI5Ed8X662FCdAS56aab9NZbb+mNN96wupSEsXXrVt1666166aWXlJaWZnU5Ccfn82nEiBGaP3++JOmMM87Qli1btHjxYhZvYfLUU09p6dKlWrZsmU455RRt3LhRs2bNUnZ2tq655hqry0tIhmEEXTZNs8MYjtwXX3yh73znO/L5fPrVr35ldTkJYcOGDXrwwQdVU1PD7ywQB1j7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",
      "text/plain": [
       "<Figure size 1500x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams[\"figure.figsize\"] = [15,5]\n",
    "fig, axes = plt.subplots(ncols=2, nrows=1)\n",
    "tools.plot_average_vps(axes[0], \"fixed\", train_blocked_fixed)\n",
    "tools.plot_average_vps(axes[0], \"random\", train_blocked_random)\n",
    "tools.plot_average_vps(axes[0], \"blocked\", train_blocked_blocked)\n",
    "\n",
    "tools.plot_average_vps(axes[1], \"fixed\", test_blocked_fixed)\n",
    "tools.plot_average_vps(axes[1], \"random\", test_blocked_random)\n",
    "tools.plot_average_vps(axes[1], \"blocked\", test_blocked_blocked)\n",
    "\n",
    "axes[0].set_title(\"Train\")\n",
    "axes[0].set_xlabel(\"Block\")\n",
    "axes[0].set_ylabel(\"RTsum\")\n",
    "axes[1].set_title(\"Transfer\")\n",
    "#plt.xlabel(\"Block\")\n",
    "axes[1].set_xlabel(\"Block\")\n",
    "plt.ylabel(\"RTsum\")\n",
    "plt.legend()\n",
    "fig.tight_layout()\n",
    "plt.savefig(\"RT.png\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "497bd4dc-943a-41f3-a694-3f4b8f049dee",
   "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>train</th>\n",
       "      <th>test</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>vp14</th>\n",
       "      <td>0.982222</td>\n",
       "      <td>0.986667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp18</th>\n",
       "      <td>0.962222</td>\n",
       "      <td>0.970000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp15</th>\n",
       "      <td>0.973333</td>\n",
       "      <td>0.980000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp20</th>\n",
       "      <td>0.906667</td>\n",
       "      <td>0.980000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp10</th>\n",
       "      <td>0.924444</td>\n",
       "      <td>0.943333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp13</th>\n",
       "      <td>0.857778</td>\n",
       "      <td>0.946667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp17</th>\n",
       "      <td>0.911111</td>\n",
       "      <td>0.960000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp12</th>\n",
       "      <td>0.822222</td>\n",
       "      <td>0.820000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp19</th>\n",
       "      <td>0.966667</td>\n",
       "      <td>0.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp16</th>\n",
       "      <td>0.957778</td>\n",
       "      <td>0.926667</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         train      test\n",
       "vp14  0.982222  0.986667\n",
       "vp18  0.962222  0.970000\n",
       "vp15  0.973333  0.980000\n",
       "vp20  0.906667  0.980000\n",
       "vp10  0.924444  0.943333\n",
       "vp13  0.857778  0.946667\n",
       "vp17  0.911111  0.960000\n",
       "vp12  0.822222  0.820000\n",
       "vp19  0.966667  0.800000\n",
       "vp16  0.957778  0.926667"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "condition = \"random\"\n",
    "df = pd.DataFrame([tools.total_accuracy(data[condition][vp], procedures) for vp in data[condition].keys()], index=data[condition].keys(), columns=[\"train\", \"test\"])\n",
    "df\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "143f7497-2c6c-492c-85ab-da3d2cf2a828",
   "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>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>overall</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>vp14</th>\n",
       "      <td>0.992</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.400</td>\n",
       "      <td>0.600</td>\n",
       "      <td>0.968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp18</th>\n",
       "      <td>0.976</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.960</td>\n",
       "      <td>0.392</td>\n",
       "      <td>0.600</td>\n",
       "      <td>0.984</td>\n",
       "      <td>0.904</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp15</th>\n",
       "      <td>0.992</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.960</td>\n",
       "      <td>0.392</td>\n",
       "      <td>0.592</td>\n",
       "      <td>1.000</td>\n",
       "      <td>0.928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp20</th>\n",
       "      <td>0.992</td>\n",
       "      <td>0.376</td>\n",
       "      <td>0.952</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.560</td>\n",
       "      <td>0.784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp10</th>\n",
       "      <td>0.968</td>\n",
       "      <td>0.360</td>\n",
       "      <td>0.592</td>\n",
       "      <td>0.984</td>\n",
       "      <td>0.984</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp13</th>\n",
       "      <td>0.384</td>\n",
       "      <td>0.960</td>\n",
       "      <td>0.928</td>\n",
       "      <td>0.560</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.968</td>\n",
       "      <td>0.568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp17</th>\n",
       "      <td>0.392</td>\n",
       "      <td>0.968</td>\n",
       "      <td>0.584</td>\n",
       "      <td>1.000</td>\n",
       "      <td>1.000</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp12</th>\n",
       "      <td>0.992</td>\n",
       "      <td>0.592</td>\n",
       "      <td>0.392</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.960</td>\n",
       "      <td>1.000</td>\n",
       "      <td>0.016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp19</th>\n",
       "      <td>1.000</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.576</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.848</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>vp16</th>\n",
       "      <td>0.976</td>\n",
       "      <td>0.600</td>\n",
       "      <td>0.376</td>\n",
       "      <td>0.976</td>\n",
       "      <td>0.992</td>\n",
       "      <td>1.000</td>\n",
       "      <td>0.752</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          1      2      3      4      5      6  overall\n",
       "vp14  0.992  0.976  0.992  0.976  0.400  0.600    0.968\n",
       "vp18  0.976  0.976  0.960  0.392  0.600  0.984    0.904\n",
       "vp15  0.992  0.992  0.960  0.392  0.592  1.000    0.928\n",
       "vp20  0.992  0.376  0.952  0.976  0.976  0.560    0.784\n",
       "vp10  0.968  0.360  0.592  0.984  0.984  0.992    0.712\n",
       "vp13  0.384  0.960  0.928  0.560  0.992  0.968    0.568\n",
       "vp17  0.392  0.968  0.584  1.000  1.000  0.992    0.648\n",
       "vp12  0.992  0.592  0.392  0.976  0.960  1.000    0.016\n",
       "vp19  1.000  0.992  0.000  0.576  0.992  0.992    0.848\n",
       "vp16  0.976  0.600  0.376  0.976  0.992  1.000    0.752"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "condition = \"random\"\n",
    "proc_accs = [\n",
    "    tools.count_correct(data[condition][vp], data[condition][vp].keys(), procedures)\n",
    "    for vp in data[condition].keys()\n",
    "]\n",
    "for vp in proc_accs:\n",
    "    for proc in vp.keys():\n",
    "        vp[proc] /= len(next(iter(data[condition].values())).keys())\n",
    "df = pd.DataFrame(proc_accs, index=data[condition].keys())\n",
    "df\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "52d6e2e6-999d-47a2-a829-cee5042d5c68",
   "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.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}