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
|
{
"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/master_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', 'fixed', 'blocked']"
]
},
"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": 18,
"id": "eb3f2e96-2246-4b08-a7d1-999161ab3fd3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABM0AAAHUCAYAAAApy98MAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABxgElEQVR4nO3dfXyT5b3H8e+dAH2ANgrSJtVai6BYK2oHVfAB0OIqrMzhdBMRUY9TfGTdtKBugEehdRNx4wynUweHMXUPOjhqBZTilLGiHROoU+e6DqWlKNoCpQWT+/wRG0naAi1J7jvp5/165QW5cjX5JSnl6jfXg2GapikAAAAAAAAAAQ6rCwAAAAAAAADshtAMAAAAAAAACEFoBgAAAAAAAIQgNAMAAAAAAABCEJoBAAAAAAAAIQjNAAAAAAAAgBCEZgAAAAAAAEAIQjMAAAAAAAAgBKEZAAAAAAAAEILQDEBMMQzjiC4VFRVH9Thz5syRYRjhKRoAAKCHidaYLdxeffVVDR8+XH379pVhGHrhhResLgmAhQzTNE2riwCAI7Vhw4ag6//93/+ttWvX6rXXXgtqz8nJUWpqarcf56OPPtJHH32kc889t9v3AQAA0FNFa8wWTqZp6rjjjtMpp5yiBx54QH379tWpp56qY4891urSAFikl9UFAEBXhIZYAwcOlMPhOGy41dzcrOTk5CN+nBNOOEEnnHBCt2oEAADo6aI1Zgun7du3a9euXfrWt76liy++OCz3eeDAARmGoV69+NUbiEUszwQQd8aMGaPc3Fy9/vrrGjVqlJKTk3X99ddLkp599lldcskl8ng8SkpK0mmnnaaZM2dq7969QffR0fLMk046Sd/4xjdUXl6uvLw8JSUlaejQoXrqqaei9twAAADiRTjGbNOmTVO/fv30z3/+U+PHj1e/fv2UmZmpH/zgB2ptbQ3qu3jxYp155pnq16+fUlJSNHToUN1zzz2S/GO/tg9MS0pKZBiGTjrppMDXfvDBB5o8ebLS0tKUkJCg0047Tf/zP/8TdP8VFRUyDEP/+7//qx/84Ac6/vjjlZCQoH/+85/hfukARAlxN4C4VFdXpylTpujuu+/WvHnz5HD4PyP44IMPNH78eM2YMUN9+/bVP/7xD5WVlamysrLdcoGO/P3vf9cPfvADzZw5U+np6frVr36lG264QYMHD9aFF14Y6acFAAAQV8IxZjtw4IAmTpyoG264QT/4wQ/0+uuv67//+7/lcrn04x//WJL0zDPP6JZbbtHtt9+un/70p3I4HPrnP/+p6upqSdJ//dd/6cwzz9SkSZN0++23a/LkyUpISJAkVVdXa9SoUTrxxBP18MMPy+1265VXXtEdd9yhTz75RLNnzw6qZ9asWRo5cqQee+wxORwOpaWlRfplBBAhhGYA4tKuXbv0u9/9ThdddFFQ+3333Rf4u2maOu+883Taaadp9OjReueddzRs2LBD3u8nn3yiN998UyeeeKIk6cILL9Srr76q5cuXE5oBAAB0UTjGbPv379fcuXN1xRVXSJIuvvhivfXWW1q+fHkgNHvzzTd1zDHH6Gc/+1ng6w5egnnCCSfoiy++kCSdeOKJQctIi4uLlZKSojfeeCOw/9q4cePU2tqq0tJS3XHHHUH7np188sn63e9+d9SvDQDrsTwTQFw69thj2w2+JOlf//qXJk+eLLfbLafTqd69e2v06NGSpHffffew93vWWWcFAjNJSkxM1CmnnKLa2trwFQ8AANBDhGPMZhiGioqKgtqGDRsWND7Lz8/X559/rquuukp/+tOf9MknnxxRfS0tLXr11Vf1rW99S8nJyfriiy8Cl/Hjx6ulpaXdoQeXX375Ed03APtjphmAuOTxeNq17dmzRxdccIESExP1wAMP6JRTTlFycrK2bdumSZMmad++fYe93wEDBrRrS0hIOKKvBQAAQLBwjNmSk5OVmJgY1JaQkKCWlpbA9WuuuUZffPGFnnjiCV1++eXy+XwaMWKEHnjgAY0bN67T+j799FN98cUX+vnPf66f//znHfYJDeA6ek4AYhOhGYC4FLqJvyS99tpr2r59uyoqKgKfVErS559/HsXKAAAA0CaaY7brrrtO1113nfbu3avXX39ds2fP1je+8Q29//77ysrK6vBrjj32WDmdTl1zzTW69dZbO+yTnZ0ddL2j5wQgNhGaAegx2gYwbZu6tvnlL39pRTkAAADoQKTHbH379tWll16q/fv367LLLtPWrVs7Dc2Sk5M1duxY/e1vf9OwYcPUp0+fsNQAIDYQmgHoMUaNGqVjjz1WN998s2bPnq3evXvrN7/5jf7+979bXRoAAAC+FIkx24033qikpCSdd9558ng8qq+v1/z58+VyuTRixIhDfu2jjz6q888/XxdccIGmT5+uk046Sbt379Y///lPrVy58ohOYAcQmzgIAECPMWDAAL344otKTk7WlClTdP3116tfv3569tlnrS4NAAAAX4rEmO2CCy7Qli1bdOedd2rcuHH6/ve/r1NOOUV//vOfNXDgwEN+bU5OjqqqqpSbm6v77rtPl1xyiW644Qb9/ve/DzqBE0D8MUzTNK0uAgAAAAAAALATZpoBAAAAAAAAIQjNAAAAAAAAgBCEZgAAAAAAAEAIQjMAAAAAAAAgBKEZAAAAAAAAEILQDAAAAAAAAAjRy+oCIs3n82n79u1KSUmRYRhWlwMAAGKAaZravXu3MjIy5HDwGaNdMc4DAADdcaRjvbgPzbZv367MzEyrywAAADFo27ZtOuGEE6wuA51gnAcAAI7G4cZ6cR+apaSkSPK/EKmpqRZXAwAAYkFTU5MyMzMD4wjYE+M8AADQHUc61ov70Kxtqn5qaiqDKQAA0CUs+bM3xnkAAOBoHG6sxyYdAAAAAAAAQAhCMwAAAAAAACAEoRkAAAAAAAAQIu73NAMAAAAAAIgUr9erAwcOWF0GDuJ0OtWrV6+j3p+W0AwAAAAAAKAb9uzZo48++kimaVpdCkIkJyfL4/GoT58+3b4PQjMAAAAAAIAu8nq9+uijj5ScnKyBAwdy6rZNmKap/fv3a+fOnaqpqdGQIUPkcHRvdzJCMwAAAAAAgC46cOCATNPUwIEDlZSUZHU5OEhSUpJ69+6t2tpa7d+/X4mJid26Hw4CAAAAAAAA6CZmmNlTd2eXBd1HGOoAAAAAAAAA4grLM4+C12eqsmaXGna3KC0lUfnZ/eV0kDADAADEOq/Pq6qGKu1s3qmByQOVl5Ynp8NpdVkAACCKCM26qXxLneaurFZdY0ugzeNK1OyiHBXmeiysDAAAAEdjTe0alVaWakfzjkBbenK6ZubPVEFWgYWVAQBw9EzT1E033aTf//73+uyzz+RyuTRt2jQtXLgwYo85Z84cvfDCC9q0aVPEHiMSCM26oXxLnaYvq1LogbL1jS2avqxKi6fkEZwBAADEoDW1a1RcUSwzZKTX0Nyg4opiLRizgOAMABDTysvL9etf/1oVFRUaNGiQHA4HBxl0gj3NusjrMzV3ZXW7wExSoG3uymp5fR31AAAAgF15fV6VVpa2C8wkBdrKKsvk9XmjXRoAII55fab+8uGn+tOmj/WXDz+NeJ7w4YcfyuPxaNSoUXK73UpLS1NKSkpEHzNWEZp1UWXNrqAlmaFMSXWNLaqs2RW9ogAAAHDUqhqqgpZkhjJlqr65XlUNVVGsCgAQz8q31On8std01RMbdOczm3TVExt0ftlrKt9SF5HHmzZtmm6//Xb95z//kWEYOumkkzRmzBjNmDFDkvSPf/xDycnJWr58eeBr/vjHPyoxMVGbN2+WJDU2Nup73/ue0tLSlJqaqosuukh///vfgx6ntLRU6enpSklJ0Q033KCWls5zFDsjNOuiht1H9kYfaT8AAADYw87mnWHtBwDAobRt/RQ6Madt66dIBGePPvqo7r//fp1wwgmqq6vTxo0bg24fOnSofvrTn+qWW25RbW2ttm/frhtvvFGlpaU644wzZJqmJkyYoPr6er300kt6++23lZeXp4svvli7dvknDz333HOaPXu2HnzwQb311lvyeDz6xS9+EfbnEg3sadZFaSmJYe0HAAAAexiYPDCs/QAA6Mzhtn4y5N/6aVyOW06HEbbHdblcSklJkdPplNvt7rDPLbfcopdeeknXXHON+vTpo6997Wu68847JUlr167V5s2b1dDQoISEBEnST3/6U73wwgv6/e9/r+9973tauHChrr/+ev3Xf/2XJOmBBx7QmjVrYnK2GTPNuig/u788rkR19i1ryH+KZn52/2iWBQAAgKOUl5an9OR0GZ2M9AwZcie7lZeWF+XKAADxxu5bPz311FN65513VFVVpV//+tcyDP//jW+//bb27NmjAQMGqF+/foFLTU2NPvzwQ0nSu+++q5EjRwbdX+j1WMFMsy5yOgzNLsrR9GVVMqSgVLhteDW7KCesSTAAAAAiz+lwamb+TBVXFMuQEXQgQFuQVpJfIqfDaVWJAIA4Yfetn/7+979r7969cjgcqq+vV0ZGhiTJ5/PJ4/GooqKi3dccc8wx0S0yCphp1g2FuR4tnpIntyt4CabblajFU/JUmOuxqDIAAAAcjYKsAi0Ys0BpyWlB7enJ6VowZoEKsgosqgwAEE/svPXTrl27NG3aNN1777267rrrdPXVV2vfvn2SpLy8PNXX16tXr14aPHhw0OW4446TJJ122mnasGFD0H2GXo8VzDTrpsJcj8bluFVZs0sNu1uUluJfkskMMwAAgNhWkFWgsZljVdVQpZ3NOzUweaDy0vKYYQYACJu2rZ/qG1s63NfMkH9ijhVbP918883KzMzUfffdp/379ysvL08//OEP9T//8z8qKCjQyJEjddlll6msrEynnnqqtm/frpdeekmXXXaZhg8frjvvvFPXXnuthg8frvPPP1+/+c1vtHXrVg0aNCjqz+VoEZodBafD0MiTB1hdBgAAAMLM6XBqhHuE1WUAAOKUXbd+Wrp0qV566SX97W9/U69evdSrVy/95je/0ahRozRhwgSNHz9eL730ku69915df/312rlzp9xuty688EKlp6dLkr7zne/oww8/VElJiVpaWnT55Zdr+vTpeuWVV6L6XMLBME2zo1AzbjQ1NcnlcqmxsVGpqalWlwMAAGIA44fYwPsEALBSS0uLampqlJ2drcTE7i2jLN9Sp7krq4MOBfC4EjW7KIetn47Sod6fIx1DMNMMAAAAAADAAmz9ZG+EZgAAAAAAABZh6yf74vRMAAAAAAAAIAShGQAAAAAAABCC0AwAAAAAAAAIQWgGAAAAAAAAhCA0AwAAAAAAAEIQmgEAAAAAAAAhCM0AAAAAAACAEIRmAAAAAAAACLtp06bpsssus7qMbiM0AwAAAAAAAEL0sroAAAAAAACAHsvnlWrXS3t2SP3SpaxRksMZtYffv3+/+vTpE7XHiyXMNAMAAAAAALBC9QppYa605BvSH27w/7kw198eIWPGjNFtt92m4uJiHXfccRo3bpwWLFigM844Q3379lVmZqZuueUW7dmzJ/A1v/71r3XMMcfolVde0WmnnaZ+/fqpsLBQdXV1gT5er1fFxcU65phjNGDAAN19990yTTPosVtbW3XHHXcoLS1NiYmJOv/887Vx48bA7RUVFTIMQ6+88orOPvtsJSUl6aKLLlJDQ4NefvllnXbaaUpNTdVVV12l5ubmiL1GbQjNAAAAAAAAoq16hfTcVKlpe3B7U52/PYLB2ZIlS9SrVy+9+eab+uUvfymHw6Gf/exn2rJli5YsWaLXXntNd999d9DXNDc366c//an+93//V6+//rr+85//6Ic//GHg9ocfflhPPfWUnnzySb3xxhvatWuXnn/++aD7uPvuu/WHP/xBS5YsUVVVlQYPHqyvf/3r2rVrV1C/OXPmaNGiRVq/fr22bdumK6+8UgsXLtTy5cv14osvavXq1fr5z38esdenDcszAQAAAAAAosnnlcpLJJkd3GhKMqTymdLQCRFZqjl48GA99NBDgetDhw4N/D07O1v//d//renTp+sXv/hFoP3AgQN67LHHdPLJJ0uSbrvtNt1///2B2xcuXKhZs2bp8ssvlyQ99thjeuWVVwK37927V4sXL9avf/1rXXrppZKkJ554QqtXr9aTTz6pu+66K9D3gQce0HnnnSdJuuGGGzRr1ix9+OGHGjRokCTp29/+ttauXauSkpKwvSYdYaYZAAAAAABANNWubz/DLIgpNX3s7xcBw4cPD7q+du1ajRs3Tscff7xSUlI0depUffrpp9q7d2+gT3JyciAwkySPx6OGhgZJUmNjo+rq6jRy5MjA7b169Qp6nA8//FAHDhwIhGGS1Lt3b+Xn5+vdd98NqmfYsGGBv6enpys5OTkQmLW1tT12JFkemn388ceaMmWKBgwYoOTkZJ111ll6++23A7ebpqk5c+YoIyNDSUlJGjNmjLZu3WphxQAAAAAAAEdhz47w9uuivn37Bv5eW1ur8ePHKzc3V3/4wx/09ttv63/+538k+WeXtendu3fQfRiG0W7PskNp62sYRrv20LaDH8swjA4f2+fzHfFjd5elodlnn32m8847T71799bLL7+s6upqPfzwwzrmmGMCfR566CEtWLBAixYt0saNG+V2uzVu3Djt3r3busIBAAAAAAC6q196ePsdhbfeektffPGFHn74YZ177rk65ZRTtH37oWbBtedyueTxeLRhw4ZA2xdffBE0KWrw4MHq06eP3njjjUDbgQMH9NZbb+m00047+icSAZbuaVZWVqbMzEw9/fTTgbaTTjop8HfTNLVw4ULde++9mjRpkiT/ZnXp6elavny5brrppmiXHMziY2EBAAAAAEAMyholpWb4N/3vcF8zw3971qiIl3LyySfriy++0M9//nMVFRXpzTff1GOPPdbl+7nzzjtVWlqqIUOG6LTTTtOCBQv0+eefB27v27evpk+frrvuukv9+/fXiSeeqIceekjNzc264YYbwviMwsfSmWYrVqzQ8OHDdcUVVygtLU1nn322nnjiicDtNTU1qq+v1yWXXBJoS0hI0OjRo7V+fcfreltbW9XU1BR0iQgLjoUFAAAAAABxwOGUCsu+vGKE3Pjl9cLSqEzMOeuss7RgwQKVlZUpNzdXv/nNbzR//vwu388PfvADTZ06VdOmTdPIkSOVkpKib33rW0F9SktLdfnll+uaa65RXl6e/vnPf+qVV17RscceG66nE1aG2ZUFqGGWmJgoSSouLtYVV1yhyspKzZgxQ7/85S81depUrV+/Xuedd54+/vhjZWRkBL7ue9/7nmpra4NOYWgzZ84czZ07t117Y2OjUlNTw1N427Gw7dLgL7+xr1wq5UwMz2MBAICoa2pqksvlCu/4AWHH+wQAsFJLS4tqamqUnZ0dyDe6rHqF/xTNgw8FSD3eH5iRKxyVQ70/RzqGsHR5ps/n0/DhwzVv3jxJ0tlnn62tW7dq8eLFmjp1aqDfkWwS12bWrFkqLi4OXG9qalJmZmYYi7b2WFgAAAAAABAncib68wO2frIlS0Mzj8ejnJycoLbTTjtNf/jDHyRJbrdbklRfXy+PxxPo09DQoPT0jjfDS0hIUEJCQoQqVteOhc2+IHJ1AAAAAACA2Odwkh/YlKV7mp133nl67733gtref/99ZWVlSZKys7Pldru1evXqwO379+/XunXrNGpU5DfD65DFx8ICAAAAAAAg8iydafb9739fo0aN0rx583TllVeqsrJSjz/+uB5//HFJ/mWZM2bM0Lx58zRkyBANGTJE8+bNU3JysiZPnmxN0TY6FhYAAAAAAACRYWloNmLECD3//POaNWuW7r//fmVnZ2vhwoW6+uqrA33uvvtu7du3T7fccos+++wznXPOOVq1apVSUlKsKdpGx8ICAAAAAAAgMiw9PTMaInKqUuD0TCk4OOP0TAAA4gGnMsYG3icAgJXCcnomIiYcp2dauqdZzMqZ6A/GUj3B7akZBGYAAAAAAABxwNLlmTGNY2EBAAAAAADiFqHZ0eBYWAAAAAAAgLjE8kwAAAAAAIAeYsyYMZoxY0ant5900klauHBh2B4v3PcnHf45hAszzQAAAAAAACzi9XlV1VClnc07NTB5oPLS8uRk6ydbIDQDAAAAAACwwJraNSqtLNWO5h2BtvTkdM3Mn6mCrAILK4PE8kwAAAAAAICoW1O7RsUVxUGBmSQ1NDeouKJYa2rXROyxv/jiC91222065phjNGDAAN13330yTbPDvv/5z3/0zW9+U/369VNqaqquvPJK7dgRXPOKFSs0fPhwJSYm6rjjjtOkSZM6feynn35aLpdLq1evliRVV1dr/Pjx6tevn9LT03XNNdfok08+CfTfu3evpk6dqn79+snj8ejhhx8OwytwZAjNAAAAAAAAosjr86q0slSm2gdVbW1llWXy+rwRefwlS5aoV69e+utf/6qf/exneuSRR/SrX/2qfS2mqcsuu0y7du3SunXrtHr1an344Yf6zne+E+jz4osvatKkSZowYYL+9re/6dVXX9Xw4cM7fNyf/vSn+uEPf6hXXnlF48aNU11dnUaPHq2zzjpLb731lsrLy7Vjxw5deeWVga+56667tHbtWj3//PNatWqVKioq9Pbbb4f/RekAyzMBAAAAAACiqKqhqt0Ms4OZMlXfXK+qhiqNcI8I++NnZmbqkUcekWEYOvXUU7V582Y98sgjuvHGG4P6rVmzRu+8845qamqUmZkpSfrf//1fnX766dq4caNGjBihBx98UN/97nc1d+7cwNedeeaZ7R5z1qxZWrJkiSoqKnTGGWdIkhYvXqy8vDzNmzcv0O+pp55SZmam3n//fWVkZOjJJ5/U0qVLNW7cOEn+wO+EE04I+2vSEUIzAAAAAACAKNrZvDOs/brq3HPPlWEYgesjR47Uww8/LK83eGbbu+++q8zMzEBgJkk5OTk65phj9O6772rEiBHatGlTu7At1MMPP6y9e/fqrbfe0qBBgwLtb7/9ttauXat+/fq1+5oPP/xQ+/bt0/79+zVy5MhAe//+/XXqqad2+Tl3B8szAQAAAAAAomhg8sCw9osU0zSDwrWO2pOSkg57PxdccIG8Xq+ee+65oHafz6eioiJt2rQp6PLBBx/owgsv7HSftWghNAMAAAAAAIiivLQ8pSeny1D7QEqSDBlyJ7uVl5YXkcffsGFDu+tDhgyR0+kMas/JydF//vMfbdu2LdBWXV2txsZGnXbaaZKkYcOG6dVXXz3k4+Xn56u8vFzz5s3TT37yk0B7Xl6etm7dqpNOOkmDBw8OuvTt21eDBw9W7969g+r97LPP9P7773f7uXcFoRkAAAAAAEAUOR1OzcyfKUntgrO26yX5JXI6nO2+Nhy2bdum4uJivffee/rtb3+rn//857rzzjvb9SsoKNCwYcN09dVXq6qqSpWVlZo6dapGjx4d2Ox/9uzZ+u1vf6vZs2fr3Xff1ebNm/XQQw+1u6+RI0fq5Zdf1v33369HHnlEknTrrbdq165duuqqq1RZWal//etfWrVqla6//np5vV7169dPN9xwg+666y69+uqr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Bx/UVVddZXVptlBfXy9JSk9PD2pPT09XbW2tFSXZSktLi2bOnKnJkycrNTXV6nIsU1ZWpl69eumOO+6wuhQAXcSY0f4Yz8YGxtmxgbF/bLLL7ySEZnHktttu0zvvvKM33njD6lIss23bNt15551atWqVEhMTrS7HFnw+n4YPH6558+ZJks4++2xt3bpVixcv7rH/mT/77LNatmyZli9frtNPP12bNm3SjBkzlJGRoWuvvdbq8mzDMIyg66ZptmvraQ4cOKDvfve78vl8+sUvfmF1OZZ5++239eijj6qqqqrHf08AsYgxo70xno0djLNjA2P/2Gb17yQsz4wTt99+u1asWKG1a9fqhBNOsLocy7z99ttqaGjQ1772NfXq1Uu9evXSunXr9LOf/Uy9evWS1+u1usSo83g8ysnJCWo77bTT9J///Meiiqx31113aebMmfrud7+rM844Q9dcc42+//3va/78+VaXZgtut1vSV5/utGloaGj3SU9PcuDAAV155ZWqqanR6tWre/Qssz//+c9qaGjQiSeeGPhZW1tbqx/84Ac66aSTrC4PwCEwZrQ/xrOxg3F2bGDsH5vs8jsJM81inGmauv322/X888+roqJC2dnZVpdkqYsvvlibN28Oarvuuus0dOhQlZSUyOl0WlSZdc4777x2R8q///77ysrKsqgi6zU3N8vhCP7MwOl0cuz0l7Kzs+V2u7V69WqdffbZkqT9+/dr3bp1Kisrs7g6a7QFZh988IHWrl2rAQMGWF2Spa655pp2e+x8/etf1zXXXKPrrrvOoqoAHApjxtjBeDZ2MM6ODYz9Y5NdfichNItxt956q5YvX64//elPSklJCaSwLpdLSUlJFlcXfSkpKe325ujbt68GDBjQY/fs+P73v69Ro0Zp3rx5uvLKK1VZWanHH39cjz/+uNWlWaaoqEgPPvigTjzxRJ1++un629/+pgULFuj666+3urSo2bNnj/75z38GrtfU1GjTpk3q37+/TjzxRM2YMUPz5s3TkCFDNGTIEM2bN0/JycmaPHmyhVVHzqFej4yMDH37299WVVWV/u///k9erzfws7Z///7q06ePVWVH1OG+R0KDw969e8vtduvUU0+NdqkAjgBjxtjBeDZ2MM6ODYz97SsmfieJ2jmdiAhJHV6efvppq0uzDY7oNs2VK1eaubm5ZkJCgjl06FDz8ccft7okSzU1NZl33nmneeKJJ5qJiYnmoEGDzHvvvddsbW21urSoWbt2bYc/O6699lrTNP1HPM+ePdt0u91mQkKCeeGFF5qbN2+2tugIOtTrUVNT0+nP2rVr11pdesQc7nskVFZWlvnII49EtUYAR44xY2xjPGtfjLPtj7G/fcXC7ySGaZpmJEM5AAAAAAAAINZwEAAAAAAAAAAQgtAMAAAAAAAACEFoBgAAAAAAAIQgNAMAAAAAAABCEJoBAAAAAAAAIQjNAAAAAAAAgBCEZgAAAAAAAEAIQjMAAAAAAAAgBKEZgLj173//W4ZhaNOmTba8PwAAAHQP4zwA0UBoBiBmTZs2TYZhBC4DBgxQYWGh3nnnHatLAwAAwFFgnAfADgjNAMS0wsJC1dXVqa6uTq+++qp69eqlb3zjG1aXBQAAgKPEOA+A1QjNAMS0hIQEud1uud1unXXWWSopKdG2bdu0c+fODvuvW7dO+fn5SkhIkMfj0cyZM/XFF18Ebvf5fCorK9PgwYOVkJCgE088UQ8++GCH9+Xz+XTjjTfqlFNOUW1tbUSeHwAAQE/FOA+A1XpZXQAAhMuePXv0m9/8RoMHD9aAAQO0d+/eoNs//vhjjR8/XtOmTdPSpUv1j3/8QzfeeKMSExM1Z84cSdKsWbP0xBNP6JFHHtH555+vuro6/eMf/2j3WPv379fkyZP14Ycf6o033lBaWlo0niIAAECPxDgPgBUIzQDEtP/7v/9Tv379JEl79+6Vx+PR//3f/8nhaD+R9he/+IUyMzO1aNEiGYahoUOHavv27SopKdGPf/xj7d27V48++qgWLVqka6+9VpJ08skn6/zzzw+6nz179mjChAnat2+fKioq5HK5Iv9EAQAAehjGeQCsxvJMADFt7Nix2rRpkzZt2qS//vWvuuSSS3TppZd2OI3+3Xff1ciRI2UYRqDtvPPO0549e/TRRx/p3XffVWtrqy6++OJDPuZVV12lPXv2aNWqVQykAAAAIoRxHgCrEZoBiGl9+/bV4MGDNXjwYOXn5+vJJ5/U3r179cQTT7Tra5pm0ECqrU2SDMNQUlLSET3m+PHj9c4772jDhg1H/wQAAADQIcZ5AKxGaAYgrhiGIYfDoX379rW7LScnR+vXrw8MoCRp/fr1SklJ0fHHH68hQ4YoKSlJr7766iEfY/r06SotLdXEiRO1bt26sD8HAAAAtMc4D0C0sacZgJjW2tqq+vp6SdJnn32mRYsWac+ePSoqKmrX95ZbbtHChQt1++2367bbbtN7772n2bNnq7i4WA6HQ4mJiSopKdHdd9+tPn366LzzztPOnTu1detW3XDDDUH3dfvtt8vr9eob3/iGXn755Xb7YQAAAODoMM4DYDVCMwAxrby8XB6PR5KUkpKioUOH6ne/+53GjBmjf//730F9jz/+eL300ku66667dOaZZ6p///664YYbdN999wX6/OhHP1KvXr304x//WNu3b5fH49HNN9/c4WPPmDFDPp9P48ePV3l5uUaNGhWx5wkAANDTMM4DYDXDPHj+KgAAAAAAAAD2NAMAAAAAAABCEZoBAAAAAAAAIQjNAAAAAAAAgBCEZgAAAAAAAEAIQjMAAAAAAAAgBKEZAAAAAAAAEILQDAAAAAAAAAhBaAYAAAAAAACEIDQDAAAAAAAAQhCaAQAAAAAAACEIzQAAAAAAAIAQ/w+PwACFHG4HEwAAAABJRU5ErkJggg==",
"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",
"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>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>vp15</th>\n",
" <td>0.973333</td>\n",
" <td>0.980000</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>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>vp16</th>\n",
" <td>0.957778</td>\n",
" <td>0.926667</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>vp18</th>\n",
" <td>0.962222</td>\n",
" <td>0.970000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vp14</th>\n",
" <td>0.982222</td>\n",
" <td>0.986667</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" train test\n",
"vp12 0.822222 0.820000\n",
"vp19 0.966667 0.800000\n",
"vp15 0.973333 0.980000\n",
"vp17 0.911111 0.960000\n",
"vp20 0.906667 0.980000\n",
"vp10 0.924444 0.943333\n",
"vp16 0.957778 0.926667\n",
"vp13 0.857778 0.946667\n",
"vp18 0.962222 0.970000\n",
"vp14 0.982222 0.986667"
]
},
"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>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>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>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>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>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",
" <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>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>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",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 1 2 3 4 5 6 overall\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",
"vp15 0.992 0.992 0.960 0.392 0.592 1.000 0.928\n",
"vp17 0.392 0.968 0.584 1.000 1.000 0.992 0.648\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",
"vp16 0.976 0.600 0.376 0.976 0.992 1.000 0.752\n",
"vp13 0.384 0.960 0.928 0.560 0.992 0.968 0.568\n",
"vp18 0.976 0.976 0.960 0.392 0.600 0.984 0.904\n",
"vp14 0.992 0.976 0.992 0.976 0.400 0.600 0.968"
]
},
"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.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
|