File size: 191,031 Bytes
d572f56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.262505417Z",
     "start_time": "2024-04-07T18:09:55.238138747Z"
    }
   },
   "outputs": [],
   "source": [
    "from functools import partial\n",
    "from itertools import chain\n",
    "\n",
    "import librosa.effects\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import soundfile as sf\n",
    "\n",
    "import os\n",
    "\n",
    "from ipywidgets import Audio\n",
    "from matplotlib import pyplot as plt\n",
    "from tqdm.contrib.concurrent import process_map\n",
    "from tqdm.notebook import tqdm\n",
    "\n",
    "import librosa"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "outputs": [],
   "source": [
    "INFERENCE_ROOT = \"/home/kwatchar3/Documents/data/moisesdb/\"\n",
    "STEM_SETUP = \"everything\"\n",
    "GROUND_TRUTH_ROOT = \"/home/kwatchar3/Documents/data/moisesdb\""
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.276227686Z",
     "start_time": "2024-04-07T18:09:55.241103057Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "outputs": [],
   "source": [
    "variants = [\n",
    "    \"ev-d-pre\",\n",
    "    \"ev-d-prefz\",\n",
    "    \"ev-d-pre-aug\",\n",
    "    # \"ev-d-pre-bal\",\n",
    "    \"ev-d-prefz-bal\",\n",
    "    # \"ev-d-pre-aug-bal\",\n",
    "]\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.290492644Z",
     "start_time": "2024-04-07T18:09:55.287801631Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "outputs": [],
   "source": [
    "gt_files = os.listdir(os.path.join(GROUND_TRUTH_ROOT, \"npy2\"))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.290636194Z",
     "start_time": "2024-04-07T18:09:55.287910216Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "outputs": [],
   "source": [
    "def snr(gt, est):\n",
    "    return 10 * np.log10(np.sum(np.square(gt)) / np.sum(np.square(gt - est)))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.290665865Z",
     "start_time": "2024-04-07T18:09:55.287944410Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "outputs": [],
   "source": [
    "variants = [\n",
    "    \"ev-d-pre\",\n",
    "    \"ev-d-prefz\",\n",
    "    \"ev-d-pre-gaug\",\n",
    "    # \"ev-d-pre-aug\",\n",
    "    \"ev-d-pre-bal\",\n",
    "    \"ev-d-prefz-bal\",\n",
    "    # \"ev-d-pre-bal\",\n",
    "    # \"ev-d-pre-aug-bal\",\n",
    "]\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.290684765Z",
     "start_time": "2024-04-07T18:09:55.287972470Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "outputs": [],
   "source": [
    "allowed_stems = [\n",
    "      \"lead_female_singer\",\n",
    "      \"lead_male_singer\",\n",
    "      \"background_vocals\",\n",
    "      \"drums\",\n",
    "      \"bass_guitar\",\n",
    "      \"bass_synthesizer\",\n",
    "      \"acoustic_guitar\",\n",
    "      \"clean_electric_guitar\",\n",
    "      \"distorted_electric_guitar\",\n",
    "      \"grand_piano\",\n",
    "      \"electric_piano\",\n",
    "      \"pitched_percussion\",\n",
    "      \"organ_electric_organ\",\n",
    "      \"string_section\",\n",
    "      \"other_strings\",\n",
    "      \"brass\",\n",
    "      \"reeds\",\n",
    "      \"other_wind\",\n",
    "      \"synth_pad\",\n",
    "      \"synth_lead\",\n",
    "      \"other_plucked\",\n",
    "      \"fx\",\n",
    "  ]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T19:04:40.813323534Z",
     "start_time": "2024-04-07T19:04:40.798630523Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "outputs": [],
   "source": [
    "def get_results_for_song(inputs):\n",
    "\n",
    "    song_name, inference_mode, variant = inputs\n",
    "\n",
    "    stems = os.listdir(os.path.join(INFERENCE_ROOT, inference_mode, STEM_SETUP, variant, \"audio\", song_name))\n",
    "    stems = [s.replace(\".wav\", \"\") for s in stems]\n",
    "\n",
    "    results = []\n",
    "\n",
    "    for stem in stems:\n",
    "        if stem not in allowed_stems:\n",
    "            continue\n",
    "\n",
    "        audio_est, sr = sf.read(os.path.join(INFERENCE_ROOT, inference_mode, STEM_SETUP, variant, \"audio\", song_name, f\"{stem}.wav\"))\n",
    "        audio_est = audio_est.T\n",
    "\n",
    "        npy_path = os.path.join(GROUND_TRUTH_ROOT, \"npy2\", song_name, f\"{stem}.npy\")\n",
    "        if os.path.exists(npy_path):\n",
    "            audio = np.load(npy_path, mmap_mode=\"r\")\n",
    "        else:\n",
    "            print(\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\")\n",
    "            print(f\"Ground truth not found for {song_name}/{stem}. Using zeros.\")\n",
    "            print(\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\")\n",
    "            audio = np.zeros_like(audio_est)\n",
    "\n",
    "        snr_full = snr(audio, audio_est)\n",
    "\n",
    "        target_dbrms = 10 * np.log10(\n",
    "            np.mean(np.square(audio))\n",
    "        )\n",
    "\n",
    "        est_dbrms = 10 * np.log10(\n",
    "            np.mean(np.square(audio_est))\n",
    "        )\n",
    "\n",
    "        results.append({\n",
    "            \"song\": song_name,\n",
    "            \"stem\": stem,\n",
    "            \"snr\": snr_full,\n",
    "            \"target_dbrms\": target_dbrms,\n",
    "            \"est_dbrms\": est_dbrms,\n",
    "            \"dbdiff\": est_dbrms - target_dbrms,\n",
    "            \"variant\": variant,\n",
    "            \"inference_mode\": inference_mode,\n",
    "        })\n",
    "\n",
    "    return results\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:09:55.290720245Z",
     "start_time": "2024-04-07T18:09:55.288030424Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-pre...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "d143625739af4d6db55836b6c8e3d64f"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-prefz...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "53e6948e5bf240cfb5f22aa9e6689ebe"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-pre-gaug...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "81c1012706144b3f861432a3e54824fe"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-pre-bal...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "df9ea8f761f149e7868fec19dc10ee7c"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-prefz-bal...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "9b4d68b0745a4e40b8b0a7b979da23e0"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-pre...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "a04c50669c054792ab3dbf66a9b453bd"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-prefz...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "72ad48db3d8a40779387fc1ff988da0e"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-pre-gaug...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "8c24499ca0814e2784406abdc88050e7"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-pre-bal...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "d420af779c11447e92ff6bb28ba7c7ff"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing ev-d-prefz-bal...\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/48 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "c20a05b1eda04fb98a83c27fcdfc68c5"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "df = []\n",
    "\n",
    "for inference_mode in [\"inference-d\", \"inference-o\"]:\n",
    "\n",
    "    for v in variants:\n",
    "        print(f\"Processing {v}...\")\n",
    "\n",
    "        test_files = os.listdir(os.path.join(INFERENCE_ROOT, inference_mode, STEM_SETUP, v, \"audio\"))\n",
    "\n",
    "        # for song in tqdm(test_files):\n",
    "        #     results = get_results_for_song(song, inference_mode, v)\n",
    "        #     df.extend(results)\n",
    "\n",
    "        inputs = [(song, inference_mode, v) for song in test_files]\n",
    "\n",
    "        results = process_map(get_results_for_song, inputs, max_workers=16)\n",
    "        results = list(chain(*results))\n",
    "\n",
    "        df.extend(results)\n",
    "\n",
    "\n",
    "df = pd.DataFrame(df)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:16:13.114238337Z",
     "start_time": "2024-04-07T18:09:55.288105730Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "outputs": [
    {
     "data": {
      "text/plain": "                                      song                       stem  \\\n0     704f1de9-1d02-4c2b-af05-107a7700a51d                bass_guitar   \n1     704f1de9-1d02-4c2b-af05-107a7700a51d                      drums   \n2     704f1de9-1d02-4c2b-af05-107a7700a51d            acoustic_guitar   \n3     704f1de9-1d02-4c2b-af05-107a7700a51d           lead_male_singer   \n4     704f1de9-1d02-4c2b-af05-107a7700a51d          background_vocals   \n...                                    ...                        ...   \n3005  1f98fe4d-26c7-460f-9f68-33964bc4d8d3  distorted_electric_guitar   \n3006  1f98fe4d-26c7-460f-9f68-33964bc4d8d3                bass_guitar   \n3007  1f98fe4d-26c7-460f-9f68-33964bc4d8d3                      drums   \n3008  1f98fe4d-26c7-460f-9f68-33964bc4d8d3           lead_male_singer   \n3009  1f98fe4d-26c7-460f-9f68-33964bc4d8d3          background_vocals   \n\n            snr  target_dbrms  est_dbrms    dbdiff         variant  \\\n0      8.722601    -26.048121 -26.535334 -0.487212        ev-d-pre   \n1     11.773505    -26.920614 -27.213932 -0.293317        ev-d-pre   \n2      1.481413    -34.269612 -38.385900 -4.116288        ev-d-pre   \n3      7.242387    -33.209226 -33.590568 -0.381341        ev-d-pre   \n4      2.027336    -39.184458 -42.853760 -3.669302        ev-d-pre   \n...         ...           ...        ...       ...             ...   \n3005   3.586968    -34.654398 -37.656161 -3.001763  ev-d-prefz-bal   \n3006   8.265368    -35.536811 -35.707326 -0.170515  ev-d-prefz-bal   \n3007  10.185577    -32.542546 -33.214525 -0.671979  ev-d-prefz-bal   \n3008   0.828639    -40.648432 -39.721159  0.927273  ev-d-prefz-bal   \n3009   1.465834    -35.692558 -44.616198 -8.923640  ev-d-prefz-bal   \n\n     inference_mode  \n0       inference-d  \n1       inference-d  \n2       inference-d  \n3       inference-d  \n4       inference-d  \n...             ...  \n3005    inference-o  \n3006    inference-o  \n3007    inference-o  \n3008    inference-o  \n3009    inference-o  \n\n[3010 rows x 8 columns]",
      "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>song</th>\n      <th>stem</th>\n      <th>snr</th>\n      <th>target_dbrms</th>\n      <th>est_dbrms</th>\n      <th>dbdiff</th>\n      <th>variant</th>\n      <th>inference_mode</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>704f1de9-1d02-4c2b-af05-107a7700a51d</td>\n      <td>bass_guitar</td>\n      <td>8.722601</td>\n      <td>-26.048121</td>\n      <td>-26.535334</td>\n      <td>-0.487212</td>\n      <td>ev-d-pre</td>\n      <td>inference-d</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>704f1de9-1d02-4c2b-af05-107a7700a51d</td>\n      <td>drums</td>\n      <td>11.773505</td>\n      <td>-26.920614</td>\n      <td>-27.213932</td>\n      <td>-0.293317</td>\n      <td>ev-d-pre</td>\n      <td>inference-d</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>704f1de9-1d02-4c2b-af05-107a7700a51d</td>\n      <td>acoustic_guitar</td>\n      <td>1.481413</td>\n      <td>-34.269612</td>\n      <td>-38.385900</td>\n      <td>-4.116288</td>\n      <td>ev-d-pre</td>\n      <td>inference-d</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>704f1de9-1d02-4c2b-af05-107a7700a51d</td>\n      <td>lead_male_singer</td>\n      <td>7.242387</td>\n      <td>-33.209226</td>\n      <td>-33.590568</td>\n      <td>-0.381341</td>\n      <td>ev-d-pre</td>\n      <td>inference-d</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>704f1de9-1d02-4c2b-af05-107a7700a51d</td>\n      <td>background_vocals</td>\n      <td>2.027336</td>\n      <td>-39.184458</td>\n      <td>-42.853760</td>\n      <td>-3.669302</td>\n      <td>ev-d-pre</td>\n      <td>inference-d</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>3005</th>\n      <td>1f98fe4d-26c7-460f-9f68-33964bc4d8d3</td>\n      <td>distorted_electric_guitar</td>\n      <td>3.586968</td>\n      <td>-34.654398</td>\n      <td>-37.656161</td>\n      <td>-3.001763</td>\n      <td>ev-d-prefz-bal</td>\n      <td>inference-o</td>\n    </tr>\n    <tr>\n      <th>3006</th>\n      <td>1f98fe4d-26c7-460f-9f68-33964bc4d8d3</td>\n      <td>bass_guitar</td>\n      <td>8.265368</td>\n      <td>-35.536811</td>\n      <td>-35.707326</td>\n      <td>-0.170515</td>\n      <td>ev-d-prefz-bal</td>\n      <td>inference-o</td>\n    </tr>\n    <tr>\n      <th>3007</th>\n      <td>1f98fe4d-26c7-460f-9f68-33964bc4d8d3</td>\n      <td>drums</td>\n      <td>10.185577</td>\n      <td>-32.542546</td>\n      <td>-33.214525</td>\n      <td>-0.671979</td>\n      <td>ev-d-prefz-bal</td>\n      <td>inference-o</td>\n    </tr>\n    <tr>\n      <th>3008</th>\n      <td>1f98fe4d-26c7-460f-9f68-33964bc4d8d3</td>\n      <td>lead_male_singer</td>\n      <td>0.828639</td>\n      <td>-40.648432</td>\n      <td>-39.721159</td>\n      <td>0.927273</td>\n      <td>ev-d-prefz-bal</td>\n      <td>inference-o</td>\n    </tr>\n    <tr>\n      <th>3009</th>\n      <td>1f98fe4d-26c7-460f-9f68-33964bc4d8d3</td>\n      <td>background_vocals</td>\n      <td>1.465834</td>\n      <td>-35.692558</td>\n      <td>-44.616198</td>\n      <td>-8.923640</td>\n      <td>ev-d-prefz-bal</td>\n      <td>inference-o</td>\n    </tr>\n  </tbody>\n</table>\n<p>3010 rows × 8 columns</p>\n</div>"
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:16:13.168128523Z",
     "start_time": "2024-04-07T18:16:13.124195570Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "outputs": [],
   "source": [
    "df[\"snr\"] = df[\"snr\"].replace(-np.inf, np.nan)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:16:13.168224753Z",
     "start_time": "2024-04-07T18:16:13.167849825Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "outputs": [],
   "source": [
    "df.to_csv(os.path.join(INFERENCE_ROOT, \"bandit_ev.csv\"), index=False)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:53:52.871807984Z",
     "start_time": "2024-04-07T18:53:52.827394747Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "outputs": [],
   "source": [
    "short_stems = {\n",
    "    \"lead_female_singer\": \"Female Vox\",\n",
    "     'lead_male_singer': \"Male Vox\",\n",
    "     'drums': \"Drums\",\n",
    "     'bass_guitar': \"Bass Gtr.\",\n",
    "     'acoustic_guitar': \"Acoustic Gtr.\",\n",
    "     'clean_electric_guitar': \"Clean E. Gtr.\",\n",
    "     'distorted_electric_guitar': \"Distorted E. Gtr.\",\n",
    "     'grand_piano': \"Grand Piano\",\n",
    "     'electric_piano': \"E. Piano\",\n",
    "     'pitched_percussion': \"Pitched Perc.\",\n",
    "     'organ_electric_organ': \"Organ & E. Organ\",\n",
    "     'string_section': \"String Section\",\n",
    "     'other_strings': \"O. Str.\",\n",
    "     'brass': \"Brass\",\n",
    "     'reeds': \"Reeds\",\n",
    "     'other_wind': \"O. Wind\",\n",
    "     'synth_pad': \"Synth Pad\",\n",
    "     'synth_lead': \"Synth Lead\",\n",
    "     'other_plucked': \"O Pluck\",\n",
    "     'background_vocals': \"Background Vox\",\n",
    "     'bass_synthesizer': \"Bass Synth\",\n",
    "     'fx': \"Fx.\",\n",
    "}"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T19:23:36.764320378Z",
     "start_time": "2024-04-07T19:23:36.761680932Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 307,
   "outputs": [],
   "source": [
    "df = pd.read_csv(os.path.join(INFERENCE_ROOT, \"bandit_ev.csv\"))\n",
    "\n",
    "stem_dtype = pd.CategoricalDtype(categories=allowed_stems, ordered=True)\n",
    "df[\"stem\"] = df[\"stem\"].astype(stem_dtype)\n",
    "\n",
    "bool_dtype = pd.CategoricalDtype(categories=[\"Y\", \"N\"], ordered=True)\n",
    "ibool_dtype = pd.CategoricalDtype(categories=[\"N\", \"Y\"], ordered=True)\n",
    "\n",
    "df[\"is_frozen\"] = df[\"variant\"].str.contains(\"prefz\").apply(lambda x: \"Y\" if x else \"N\").astype(bool_dtype)\n",
    "df[\"is_balanced\"] = df[\"variant\"].str.contains(\"bal\").apply(lambda x: \"Y\" if x else \"N\").astype(ibool_dtype)\n",
    "df[\"is_augmented\"] = df[\"variant\"].str.contains(\"aug\").apply(lambda x: \"Y\" if x else \"N\").astype(ibool_dtype)\n",
    "df[\"query_same\"] = df[\"inference_mode\"].str.contains(\"-o\").apply(lambda x: \"same\" if x else \"diff.\")\n",
    "\n",
    "scount = df[\"stem\"].value_counts()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T20:36:36.293284207Z",
     "start_time": "2024-04-07T20:36:36.278470153Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T19:04:56.275273439Z",
     "start_time": "2024-04-07T19:04:56.263442829Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 308,
   "outputs": [],
   "source": [
    "def clean_variant(s):\n",
    "\n",
    "    out = []\n",
    "\n",
    "    if \"fz\" in s:\n",
    "        out.append(\"FE\")\n",
    "    else:\n",
    "        out.append(\"TE\")\n",
    "\n",
    "    if \"aug\" in s:\n",
    "        out.append(\"DA\")\n",
    "\n",
    "    if \"bal\" in s:\n",
    "        out.append(\"BS\")\n",
    "\n",
    "    return \"+\".join(out)\n",
    "\n",
    "observed_stems = [\n",
    "    s for s in scount.index if scount[s] > 0\n",
    "]\n",
    "\n",
    "observed_stems = [s for s in allowed_stems if s in observed_stems]\n",
    "\n",
    "observed_stems_dtype = pd.CategoricalDtype(categories=observed_stems, ordered=True)\n",
    "\n",
    "df[\"stem\"] = df[\"stem\"].astype(observed_stems_dtype)\n",
    "df[\"short_stem\"] = df[\"stem\"].map(short_stems)\n",
    "df[\"variant\"] = df[\"variant\"].apply(clean_variant)\n",
    "\n",
    "variants = sorted(df[\"variant\"].unique().tolist())\n",
    "variants_dtype = pd.CategoricalDtype(categories=variants, ordered=True)\n",
    "df[\"variant\"] = df[\"variant\"].astype(variants_dtype)\n",
    "\n",
    "# df = df[df[\"query_same\"] == \"diff.\"]\n",
    "df = df[df[\"query_same\"] == \"same\"]\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T20:36:38.533138192Z",
     "start_time": "2024-04-07T20:36:38.531243277Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 311,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 450x500 with 1 Axes>",
      "image/png": "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kYy0DJwQqfWZZ82axeDBg5ttq7q6moKCgqx9IS+66CIWLVqUYOCWL19O586dGTp0aM7oTAVLZ+sZOHAgo0aNYuzYsRx33HEMHjyYiy66iM6dO8fO6dChA5deeinPPfccDz/8cKNtGYbBsmXLOOecc5Ie3717NzU1NfTs2ROI/LC64447eOyxxzjppJP47LPPWLRoUcJz5syZQ2lpKfv370dRFF5//fXY/Wzfvj0Oh4MNGzZw1FFHmXA3zCWT73teXl7avrbGEELg9XrxeDymzqKs74P74IMPeOutt3jwg4NDykIcHKoEKWa+BHU6RGRf9IGIHBOCgw8iBsdAxPZlGkWRUWOhBAcf0W1JkrHZbEgKtCupoVLJozIIWl0IQGQYUo+FBOi6EXesoY/P6XRy3OWpaWuzWZSLFy/mjTfeQNM03G43v/3tbwkEAmzevJkPP/yQkpIS1q5dS0FBAQ8//DAzZ85k06ZNdOnSheeeew6Px8OXX37JrFmzCAaDhMNhrrnmGi6++OIG1wqHw8ycOZMVK1YQDofp3bs3Dz30EIWFhQnnjR8/nueee479+/dTUlICwHvvvcdFF12Erus8/fTTfPrppwQCAU499VTuvfdeduzYwTXXXMMbb7xBjx49mDNnDl988QUvv/xyVofeDMNg48aNh8RsulzVKcsyzz33HD/88ANfffUVH374IfPmzeO9996jV69esfOuv/56zjrrLH744YcGbXz11VeMHz+e3bt3U1hYyDvvvJP0WmVlZbRvf3CG26ZNm1AUhZNOOgmAU045hR49eiQ8J36I8r333mPq1Km8++67sfvZoUMHysrKsmrgGos7y+T73hJfW2Pous63337LwIEDM+qDW7duHQC7nYWRbkwCB7clUTcpxIhODiG2jRExfZIhDnbVhABJgEHbWDdA1w0EEgYgG5GHUveQ5YhfzekERVVwFxSCqqAqCg5FjRlBtW5drfPnybIc88OFNY1wOEy4Lg4unb+zGfHB3X777bEhyltvvZWSkhL+8pe/8MYbb2C32/nPf/7DXXfdxe9//3sAVq9ezQcffEDXrl256667uOmmm3j77bdp3749N954I4sXL+byyy9nyJAhvPnmmyiKQmVlJRMnTuRHP/pRwi9sgLlz5+JyuVi4cCEAL7zwArNmzeKBBx5IOK9du3accsopvP/++1xzzTXs2bOH//znPzz99NMsWLCA//3vfyxcuJDVq1fz0ksvMW/ePG644QZ+85vf8Mtf/pK7776bN954g4ULF+asX8kiffr160fv3r0ZOHAgs2fPZvny5Vx77bWx43l5eVx//fXMmDGjwR/BqA/O7/czdepUpk+fzqxZsxpcw+VyEQwGm9TRVA/inHPO4be//S379x/04QSDwazGwzUVd5aJWLD6babja0u1TTNI1qbP5wOg4rRBGC5zskM1IK5LmGAk6wxhxDDWGcx6xw+eRz0Dm+Q8kWhkG57PwZmbdTFzki5AExCop8MQSJqOWhsknOcAm4KQpMh4rSwhJAmXw5HyLciIgas/RPnkk0+ydu3ahN5WVVUVoVAIgOHDh9O1a1cg4rPTNC3263bYsGFs2bIFgMrKSu677z62bNkSM3Lr169vYOCWL19OTU0NS5cuBSI9um7duiXVetFFF/GHP/yBa665htLSUsaOHUthYSFffvklEydOxG6PzBy6+OKLeeutt7jhhhs477zz+Oqrr7juuuuYN29erPdncWizZ88eduzYwahRo4CIb2fHjh0NelIAkydPZv78+QCcfvrpDY67XC4efvhhzjrrLNasWcOQIUMSjvfp04eKigoCgQBOp5O+ffui6zorVqxgzJgxfPHFF2zbtq1RrV9++SXFxcUUFRWxbds2dF1n27ZtWe29HelxZzlBvFFLMGSJ65KgnqGLP9aIcat3PGrckhm1RINH4zririMJkIVACuuotQGEQ0VIUt0DhCQhyRKSkvpIYpvMohRCMHHiRO68887YPl3XWbt2LTt37sQRZ5EVRUnYjnZVAR544AFOO+00nnvuOSRJYuLEiTEjWf9606ZN45RTTmlW2ymnnMK0adNYvXo1paWlPPjggw3Oqf+rWNM0NmzYQFFREeXl5c1eo604FLJZQO7q1DSN2bNnR2a4ORz4fD4mTZrEmWee2eBcu93O1KlTufvuuxttr1OnTlx33XU8++yzvPjiiwnHHA4Hp5xyCitWrOD000/Hbrczc+ZMpk+fjmEYHH300QwaNCjhOVEfnBACu93Os88+iyzLOJ1Ovv76a4YNG0ZRUZEp96IlNBV3ZhgGmzdvpk+fPkl7Rps2beJ3v/udKTqcTieXX355g2nr8SmgGjsmSRK7du2ib9++sWnu0dizliCEIBwOs3btWvr27RubAr9y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GO666y6+//57Hn30UZYsWWL2ZZNyzz338PnnnyeU1rjqqqu48MILm33u559/zuzZsykrK8Nms5GXl8fFF1/MpZdeCsBzzz3HDTfcgMPhaKYlC7NI1ceXTZryvdXnv9ts1AZkaoMSNQEZb1jlgE9mf63Ap6kUu3Xy7Tp5zohxy3cK8h0GeU4R2XYY2NXUa79F2bx5s+VvszgiMN3A3XfffVRVVbFgwQIKCyNTmf/+979TVVVl9qVS4rrrruOaa65J6zmfffYZ99xzD88++yzHHnss3377LZ07d+a9996LnfP8889z9dVXJzVwmqahqtYEVbNJxceXbRrzIwkazvMo/TYPj9tFXn4ehYVFdCgqppfbze7du+nSpQuaplFddYCNFRUc2FFJrdfXoF1FjrYrHaz3JohVfhOSlFAFTgiBcmAjNkfThYuFIZCaGPuUJIlbbrqZ448/vsl2olhJjC2ygal/hbdu3crf//53PvnkEwoLC4HIF+Hss88GaFA1eMOGDTz99NMEg0FkWebXv/41Y8aMYe/evdx55514vV6CwSAnnHACv/vd75BlmUWLFvH+++9TUlLChg0bsNlsPPPMM03WzUqXF154gV/84heMHDkSXdcpKCigc+fOTJ06FYD7778fgMsvvxxZlpk7dy5PPfUUkiSxbds2Kioq+Pvf/26anlQpKCho82umS2VlZYt1puLjM5OW6OzevTtDhw5l69at+Hy+WHIECQh2LEAJ68i6gawZCM2gptZLTa2X3bv3JLQTHS5sDt0AZAlsKkJVEDYFQ5XRVRnDpiBUBUNVEDY5clxVECZk+C9cu5udO3emnDhX13Xsdjt9+/bNGX9bY8S/77kcn3cofN8huzpNnUX53Xff0atXr5Sq7e7atYvS0lLmzJlDXl4eW7du5fLLL2f58uUUFBTw4osv4vF40HWdW265hb/97W+ce+65AKxevZrFixfTo0cPnn76aV5++WUeeuihpNeZM2cOpaWlse1p06YxevToJrWtWbOGadOmxV7zgAEDEo4/9NBDLFiwgDfeeCPhzfvuu+948803ycvLa/b1m00ynblGvH8qWTaNlpIJn1GU9evXp/2c++67L2H751Oup7x3MTXDezU8WQgk3UAK60iagRzWkTQdKawjhzWUaj+Oilp8PdpheBwxoyXiDBhK2zvvC7fux+/3p2yIo0Tv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HfyrRzbFDoFiSaTYKXKsWM/WrHBGxReSGOEkQi+zMtWK3KKLTw/I999/n169eqmisz5oyte9PtB0qksgOgN2MlFz0NndjRfK8zk0nepSXzq///57HnvsMUwmEyaTCaPRiNFo9Lx3v5rN5krrDAYDgiDQv39/+vbty6pVq6qc4mGXYO7vzb2WuVqTCuvSI703Ljrqs4yVK1cyZMgQjh8/jizLnpBbdrsdm83m9b6616VLlxIfH9+kr7vaaDrVJdg663WaQE1lpaam0qxZM9XKrA80nepSXzr/7//+j+zs7DqXE9MshpKSEnSCDnBNslYUBfd0a71eT//+/bFYLFgsFqxWKzqdjpKSEgoLCykqKqKkpIQDBw5QUFCAwJm5boA7WNenn37Kp59+WmetR44coW3btk36uquNplNdgq0z+OE3NDRU4PHHH/d0WRw9epSxY8fyzDPPEB0d7ZmnZbfbcTqd2O12z2f3utWrV5Obm8uguCSckhOH7MQhOXBITpyy0/PqlJ1kHjrJiTPvbQ4bZQ4bkWYLJoMJg6hHL+pICI9DH5ng+qzTY9QZ0It6DDo9pwpPs/v471x++eW0b98eg8HgaUkajUb0er3ns/vPaDSSl5fH9OnTvVLq+BvAQEOjKaIZOI2zjtLSUmRZZtasWQHv27N1V5cxk5zYJYeXcXMvd8gOjxHMLcln9/Hf6dWqGzER0eh1egyi4cyry7gZziwz6Fyfm0fEsPv478iyXCvno8LCwpo30tDQCK6Bs1qtwTy832g61aU+dH788cfccccddS7nxc3/qXKd0WjEaDgzfmc0YjSZEPUizaKbcdyZSVpOBna7Hbvdht3uwOF0VHusb775plYa3c4v77//Pt27d2/S170+0HSqSzB11mssyprK6tKli2rl1ReaTnWpL51qtGouueQS7r77bo8DSnkHFbcjSiDIsnzG4NkpKyujtLSUPXv20LZtW5555pmA52ZWxG63N/nrrjaaTnUJts6gelGePHmS1q1bh7wXkKZTPepL52233cbixYtVvz+bNWtWa52iKGI2mzGbzVitViRJ4vTp05xzzjmVIufUVWdTve5qo+lUl2DrDOiIantRZmRkqFpmfaDpVBdNp7poOtVF06kuwdYZuqZfQ0NDQ0OjDmhelBoaDcSDDz5IVlYWH374YbClaGg0CQIycGrm8xEEgebN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q+lUj6aus6SkhLKyMiIiImre2A+aen3WB768/jIyMkJuondjcDKB4OoMqhdlixYtVCuvvtB0qktT1rl27VpPVJ5vvvnG76S71dGU67M+EAShUnLOjIwMxiSPpuxMbNGGwGwysiZlbZVGzq0TXKEHq2PKlCkkJydz6aWX+ly/cuVK+vXrF7DGm266iZ9++snzuXnz5gwYMIDHHnvMk/BalmWWLl3KmjVrOHHiBGazmcTERMaPH8+4ceMCPmagBGTgJEmqdtJroGXt27evxom0wUbTqS5NWee+ffs874uKilQxcE25PusDd2urfCzKvLw8ymx2rk8soKW5/h0mMst0fJRqJS8vr0oDV75V+P3333uWf/HFFyxevJgNGzZ4loWHh5Obmwu4ouW4U4G5qWpM+NVXX+X48eMsWLCgSq3jx4/ngQceQFEUTpw4wbx58/jXv/7Fhx9+CMBrr73GRx99xJNPPknv3r0pLi7mt99+azCHo6A6mbizFoc6mk51CURnXYIr15VA67MmrcXFxQCIOh2jR49m/fr1qiQaPRuvezCRZdnn8pZmifjw0Mn27dYZGxvrWRYZGYkgCF7LAI+Bi46OrrSuLpjNZk95LVu25MYbb+Spp57yrN+8eTPjxo3jqquu8jwwdO/eXbXj14TmZKIR0pQPrhzq+NIqSRKpqa78c+65QLIkhfz8JQ2NQMnLy+PLL7/0SjzdokULduzY4RWSriHRpglohDRqB1euT3xp3bp1K9OmTWPgwPMID7fgzvnWMrZ5pdZbbm5ug6Wv0WiaXH/99ZV8KXbt2lXr8lasWMEnn3yCoiiUlpbSvn17r4wy06dP5/7772fIkCF07tyZpKQkLr30Ui6++OJaHzMQgupk0rlz55DODQWaTrUJVKfawZXLU12XYm3q05fWnTt3AnDy4E+kZgtYTAAymVnZ7N2717OdO7v2unXrAuq2PFuve7AIdmipQKhNItGFCxdWmWh6586d3HnnnZ6uRIfDgaIofPXVV55tnnnmGa655hrP55EjR3LPPfcAcPr0ad544w1uv/12Vq9ejcVioXPnzqxfv559+/bxyy+/sHPnTu69916Sk5OZO3duwPoDRfVpAhs3buT1119HkiRsNhstW7Zk2bJllW5sQRD8ip5eUFDARx99xF133eVZdtNNN3HLLbd4JSqtim7durFjxw6sVmuN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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, ax = plt.subplots(1, 1, figsize=(4.5, 5))\n",
    "\n",
    "sns.boxplot(data=df,\n",
    "            y=\"short_stem\",\n",
    "            x=\"snr\",\n",
    "            hue=\"variant\",\n",
    "            palette=\"colorblind\",\n",
    "            notch=True,\n",
    "            showfliers=True,\n",
    "            fliersize=1,\n",
    "            flierprops=dict(marker='.'),\n",
    "            ax=ax,\n",
    "            )\n",
    "\n",
    "\n",
    "ax.set_xlabel(\"SNR (dB)\", fontsize=8, labelpad=-10)\n",
    "ax.set_ylabel(\"\")\n",
    "ax.tick_params(axis='y', labelsize=8, pad=-10)\n",
    "ax.tick_params(axis='x', labelsize=8, pad=0)\n",
    "ax.xaxis.set_label_position('top')\n",
    "\n",
    "major_xtick = np.arange(-8, 8.1, 2)\n",
    "ax.set_xticks(major_xtick)\n",
    "\n",
    "minor_xtick = np.arange(-10, 10, 1)\n",
    "ax.set_xticks(minor_xtick, minor=True)\n",
    "\n",
    "ax.grid(which='minor', axis='x', linestyle='--')\n",
    "\n",
    "for label in ax.get_yticklabels():\n",
    "    label.set_fontsize(8)\n",
    "    label.set_horizontalalignment('left')\n",
    "\n",
    "plt.tight_layout()\n",
    "\n",
    "ax.set(xlim=(-10, 10))\n",
    "\n",
    "plt.savefig(\"bandit_ev_snr_same.pdf\")\n",
    "\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T20:36:56.462281291Z",
     "start_time": "2024-04-07T20:36:55.456034654Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 322,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(\n",
    "    df[df.variant == \"FE+BS\"],\n",
    "    y=\"snr\",\n",
    "    x=\"target_dbrms\",\n",
    ")\n",
    "\n",
    "# rotate x-axis labels\n",
    "plt.xticks(rotation=90)\n",
    "\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-08T03:18:20.854291629Z",
     "start_time": "2024-04-08T03:18:20.773397164Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 329,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1544437/3885472021.py:1: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n",
      "  kendall_tau = df.groupby([\"variant\"]).apply(lambda x: x[\"snr\"].corr(x[\"target_dbrms\"], method=\"spearman\"))\n"
     ]
    },
    {
     "data": {
      "text/plain": "variant\nFE       0.795029\nFE+BS    0.813281\nTE       0.795789\nTE+BS    0.812633\nTE+DA    0.780357\ndtype: float64"
     },
     "execution_count": 329,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kendall_tau = df.groupby([\"variant\"]).apply(lambda x: x[\"snr\"].corr(x[\"target_dbrms\"], method=\"spearman\"))\n",
    "\n",
    "kendall_tau.sort_index()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-08T03:19:53.576024519Z",
     "start_time": "2024-04-08T03:19:53.535714356Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "outputs": [],
   "source": [
    "extra_stems = [\n",
    " 'background_vocals',\n",
    " 'bass_synthesizer',\n",
    " 'pitched_percussion',\n",
    " 'organ_electric_organ',\n",
    " 'string_section',\n",
    " # 'other_strings',\n",
    " 'brass',\n",
    " 'reeds',\n",
    " # 'other_wind',\n",
    " 'synth_pad',\n",
    " 'synth_lead',\n",
    " # 'other_plucked',\n",
    " 'fx'\n",
    "]\n",
    "\n",
    "extra_stems1 = [\n",
    " 'background_vocals',\n",
    " 'bass_synthesizer',\n",
    " 'pitched_percussion',\n",
    " 'organ_electric_organ',\n",
    " 'string_section',\n",
    "]\n",
    "\n",
    "extra_stems2 = [\n",
    " 'brass',\n",
    " 'reeds',\n",
    " 'synth_pad',\n",
    " 'synth_lead',\n",
    "    'fx',\n",
    " # 'other_strings',\n",
    " # 'other_wind',\n",
    " # 'other_plucked',\n",
    "]\n",
    "\n",
    "old_stems = [s for s in allowed_stems if s not in extra_stems]\n",
    "\n",
    "extra_stems1_dtype = pd.CategoricalDtype(categories=extra_stems1, ordered=True)\n",
    "extra_stems2_dtype = pd.CategoricalDtype(categories=extra_stems2, ordered=True)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T19:03:00.368229931Z",
     "start_time": "2024-04-07T19:03:00.365692140Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1544437/1112056648.py:10: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n",
      "  dfagg = df.groupby([\n",
      "/tmp/ipykernel_1544437/1112056648.py:18: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n",
      "  dfagg_ = df.groupby([\n"
     ]
    }
   ],
   "source": [
    "def q25(x):\n",
    "    return x.quantile(0.25)\n",
    "\n",
    "def q75(x):\n",
    "    return x.quantile(0.75)\n",
    "\n",
    "def q50(x):\n",
    "    return x.quantile(0.5)\n",
    "\n",
    "dfagg = df.groupby([\n",
    "    \"is_frozen\",\n",
    "    \"is_augmented\",\n",
    "    \"is_balanced\",\n",
    "    \"query_same\",\n",
    "    \"stem\"\n",
    "]).agg({\"snr\": [q25, q50, q75]})\n",
    "\n",
    "dfagg_ = df.groupby([\n",
    "    \"is_frozen\",\n",
    "    \"is_augmented\",\n",
    "    \"is_balanced\",\n",
    "    \"query_same\",\n",
    "    \"stem\"\n",
    "]).agg({\"dbdiff\": [q50]})\n",
    "\n",
    "dfagg.columns = [\"q25\", \"q50\", \"q75\"]\n",
    "dfagg = dfagg.reset_index()\n",
    "\n",
    "dfagg_.columns = [\"dbdiff\"]\n",
    "dfagg_ = dfagg_.reset_index()\n",
    "\n",
    "dfagg = dfagg.merge(dfagg_, on=[\"is_frozen\", \"is_augmented\", \"is_balanced\", \"query_same\", \"stem\"])\n",
    "\n",
    "\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.675382195Z",
     "start_time": "2024-04-07T18:59:06.563863632Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "outputs": [
    {
     "data": {
      "text/plain": "['lead_female_singer',\n 'lead_male_singer',\n 'drums',\n 'bass_guitar',\n 'acoustic_guitar',\n 'clean_electric_guitar',\n 'distorted_electric_guitar',\n 'grand_piano',\n 'electric_piano',\n 'pitched_percussion',\n 'organ_electric_organ',\n 'string_section',\n 'other_strings',\n 'brass',\n 'reeds',\n 'other_wind',\n 'synth_pad',\n 'synth_lead',\n 'other_plucked',\n 'background_vocals',\n 'bass_synthesizer',\n 'fx']"
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfagg[\"stem\"].unique().tolist()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.678922412Z",
     "start_time": "2024-04-07T18:59:06.677677204Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "outputs": [],
   "source": [
    "def df_to_string(dfagg):\n",
    "    dfagg[\"stem\"] = dfagg[\"stem\"].map(short_stems)\n",
    "\n",
    "    dfagg = dfagg[dfagg[\"query_same\"] == \"same\"]\n",
    "\n",
    "    dfagg = dfagg.reset_index().pivot_table(\n",
    "        index=[\"is_frozen\", \"is_augmented\", \"is_balanced\"],\n",
    "        columns=\"stem\",\n",
    "        values=[\"q25\", \"q50\", \"q75\", \"dbdiff\"]\n",
    "    )\n",
    "\n",
    "    dfagg = dfagg.swaplevel(axis=1).sort_index(axis=1)\n",
    "    dfagg_max = dfagg.max(axis=0)\n",
    "\n",
    "\n",
    "    def bold_formatter(x, val):\n",
    "        if round(x, 1) == round(val, 1):\n",
    "            return r\"\\bfseries \" + f\"{x:.1f}\"\n",
    "        return f\"{x:.1f}\"\n",
    "\n",
    "    formatters = {\n",
    "        (c, d): partial(bold_formatter, val=dfagg_max.loc[c, d])\n",
    "        for c, d in dfagg.columns\n",
    "    }\n",
    "\n",
    "    str_ = dfagg.to_latex(\n",
    "        formatters=formatters,\n",
    "        sparsify=True,\n",
    "        multirow=False,\n",
    "    ).replace(\"_\", \" \")\n",
    "\n",
    "    return str_, dfagg\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.739394077Z",
     "start_time": "2024-04-07T18:59:06.680179407Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1544437/2659099969.py:6: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  dfagg1[\"stem\"] = dfagg1[\"stem\"].astype(extra_stems1_dtype)\n",
      "/tmp/ipykernel_1544437/2659099969.py:7: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  dfagg2[\"stem\"] = dfagg2[\"stem\"].astype(extra_stems2_dtype)\n",
      "/tmp/ipykernel_1544437/2659099969.py:8: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  dfaggb[\"stem\"] = dfaggb[\"stem\"].astype(stem_dtype)\n",
      "/tmp/ipykernel_1544437/2734607517.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  dfagg[\"stem\"] = dfagg[\"stem\"].map(short_stems)\n",
      "/tmp/ipykernel_1544437/2734607517.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  dfagg[\"stem\"] = dfagg[\"stem\"].map(short_stems)\n",
      "/tmp/ipykernel_1544437/2734607517.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  dfagg[\"stem\"] = dfagg[\"stem\"].map(short_stems)\n"
     ]
    }
   ],
   "source": [
    "dfagg1 = dfagg[dfagg[\"stem\"].isin(extra_stems1)]\n",
    "dfagg2 = dfagg[dfagg[\"stem\"].isin(extra_stems2)]\n",
    "\n",
    "dfaggb = dfagg[dfagg[\"stem\"].isin(old_stems)]\n",
    "\n",
    "dfagg1[\"stem\"] = dfagg1[\"stem\"].astype(extra_stems1_dtype)\n",
    "dfagg2[\"stem\"] = dfagg2[\"stem\"].astype(extra_stems2_dtype)\n",
    "dfaggb[\"stem\"] = dfaggb[\"stem\"].astype(stem_dtype)\n",
    "\n",
    "\n",
    "str1, dfagg1 = df_to_string(dfagg1)\n",
    "str2, dfagg2 = df_to_string(dfagg2)\n",
    "\n",
    "str3, dfaggb = df_to_string(dfaggb)\n",
    "\n",
    "str_all, dfagg_all = df_to_string(dfagg)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.793683284Z",
     "start_time": "2024-04-07T18:59:06.740246347Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\begin{tabular}{lllrrrrrrrrrrrrrrrrrrrr}\n",
      "\\toprule\n",
      " &  & stem & \\multicolumn{4}{r}{Bg Vox} & \\multicolumn{4}{r}{B Synth} & \\multicolumn{4}{r}{P Perc} & \\multicolumn{4}{r}{Org} & \\multicolumn{4}{r}{Str Sec} \\\\\n",
      " &  &  & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 \\\\\n",
      "is frozen & is augmented & is balanced &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  \\\\\n",
      "\\midrule\n",
      "Y & N & N & -4.9 & 0.0 & 0.8 & 1.5 & \\bfseries 0.3 & -4.2 & \\bfseries -0.0 & 0.1 & -8.7 & -1.0 & -0.6 & -0.1 & -47.3 & \\bfseries 0.0 & 0.0 & 0.0 & -52.4 & \\bfseries -0.0 & \\bfseries 0.0 & 0.0 \\\\\n",
      " &  & Y & -5.2 & \\bfseries 0.1 & 0.6 & 1.4 & -1.0 & \\bfseries -1.2 & -0.1 & \\bfseries 0.4 & \\bfseries -2.7 & \\bfseries -0.1 & \\bfseries 0.8 & \\bfseries 1.7 & -9.2 & -0.1 & 0.2 & 0.3 & -9.3 & -0.6 & -0.1 & -0.0 \\\\\n",
      "N & N & N & \\bfseries -3.1 & -0.3 & \\bfseries 1.2 & \\bfseries 2.1 & 0.1 & -4.2 & -2.8 & -0.1 & -2.9 & -1.3 & -0.3 & 0.6 & \\bfseries -4.3 & -0.4 & \\bfseries 0.4 & \\bfseries 1.1 & -17.4 & -0.6 & \\bfseries -0.0 & \\bfseries 0.1 \\\\\n",
      " &  & Y & -16.5 & -0.7 & 0.0 & 0.0 & -1.2 & -3.2 & -0.5 & -0.1 & -8.9 & -0.8 & -0.5 & -0.2 & -9.2 & -0.2 & 0.0 & 0.3 & \\bfseries -6.7 & -1.1 & -0.4 & \\bfseries 0.1 \\\\\n",
      " & Y & N & -16.6 & 0.0 & 0.0 & 0.2 & 0.1 & -4.2 & -0.1 & 0.2 & -5.9 & -1.2 & -0.5 & 0.1 & -35.8 & \\bfseries -0.0 & 0.0 & 0.0 & -53.9 & \\bfseries 0.0 & \\bfseries 0.0 & 0.0 \\\\\n",
      "\\bottomrule\n",
      "\\end{tabular}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(str1)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.828069947Z",
     "start_time": "2024-04-07T18:59:06.785713924Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\begin{tabular}{lllrrrrrrrrrrrrrrrrrrrr}\n",
      "\\toprule\n",
      " &  & stem & \\multicolumn{4}{r}{Brass} & \\multicolumn{4}{r}{Reeds} & \\multicolumn{4}{r}{Pad} & \\multicolumn{4}{r}{Lead} & \\multicolumn{4}{r}{Fx} \\\\\n",
      " &  &  & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 \\\\\n",
      "is frozen & is augmented & is balanced &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  \\\\\n",
      "\\midrule\n",
      "Y & N & N & -33.5 & 0.0 & 0.0 & 0.0 & -29.3 & 0.0 & 0.0 & 0.1 & -45.4 & \\bfseries 0.0 & \\bfseries 0.0 & 0.0 & -18.3 & \\bfseries 0.0 & \\bfseries 0.1 & \\bfseries 0.1 & -27.7 & \\bfseries -0.0 & \\bfseries -0.0 & -0.0 \\\\\n",
      " &  & Y & -11.9 & -0.2 & \\bfseries 0.1 & \\bfseries 0.2 & \\bfseries -5.5 & \\bfseries 1.2 & \\bfseries 1.5 & 1.6 & -6.0 & -1.0 & -0.1 & 0.1 & -13.0 & -0.1 & -0.0 & \\bfseries 0.1 & \\bfseries -15.3 & -0.1 & \\bfseries 0.0 & \\bfseries 0.2 \\\\\n",
      "N & N & N & -14.7 & \\bfseries 0.1 & \\bfseries 0.1 & \\bfseries 0.2 & -7.9 & 0.7 & 1.3 & \\bfseries 1.7 & \\bfseries -5.2 & -1.5 & -0.2 & \\bfseries 0.4 & \\bfseries -4.6 & -1.7 & -0.4 & \\bfseries 0.1 & -16.2 & -1.0 & -0.2 & -0.0 \\\\\n",
      " &  & Y & \\bfseries -4.7 & -0.9 & -0.7 & -0.1 & -9.1 & 0.2 & 0.8 & 0.9 & -9.7 & -0.5 & \\bfseries -0.0 & 0.1 & -8.7 & -0.7 & -0.2 & \\bfseries 0.1 & -27.5 & -0.1 & \\bfseries -0.0 & 0.0 \\\\\n",
      " & Y & N & -48.9 & 0.0 & 0.0 & 0.0 & -55.3 & 0.0 & 0.0 & 0.0 & -37.0 & \\bfseries -0.0 & \\bfseries 0.0 & 0.0 & -10.3 & -0.7 & 0.0 & 0.0 & -17.1 & -1.0 & -0.2 & -0.0 \\\\\n",
      "\\bottomrule\n",
      "\\end{tabular}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "print(str2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.828194940Z",
     "start_time": "2024-04-07T18:59:06.827818623Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\begin{tabular}{lllrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr}\n",
      "\\toprule\n",
      " &  & stem & \\multicolumn{4}{r}{F Vox} & \\multicolumn{4}{r}{M Vox} & \\multicolumn{4}{r}{Dr} & \\multicolumn{4}{r}{B Gtr} & \\multicolumn{4}{r}{A Gtr} & \\multicolumn{4}{r}{C E Gtr} & \\multicolumn{4}{r}{D E Gtr} & \\multicolumn{4}{r}{G Pno} & \\multicolumn{4}{r}{E Pno} \\\\\n",
      " &  &  & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 & dbdiff & q25 & q50 & q75 \\\\\n",
      "is frozen & is augmented & is balanced &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  &  \\\\\n",
      "\\midrule\n",
      "Y & N & N & \\bfseries -0.2 & \\bfseries 7.4 & 9.7 & 12.8 & \\bfseries -0.6 & 6.6 & 7.4 & 9.8 & \\bfseries -0.5 & 8.2 & 9.8 & 11.8 & -0.2 & 8.0 & 10.2 & 11.9 & -4.2 & 0.4 & 1.4 & 2.5 & -5.4 & 0.0 & \\bfseries 0.9 & 1.8 & -2.5 & 0.5 & 2.5 & 4.5 & -5.3 & -0.1 & 0.9 & 2.1 & -11.0 & 0.2 & 0.4 & 0.6 \\\\\n",
      " &  & Y & -0.5 & 6.3 & 9.2 & 12.3 & -0.8 & 5.4 & 7.1 & 8.9 & -0.6 & 7.8 & 9.0 & 11.0 & -0.3 & 7.6 & 10.0 & 11.3 & -4.1 & 0.5 & 1.4 & 2.4 & -6.9 & \\bfseries 0.1 & 0.4 & 1.6 & -3.0 & 0.4 & 2.2 & 4.0 & -4.6 & -1.4 & 0.8 & 2.0 & -8.2 & \\bfseries 0.3 & 0.5 & 0.7 \\\\\n",
      "N & N & N & -0.3 & 6.3 & 9.6 & 12.9 & -0.7 & 6.5 & \\bfseries 7.9 & 9.9 & \\bfseries -0.5 & 7.8 & 9.3 & 11.8 & \\bfseries -0.1 & 7.9 & 9.8 & 11.8 & \\bfseries -3.0 & 1.0 & 1.7 & 3.6 & \\bfseries -3.1 & -0.1 & 0.6 & 2.4 & \\bfseries -1.3 & \\bfseries 0.7 & \\bfseries 2.7 & \\bfseries 4.7 & -2.9 & \\bfseries 0.7 & \\bfseries 2.4 & 3.1 & \\bfseries -5.5 & -0.8 & \\bfseries 0.8 & \\bfseries 1.7 \\\\\n",
      " &  & Y & -0.8 & 4.3 & 5.6 & 9.1 & -1.9 & 2.8 & 4.7 & 5.8 & -1.1 & 4.9 & 6.3 & 7.8 & -0.8 & 6.0 & 6.8 & 8.2 & -4.2 & 0.2 & 0.5 & 1.8 & -5.2 & -0.3 & 0.2 & 1.5 & -2.6 & -0.7 & 1.4 & 2.2 & -4.9 & 0.2 & 0.5 & 1.7 & -9.8 & -0.0 & 0.3 & 0.4 \\\\\n",
      " & Y & N & -0.3 & 5.0 & \\bfseries 10.1 & \\bfseries 13.2 & \\bfseries -0.6 & \\bfseries 7.0 & 7.8 & \\bfseries 10.2 & \\bfseries -0.5 & \\bfseries 8.4 & \\bfseries 10.1 & \\bfseries 12.2 & -0.3 & \\bfseries 8.5 & \\bfseries 10.8 & \\bfseries 12.9 & -4.5 & \\bfseries 1.1 & \\bfseries 1.9 & \\bfseries 3.9 & -4.1 & -0.0 & 0.6 & \\bfseries 2.7 & -1.4 & \\bfseries 0.7 & \\bfseries 2.7 & \\bfseries 4.7 & \\bfseries -2.7 & 0.6 & \\bfseries 2.4 & \\bfseries 3.4 & -8.3 & \\bfseries 0.3 & 0.5 & 1.3 \\\\\n",
      "\\bottomrule\n",
      "\\end{tabular}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "print(str3)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.828238344Z",
     "start_time": "2024-04-07T18:59:06.827890698Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "outputs": [
    {
     "data": {
      "text/plain": "stem                                F Vox                   M Vox            \\\n                                   dbdiff  q25   q50   q75 dbdiff  q25  q50   \nis_frozen is_augmented is_balanced                                            \nY         N            N             -0.2  7.4   9.7  12.8   -0.6  6.6  7.4   \n                       Y             -0.5  6.3   9.2  12.3   -0.8  5.4  7.1   \nN         N            N             -0.3  6.3   9.6  12.9   -0.7  6.5  7.9   \n                       Y             -0.8  4.3   5.6   9.1   -1.9  2.8  4.7   \n          Y            N             -0.3  5.0  10.1  13.2   -0.6  7.0  7.8   \n\nstem                                         Dr       ... Bg Vox      B Synth  \\\n                                     q75 dbdiff  q25  ...    q50  q75  dbdiff   \nis_frozen is_augmented is_balanced                    ...                       \nY         N            N             9.8   -0.5  8.2  ...    0.8  1.5     0.3   \n                       Y             8.9   -0.6  7.8  ...    0.6  1.4    -1.0   \nN         N            N             9.9   -0.5  7.8  ...    1.2  2.1     0.1   \n                       Y             5.8   -1.1  4.9  ...    0.0  0.0    -1.2   \n          Y            N            10.2   -0.5  8.4  ...    0.0  0.2     0.1   \n\nstem                                                  Fx                 \n                                    q25  q50  q75 dbdiff  q25  q50  q75  \nis_frozen is_augmented is_balanced                                       \nY         N            N           -4.2 -0.0  0.1  -27.7 -0.0 -0.0 -0.0  \n                       Y           -1.2 -0.1  0.4  -15.3 -0.1  0.0  0.2  \nN         N            N           -4.2 -2.8 -0.1  -16.2 -1.0 -0.2 -0.0  \n                       Y           -3.2 -0.5 -0.1  -27.5 -0.1 -0.0  0.0  \n          Y            N           -4.2 -0.1  0.2  -17.1 -1.0 -0.2 -0.0  \n\n[5 rows x 76 columns]",
      "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 tr th {\n        text-align: left;\n    }\n\n    .dataframe thead tr:last-of-type th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr>\n      <th></th>\n      <th></th>\n      <th>stem</th>\n      <th colspan=\"4\" halign=\"left\">F Vox</th>\n      <th colspan=\"4\" halign=\"left\">M Vox</th>\n      <th colspan=\"2\" halign=\"left\">Dr</th>\n      <th>...</th>\n      <th colspan=\"2\" halign=\"left\">Bg Vox</th>\n      <th colspan=\"4\" halign=\"left\">B Synth</th>\n      <th colspan=\"4\" halign=\"left\">Fx</th>\n    </tr>\n    <tr>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>...</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n    </tr>\n    <tr>\n      <th>is_frozen</th>\n      <th>is_augmented</th>\n      <th>is_balanced</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th rowspan=\"2\" valign=\"top\">Y</th>\n      <th rowspan=\"2\" valign=\"top\">N</th>\n      <th>N</th>\n      <td>-0.2</td>\n      <td>7.4</td>\n      <td>9.7</td>\n      <td>12.8</td>\n      <td>-0.6</td>\n      <td>6.6</td>\n      <td>7.4</td>\n      <td>9.8</td>\n      <td>-0.5</td>\n      <td>8.2</td>\n      <td>...</td>\n      <td>0.8</td>\n      <td>1.5</td>\n      <td>0.3</td>\n      <td>-4.2</td>\n      <td>-0.0</td>\n      <td>0.1</td>\n      <td>-27.7</td>\n      <td>-0.0</td>\n      <td>-0.0</td>\n      <td>-0.0</td>\n    </tr>\n    <tr>\n      <th>Y</th>\n      <td>-0.5</td>\n      <td>6.3</td>\n      <td>9.2</td>\n      <td>12.3</td>\n      <td>-0.8</td>\n      <td>5.4</td>\n      <td>7.1</td>\n      <td>8.9</td>\n      <td>-0.6</td>\n      <td>7.8</td>\n      <td>...</td>\n      <td>0.6</td>\n      <td>1.4</td>\n      <td>-1.0</td>\n      <td>-1.2</td>\n      <td>-0.1</td>\n      <td>0.4</td>\n      <td>-15.3</td>\n      <td>-0.1</td>\n      <td>0.0</td>\n      <td>0.2</td>\n    </tr>\n    <tr>\n      <th rowspan=\"3\" valign=\"top\">N</th>\n      <th rowspan=\"2\" valign=\"top\">N</th>\n      <th>N</th>\n      <td>-0.3</td>\n      <td>6.3</td>\n      <td>9.6</td>\n      <td>12.9</td>\n      <td>-0.7</td>\n      <td>6.5</td>\n      <td>7.9</td>\n      <td>9.9</td>\n      <td>-0.5</td>\n      <td>7.8</td>\n      <td>...</td>\n      <td>1.2</td>\n      <td>2.1</td>\n      <td>0.1</td>\n      <td>-4.2</td>\n      <td>-2.8</td>\n      <td>-0.1</td>\n      <td>-16.2</td>\n      <td>-1.0</td>\n      <td>-0.2</td>\n      <td>-0.0</td>\n    </tr>\n    <tr>\n      <th>Y</th>\n      <td>-0.8</td>\n      <td>4.3</td>\n      <td>5.6</td>\n      <td>9.1</td>\n      <td>-1.9</td>\n      <td>2.8</td>\n      <td>4.7</td>\n      <td>5.8</td>\n      <td>-1.1</td>\n      <td>4.9</td>\n      <td>...</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>-1.2</td>\n      <td>-3.2</td>\n      <td>-0.5</td>\n      <td>-0.1</td>\n      <td>-27.5</td>\n      <td>-0.1</td>\n      <td>-0.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>Y</th>\n      <th>N</th>\n      <td>-0.3</td>\n      <td>5.0</td>\n      <td>10.1</td>\n      <td>13.2</td>\n      <td>-0.6</td>\n      <td>7.0</td>\n      <td>7.8</td>\n      <td>10.2</td>\n      <td>-0.5</td>\n      <td>8.4</td>\n      <td>...</td>\n      <td>0.0</td>\n      <td>0.2</td>\n      <td>0.1</td>\n      <td>-4.2</td>\n      <td>-0.1</td>\n      <td>0.2</td>\n      <td>-17.1</td>\n      <td>-1.0</td>\n      <td>-0.2</td>\n      <td>-0.0</td>\n    </tr>\n  </tbody>\n</table>\n<p>5 rows × 76 columns</p>\n</div>"
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfagg_all.round(1)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.828311943Z",
     "start_time": "2024-04-07T18:59:06.828027674Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "outputs": [
    {
     "data": {
      "text/plain": "stem                                    Brass                                \\\n                                       dbdiff       q25       q50       q75   \nis_frozen is_augmented is_balanced                                            \nY         N            N           -33.467715  0.000225  0.006392  0.013072   \n                       Y           -11.865765 -0.185544  0.082487  0.166017   \nN         N            N           -14.710728  0.051918  0.066017  0.210708   \n                       Y            -4.652514 -0.865638 -0.715481 -0.093257   \n          Y            N           -48.855884  0.000048  0.000195  0.001232   \n\nstem                                    Reeds                                \\\n                                       dbdiff       q25       q50       q75   \nis_frozen is_augmented is_balanced                                            \nY         N            N           -29.272843  0.012787  0.038850  0.069178   \n                       Y            -5.486119  1.188655  1.547197  1.598226   \nN         N            N            -7.947125  0.701751  1.341339  1.695137   \n                       Y            -9.077670  0.248637  0.798294  0.861206   \n          Y            N           -55.290671  0.000903  0.001485  0.004754   \n\nstem                                      Pad                                \\\n                                       dbdiff       q25       q50       q75   \nis_frozen is_augmented is_balanced                                            \nY         N            N           -45.428874  0.000009  0.000371  0.010705   \n                       Y            -6.047713 -1.032236 -0.055824  0.126971   \nN         N            N            -5.174922 -1.511318 -0.174103  0.361509   \n                       Y            -9.672668 -0.508916 -0.002630  0.107583   \n          Y            N           -37.023374 -0.040394  0.000472  0.009312   \n\nstem                                     Lead                                \\\n                                       dbdiff       q25       q50       q75   \nis_frozen is_augmented is_balanced                                            \nY         N            N           -18.347714  0.005410  0.053020  0.058245   \n                       Y           -13.049113 -0.130963 -0.019293  0.107110   \nN         N            N            -4.623205 -1.722462 -0.389275  0.088605   \n                       Y            -8.732219 -0.739433 -0.175757  0.051619   \n          Y            N           -10.286940 -0.653188  0.001643  0.025443   \n\nstem                                       Fx                                \n                                       dbdiff       q25       q50       q75  \nis_frozen is_augmented is_balanced                                           \nY         N            N           -27.729618 -0.043285 -0.006018 -0.000105  \n                       Y           -15.339428 -0.084894  0.001169  0.177836  \nN         N            N           -16.207857 -0.956394 -0.175547 -0.007091  \n                       Y           -27.523750 -0.071901 -0.002260  0.000129  \n          Y            N           -17.100482 -1.012478 -0.193432 -0.004700  ",
      "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 tr th {\n        text-align: left;\n    }\n\n    .dataframe thead tr:last-of-type th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr>\n      <th></th>\n      <th></th>\n      <th>stem</th>\n      <th colspan=\"4\" halign=\"left\">Brass</th>\n      <th colspan=\"4\" halign=\"left\">Reeds</th>\n      <th colspan=\"4\" halign=\"left\">Pad</th>\n      <th colspan=\"4\" halign=\"left\">Lead</th>\n      <th colspan=\"4\" halign=\"left\">Fx</th>\n    </tr>\n    <tr>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n      <th>dbdiff</th>\n      <th>q25</th>\n      <th>q50</th>\n      <th>q75</th>\n    </tr>\n    <tr>\n      <th>is_frozen</th>\n      <th>is_augmented</th>\n      <th>is_balanced</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th rowspan=\"2\" valign=\"top\">Y</th>\n      <th rowspan=\"2\" valign=\"top\">N</th>\n      <th>N</th>\n      <td>-33.467715</td>\n      <td>0.000225</td>\n      <td>0.006392</td>\n      <td>0.013072</td>\n      <td>-29.272843</td>\n      <td>0.012787</td>\n      <td>0.038850</td>\n      <td>0.069178</td>\n      <td>-45.428874</td>\n      <td>0.000009</td>\n      <td>0.000371</td>\n      <td>0.010705</td>\n      <td>-18.347714</td>\n      <td>0.005410</td>\n      <td>0.053020</td>\n      <td>0.058245</td>\n      <td>-27.729618</td>\n      <td>-0.043285</td>\n      <td>-0.006018</td>\n      <td>-0.000105</td>\n    </tr>\n    <tr>\n      <th>Y</th>\n      <td>-11.865765</td>\n      <td>-0.185544</td>\n      <td>0.082487</td>\n      <td>0.166017</td>\n      <td>-5.486119</td>\n      <td>1.188655</td>\n      <td>1.547197</td>\n      <td>1.598226</td>\n      <td>-6.047713</td>\n      <td>-1.032236</td>\n      <td>-0.055824</td>\n      <td>0.126971</td>\n      <td>-13.049113</td>\n      <td>-0.130963</td>\n      <td>-0.019293</td>\n      <td>0.107110</td>\n      <td>-15.339428</td>\n      <td>-0.084894</td>\n      <td>0.001169</td>\n      <td>0.177836</td>\n    </tr>\n    <tr>\n      <th rowspan=\"3\" valign=\"top\">N</th>\n      <th rowspan=\"2\" valign=\"top\">N</th>\n      <th>N</th>\n      <td>-14.710728</td>\n      <td>0.051918</td>\n      <td>0.066017</td>\n      <td>0.210708</td>\n      <td>-7.947125</td>\n      <td>0.701751</td>\n      <td>1.341339</td>\n      <td>1.695137</td>\n      <td>-5.174922</td>\n      <td>-1.511318</td>\n      <td>-0.174103</td>\n      <td>0.361509</td>\n      <td>-4.623205</td>\n      <td>-1.722462</td>\n      <td>-0.389275</td>\n      <td>0.088605</td>\n      <td>-16.207857</td>\n      <td>-0.956394</td>\n      <td>-0.175547</td>\n      <td>-0.007091</td>\n    </tr>\n    <tr>\n      <th>Y</th>\n      <td>-4.652514</td>\n      <td>-0.865638</td>\n      <td>-0.715481</td>\n      <td>-0.093257</td>\n      <td>-9.077670</td>\n      <td>0.248637</td>\n      <td>0.798294</td>\n      <td>0.861206</td>\n      <td>-9.672668</td>\n      <td>-0.508916</td>\n      <td>-0.002630</td>\n      <td>0.107583</td>\n      <td>-8.732219</td>\n      <td>-0.739433</td>\n      <td>-0.175757</td>\n      <td>0.051619</td>\n      <td>-27.523750</td>\n      <td>-0.071901</td>\n      <td>-0.002260</td>\n      <td>0.000129</td>\n    </tr>\n    <tr>\n      <th>Y</th>\n      <th>N</th>\n      <td>-48.855884</td>\n      <td>0.000048</td>\n      <td>0.000195</td>\n      <td>0.001232</td>\n      <td>-55.290671</td>\n      <td>0.000903</td>\n      <td>0.001485</td>\n      <td>0.004754</td>\n      <td>-37.023374</td>\n      <td>-0.040394</td>\n      <td>0.000472</td>\n      <td>0.009312</td>\n      <td>-10.286940</td>\n      <td>-0.653188</td>\n      <td>0.001643</td>\n      <td>0.025443</td>\n      <td>-17.100482</td>\n      <td>-1.012478</td>\n      <td>-0.193432</td>\n      <td>-0.004700</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfagg2"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-07T18:59:06.828364608Z",
     "start_time": "2024-04-07T18:59:06.828153150Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}