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
|
{
"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": 9,
"id": "eb3f2e96-2246-4b08-a7d1-999161ab3fd3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABMIAAAHUCAYAAADYwISBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACFF0lEQVR4nOzde1zUZfr/8fcwIojCJAgzkEh2NMJMStrMChMVT+TWrh3WzHJrt4PlogXuSd1DQm1qm7+s3a+lZa7bblm6tZSUh1xrUciSaDsYmSU4brogImgzn98fE5PDQQWZE/N6Ph7z0M/nc8/MNYzgzTXXfd0mwzAMAQAAAAAAAF1cmL8DAAAAAAAAAHyBRBgAAAAAAABCAokwAAAAAAAAhAQSYQAAAAAAAAgJJMIAAAAAAAAQEkiEAQAAAAAAICSQCAMAAAAAAEBIIBEGAAAAAACAkEAiDAAAAAAAACGBRBgAvzOZTCd127Bhwyk9z9y5c2UymTonaAAAALSbr+Z9klRfX6+5c+d2ymMB6Dq6+TsAAHj77bc9jn/7299q/fr1evPNNz3Op6amntLz/PjHP1Z2dvYpPQYAAAA6zlfzPsmVCJs3b54kKTMz85QfD0DXQCIMgN9973vf8ziOj49XWFhYi/PN1dfXKyoq6qSfp2/fvurbt2+HYgQAAMCp6+i8DwA6C0sjAQSFzMxMpaWladOmTRo6dKiioqJ02223SZL++te/atSoUUpMTFSPHj10/vnnKz8/X4cOHfJ4jNaWRp5xxhkaP368ioqKlJ6erh49emjAgAF66qmnfPbaAAAA8J0jR47od7/7nQYMGKCIiAjFx8fr1ltv1b59+zzGvfnmm8rMzFRcXJx69Oihfv366brrrlN9fb0+//xzxcfHS5LmzZvnXnI5depUP7wiAIGEijAAQaOqqkqTJ0/WAw88oAcffFBhYa5c/ieffKKxY8dqxowZ6tmzp/7zn/+osLBQJSUlLcrsW/Pee+9p5syZys/Pl9Vq1f/93/9p2rRpOvvss3XllVd6+2UBAADgW06nU9dcc43eeustPfDAAxo6dKh27dqlOXPmKDMzU9u2bVOPHj30+eefa9y4cbriiiv01FNP6bTTTtNXX32loqIiHTlyRImJiSoqKlJ2dramTZumH//4x5LkTo4BCF0kwgAEjf379+tvf/ubrr76ao/zv/zlL91/NwxDl19+uc4//3xdddVVev/993XhhRce93H/+9//6l//+pf69esnSbryyiv1xhtvaOXKlSTCAAAAfOj5559XUVGRXnjhBV177bXu84MGDdKQIUO0bNky3XnnnSotLVVDQ4MefvhhDRo0yD3upptucv/94osvluRqj8HSSwBNWBoJIGj07t27RRJMkj777DPddNNNstlsMpvNCg8P11VXXSVJ+vDDD0/4uBdddJE7CSZJkZGROvfcc7Vr167OCx4AAAAn9I9//EOnnXaaJkyYoG+++cZ9u+iii2Sz2dw7QF500UXq3r277rjjDi1fvlyfffaZfwMHEDRIhAEIGomJiS3O1dXV6YorrtC///1v/e53v9OGDRu0detWvfjii5Kkw4cPn/Bx4+LiWpyLiIg4qfsCAACg8+zdu1f/+9//1L17d4WHh3vcqqur9d///leSdNZZZ6m4uFgJCQm6++67ddZZZ+mss87So48+6udXACDQsTQSQNBo3uhecjVJ3bNnjzZs2OCuApOk//3vfz6MDAAAAJ2hT58+iouLU1FRUavXo6Oj3X+/4oordMUVV8jhcGjbtm167LHHNGPGDFmtVt1www2+ChlAkCERBiCoNSXHIiIiPM4/+eST/ggHAAAAp2D8+PFatWqVHA6HLr300pO6j9ls1qWXXqoBAwboueeeU1lZmW644Qb3/JAqfwDHIhEGIKgNHTpUvXv31k9/+lPNmTNH4eHheu655/Tee+/5OzQAAAC00w033KDnnntOY8eO1X333aeMjAyFh4fryy+/1Pr163XNNdfo+9//vp544gm9+eabGjdunPr166eGhgY99dRTkqSsrCxJruqxlJQUvfzyyxoxYoRiY2PVp08fnXHGGX58hQD8jR5hAIJaXFycXnnlFUVFRWny5Mm67bbb1KtXL/31r3/1d2gAAABoJ7PZrDVr1ujnP/+5XnzxRX3/+9/XxIkTVVBQoMjISA0cOFCSq1n+N998ozlz5mjMmDG6+eabtW/fPq1Zs0ajRo1yP97SpUsVFRWlnJwcDRkyRHPnzvXTKwMQKEyGYRj+DgIAAAAAAADwNirCAAAAAAAAEBJIhAEAAAAAACAkkAgDAAAAAABASCARBgAAAAAAgJBAIgwAAAAAAAAhgUQYAAAAAAAAQkI3fwfQEU6nU3v27FF0dLRMJpO/wwEAAEHC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TFVVlcrLyzV06NB2hg8AAAAAABAAUoZKMUmSWl/tJpmkmNNd43zgrLPO0jfffKPHHntMn332mZ599lk98cQT7X6c++67TwUFBVq9erX+85//6K677tL//vc/9/WePXvqzjvv1P3336+ioiJVVFTo9ttvV319vaZNm9aJr6hztCsRdvfdd2vFihVauXKloqOjVV1drerqah0+fFiSVFdXp1mzZuntt9/W559/rg0bNmjChAnq06ePvv/970tyZROnTZummTNn6o033tC7776ryZMna+DAgcrKyur8VwgAAABIcjgd2lq9Va9+9qq2Vm+Vw4vNigEAISjMLGUXfnvQPBn27XF2gWucD1x00UVasGCBCgsLlZaWpueee07z589v9+PMnDlTU6ZM0dSpU3XZZZcpOjraneNpUlBQoOuuu04333yz0tPT9emnn+q1115r0R8+EJiMdiz8bKuH19NPP62pU6fq8OHDmjhxot59913973//U2JiooYPH67f/va3Hg3uGxoadP/992vlypU6fPiwRowYoccff/ykm+DX1tbKYrGopqaGZZIAAOCkMYcIfN56j4p3FaugpEB767/ry2KNsio/I19ZKXwYCwBwaWhoUGVlpfr376/IyMiOPUjFGtfukcc2zo853ZUES83pnEBD1PHen5OdQ7QrERYomMQCAICOYA4R+LzxHhXvKlbuhlwZzbazN3376fyCzAUkwwAAkjopESZJTodrd8i6va6eYClDfVYJ1pV1RiKsm7eDBAAAAPzF4XSooKSgRRJMkgwZMsmkwpJCDU8eLjO/oAAAOkuYWep/hb+jQCs6tGskAAAAEAzK7GUeyyGbM2Sour5aZfYyH0YFAAD8hUQYAAAAuqx99fs6dRwAAAhuJMIAAADQZcVHxXfqOAAAENxIhAEAAKDLSk9IlzXK6m6M35xJJtmibEpPSPdxZAAAwB9IhAEAAKDLMoeZlZ+RL0ktkmFNx3kZeTTKBwAgRJAIAwAAQJeWlZKlBZkLlBCV4HHeGmXVgswFykrJ8lNkAADA17r5OwAAAADA27JSsjQ8ebjK7GXaV79P8VHxSk9IpxIMAIAQQ0UYAAAAQoI5zKwhtiEae+ZYDbENIQkGAOhSMjMzNWPGjDavn3HGGVq0aFGnPV9nP5504tfQGagIAwAAAAAA6EQOp4Mq5ABFIgwAAAAAAKCT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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[1].set_title(\"Test\")\n",
"plt.xlabel(\"Block\")\n",
"plt.ylabel(\"RTsum\")\n",
"plt.legend()\n",
"plt.savefig(\"RT.png\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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": 13,
"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
}
|