File size: 108,160 Bytes
15d6c34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "from collections import defaultdict\n",
    "from os.path import join as pjoin\n",
    "import numpy as np\n",
    "\n",
    "from motionx_explorer import motion_arr_to_dict, names_to_arrays, calc_mean_stddev_pose, get_info_from_file, label_code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data dir: ../data/GRAB/\n",
      "emotions_dir: ../data/GRAB/face_texts\n",
      "motion_label_dir: ../data/GRAB/texts\n",
      "cwd /work3/s222376/MotionDiffuse2/text2motion/datasets\n"
     ]
    }
   ],
   "source": [
    "data_dir = \"../data/GRAB/\"\n",
    "emotions_dir = pjoin(data_dir, \"face_texts\")\n",
    "motion_label_dir = pjoin(data_dir, \"texts\")\n",
    "print(f\"data dir: {data_dir}\")\n",
    "print(f\"emotions_dir: {emotions_dir}\")\n",
    "print(f\"motion_label_dir: {motion_label_dir}\")\n",
    "print(f\"cwd {os.getcwd()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_seq_type(file_name):\n",
    "    seq_type_path = pjoin(motion_label_dir, f\"{file_name}.txt\")\n",
    "    with open(seq_type_path, 'r') as f:\n",
    "        seq_type = f.readline().strip()\n",
    "    return seq_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "file = pjoin(data_dir, \"train.txt\")\n",
    "info = get_info_from_file(file, emotions_label_dir=emotions_dir, motion_label_dir=motion_label_dir)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "airplane fly: {'thinking', 'happiness', 'anger', 'fear', 'neutral'}\n",
      "airplane lift: {'fear', 'unsure', 'bothered', 'surprise'}\n",
      "airplane lift Retake: {'thinking'}\n",
      "airplane offhand: {'thinking', 'anger'}\n",
      "airplane pass: {'sadness', 'disgust', 'happiness', 'anger', 'fear'}\n",
      "alarmclock lift: {'fear', 'thinking', 'sadness', 'neutral'}\n",
      "alarmclock lift Retake: {'intrest'}\n",
      "alarmclock offhand: {'neutral', 'disgust'}\n",
      "alarmclock pass: {'fear', 'unsure', 'thinking', 'neutral'}\n",
      "alarmclock see: {'sadness', 'bothered', 'intrest', 'unsure', 'happiness', 'anger'}\n",
      "apple eat: {'fear', 'unsure', 'anger', 'neutral'}\n",
      "apple lift: {'thinking', 'concentrating', 'bothered', 'unsure', 'happiness'}\n",
      "apple offhand: {'sadness'}\n",
      "apple offhand Retake: {'bothered'}\n",
      "apple pass: {'sadness', 'bothered', 'unsure', 'fear', 'neutral', 'surprise'}\n",
      "banana eat: {'unsure', 'thinking', 'concentrating', 'happiness'}\n",
      "banana lift: {'happiness', 'bothered', 'disgust'}\n",
      "banana pass: {'sadness', 'disgust', 'unsure', 'contempt', 'neutral'}\n",
      "banana peel: {'sadness', 'thinking', 'disgust', 'unsure', 'anger', 'contempt', 'neutral'}\n",
      "binoculars lift: {'boredom', 'anger', 'disgust'}\n",
      "binoculars offhand: {'anger'}\n",
      "binoculars pass: {'sadness', 'bothered', 'disgust', 'happiness', 'fear'}\n",
      "binoculars see: {'happiness', 'bothered', 'neutral', 'disgust'}\n",
      "bowl drink: {'thinking', 'concentrating', 'disgust', 'unsure', 'happiness', 'fear', 'neutral'}\n",
      "bowl drink Retake: {'boredom', 'disgust'}\n",
      "bowl lift: {'sadness', 'thinking', 'disgust', 'happiness', 'neutral'}\n",
      "bowl offhand: {'thinking'}\n",
      "bowl pass: {'happiness', 'sadness', 'disgust', 'surprise'}\n",
      "camera browse: {'fear', 'happiness', 'anger', 'disgust'}\n",
      "camera lift: {'happiness', 'thinking'}\n",
      "camera offhand: {'boredom', 'neutral'}\n",
      "camera pass: {'sadness', 'disgust', 'unsure', 'happiness', 'neutral'}\n",
      "camera takepicture: {'thinking', 'sadness', 'disgust', 'boredom', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "camera takepicture Retake: {'sadness'}\n",
      "cubelarge inspect: {'thinking', 'sadness', 'disgust', 'unsure', 'neutral'}\n",
      "cubelarge lift: {'sadness', 'bothered', 'boredom', 'intrest', 'happiness', 'neutral'}\n",
      "cubelarge offhand: {'happiness', 'neutral'}\n",
      "cubelarge pass: {'sadness', 'boredom', 'happiness', 'anger', 'neutral'}\n",
      "cubemedium inspect: {'unsure', 'happiness', 'anger', 'sadness'}\n",
      "cubemedium lift: {'concentrating', 'bothered', 'happiness', 'neutral', 'surprise'}\n",
      "cubemedium offhand: {'happiness', 'disgust'}\n",
      "cubemedium pass: {'thinking', 'concentrating', 'sadness', 'boredom', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "cubesmall inspect: {'sadness', 'bothered', 'boredom', 'unsure', 'happiness', 'neutral'}\n",
      "cubesmall lift: {'sadness', 'bothered', 'unsure', 'neutral', 'surprise'}\n",
      "cubesmall offhand: {'happiness', 'anger'}\n",
      "cubesmall pass: {'sadness', 'concentrating', 'happiness', 'anger', 'surprise'}\n",
      "cup drink: {'sadness', 'concentrating', 'bothered', 'disgust', 'intrest', 'unsure', 'happiness', 'neutral'}\n",
      "cup lift: {'unsure', 'sadness', 'concentrating', 'boredom'}\n",
      "cup offhand: {'bothered', 'neutral'}\n",
      "cup pass: {'sadness', 'disgust', 'boredom', 'unsure', 'anger', 'neutral'}\n",
      "cup pour: {'unsure', 'happiness', 'neutral'}\n",
      "cylinderlarge inspect: {'sadness', 'concentrating', 'disgust', 'boredom', 'unsure', 'happiness', 'anger'}\n",
      "cylinderlarge lift: {'sadness', 'bothered', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "cylinderlarge lift Retake: {'sadness'}\n",
      "cylinderlarge offhand: {'sadness', 'anger'}\n",
      "cylinderlarge pass: {'sadness', 'boredom', 'intrest', 'unsure', 'happiness'}\n",
      "cylindermedium inspect: {'sadness', 'bothered', 'disgust', 'happiness', 'fear'}\n",
      "cylindermedium lift: {'boredom', 'happiness', 'anger', 'neutral', 'surprise'}\n",
      "cylindermedium offhand: {'bothered'}\n",
      "cylindermedium pass: {'sadness', 'disgust', 'unsure', 'happiness', 'anger', 'fear', 'neutral'}\n",
      "cylindersmall inspect: {'thinking', 'sadness', 'disgust', 'unsure', 'happiness', 'anger'}\n",
      "cylindersmall lift: {'fear', 'thinking', 'neutral'}\n",
      "cylindersmall offhand: {'thinking'}\n",
      "cylindersmall pass: {'sadness', 'concentrating', 'unsure', 'fear', 'neutral'}\n",
      "doorknob lift: {'happiness', 'bothered', 'neutral'}\n",
      "doorknob use: {'sadnes', 'thinking', 'concentrating', 'intrest', 'unsure', 'happiness', 'neutral'}\n",
      "doorknob use fun: {'disgust'}\n",
      "duck inspect: {'sadness', 'disgust', 'intrest', 'anger', 'neutral'}\n",
      "duck lift: {'unsure', 'anger', 'neutral'}\n",
      "duck pass: {'bothered', 'intrest', 'happiness', 'anger', 'neutral'}\n",
      "elephant inspect: {'sadness', 'disgust', 'unsure', 'happiness', 'neutral', 'surprise'}\n",
      "elephant lift: {'unsure', 'boredom', 'thinking', 'neutral'}\n",
      "elephant offhand: {'boredom'}\n",
      "elephant pass: {'thinking', 'disgust', 'happiness', 'anger', 'contempt', 'neutral', 'surprise'}\n",
      "eyeglasses clean: {'unsure', 'neutral', 'sadness', 'disgust'}\n",
      "eyeglasses lift: {'anger', 'concentrating', 'bothered', 'neutral'}\n",
      "eyeglasses offhand: {'happiness', 'disgust'}\n",
      "eyeglasses pass: {'unsure', 'concentrating', 'bothered', 'neutral'}\n",
      "eyeglasses wear: {'sadness', 'bothered', 'disgust', 'boredom', 'neutral'}\n",
      "flashlight lift: {'intrest', 'happiness', 'disgust'}\n",
      "flashlight offhand: {'sadness', 'bothered'}\n",
      "flashlight on: {'thinking', 'sadness', 'concentrating', 'disgust', 'anger', 'neutral'}\n",
      "flashlight pass: {'sadness', 'bothered', 'unsure', 'happiness', 'surprise'}\n",
      "flute lift: {'thinking', 'neutral'}\n",
      "flute offhand: {'fear', 'bothered'}\n",
      "flute pass: {'sadness', 'bothered', 'anger', 'fear', 'neutral'}\n",
      "flute play: {'sadness', 'concentrating', 'bothered', 'thinking', 'happiness', 'fear'}\n",
      "fryingpan cook: {'sadness', 'disgust', 'boredom', 'intrest', 'unsure', 'happiness', 'neutral'}\n",
      "fryingpan lift: {'thinking', 'disgust'}\n",
      "fryingpan offhand: {'disgust'}\n",
      "fryingpan pass: {'happiness', 'thinking', 'anger', 'sadness'}\n",
      "gamecontroller lift: {'intrest', 'sadness', 'neutral'}\n",
      "gamecontroller offhand: {'unsure'}\n",
      "gamecontroller pass: {'sadness', 'disgust', 'unsure', 'happiness', 'fear', 'neutral'}\n",
      "gamecontroller play: {'thinking', 'disgust', 'intrest', 'happiness', 'anger', 'neutral', 'surprise'}\n",
      "hammer lift: {'boredom', 'sadness', 'anger', 'bothered'}\n",
      "hammer pass: {'happiness', 'bothered', 'neutral', 'surprise'}\n",
      "hammer use: {'thinking', 'concentrating', 'sadness', 'disgust', 'intrest', 'unsure', 'happiness', 'anger', 'neutral', 'surprise'}\n",
      "hand inspect: {'sadness', 'bothered', 'happiness', 'neutral', 'surprise'}\n",
      "hand lift: {'boredom', 'happiness', 'bothered', 'neutral'}\n",
      "hand pass: {'sadness', 'boredom', 'unsure', 'neutral', 'surprise'}\n",
      "hand shake: {'anger', 'bothered'}\n",
      "headphones lift: {'unsure', 'sadness', 'boredom', 'disgust'}\n",
      "headphones pass: {'sadness', 'thinking', 'disgust', 'unsure', 'happiness', 'neutral', 'surprise'}\n",
      "headphones use: {'thinking', 'concentrating', 'sadness', 'happiness', 'fear', 'neutral'}\n",
      "knife chop: {'concentrating', 'bothered'}\n",
      "knife lift: {'fear', 'neutral'}\n",
      "knife pass: {'boredom', 'neutral'}\n",
      "knife peel: {'unsure', 'neutral'}\n",
      "lightbulb pass: {'fear', 'bothered', 'neutral'}\n",
      "lightbulb screw: {'fear', 'happiness'}\n",
      "mouse lift: {'thinking', 'bothered', 'intrest', 'unsure', 'anger', 'neutral'}\n",
      "mouse pass: {'concentrating', 'intrest', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "mouse use: {'sadness', 'thinking', 'bothered', 'disgust', 'unsure', 'fear'}\n",
      "mug drink: {'sadness', 'concentrating', 'thinking', 'unsure', 'happiness', 'anger', 'contempt', 'fear', 'neutral'}\n",
      "mug lift: {'boredom', 'thinking', 'sadness', 'neutral'}\n",
      "mug offhand: {'fear', 'bothered', 'surprise'}\n",
      "mug pass: {'thinking', 'anger', 'bothered'}\n",
      "mug toast: {'unsure', 'happiness', 'concentrating', 'disgust'}\n",
      "phone call: {'sadness', 'thinking', 'happiness', 'neutral', 'surprise'}\n",
      "phone lift: {'disgust', 'boredom', 'intrest', 'happiness', 'neutral'}\n",
      "phone offhand: {'disgust', 'surprise'}\n",
      "phone pass: {'sadness', 'concentrating', 'disgust', 'happiness', 'anger', 'fear'}\n",
      "piggybank lift: {'sadness', 'happiness', 'bothered', 'disgust'}\n",
      "piggybank lift Retake: {'thinking', 'neutral'}\n",
      "piggybank offhand: {'unsure'}\n",
      "piggybank pass: {'thinking', 'concentrating', 'bothered', 'happiness', 'fear', 'neutral'}\n",
      "piggybank pass Retake: {'thinking'}\n",
      "piggybank use: {'boredom', 'contepmt', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "pyramidlarge inspect: {'thinking', 'disgust', 'boredom', 'unsure', 'happiness', 'anger'}\n",
      "pyramidlarge lift: {'fear', 'unsure', 'disgust'}\n",
      "pyramidlarge offhand: {'intrest', 'happiness'}\n",
      "pyramidlarge pass: {'happiness', 'sadness', 'concentrating', 'bothered'}\n",
      "pyramidlarge pass Retake: {'concentrating'}\n",
      "pyramidmedium inspect: {'thinking', 'disgust', 'unsure', 'happiness', 'anger', 'fear', 'neutral'}\n",
      "pyramidmedium lift: {'neutral'}\n",
      "pyramidmedium lift Retake: {'happiness'}\n",
      "pyramidmedium offhand: {'boredom'}\n",
      "pyramidmedium pass: {'thinking', 'bothered', 'unsure', 'happiness', 'neutral'}\n",
      "pyramidsmall inspect: {'happiness', 'thinking'}\n",
      "pyramidsmall pass: {'sadness', 'neutral'}\n",
      "scissors offhand: {'thinking'}\n",
      "scissors pass: {'sadness', 'thinking', 'contempt', 'bothered'}\n",
      "scissors use: {'unsure', 'thinking', 'boredom'}\n",
      "spherelarge inspect: {'sadness', 'thinking', 'concentrating', 'boredom', 'happiness', 'anger', 'neutral'}\n",
      "spherelarge lift: {'thinking', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "spherelarge offhand: {'thinking'}\n",
      "spherelarge pass: {'sadness', 'neutral'}\n",
      "spheremedium inspect: {'fear', 'unsure', 'sadness', 'anger'}\n",
      "spheremedium lift: {'unsure', 'sadness', 'concentrating', 'neutral'}\n",
      "spheremedium offhand: {'unsure'}\n",
      "spheremedium pass: {'bothered', 'disgust', 'unsure', 'fear', 'neutral'}\n",
      "spheresmall inspect: {'bothered', 'disgust', 'boredom', 'happiness', 'surprise'}\n",
      "spheresmall lift: {'unsure', 'thinking', 'happiness'}\n",
      "spheresmall offhand: {'neutral'}\n",
      "spheresmall pass: {'thinking', 'concentrating', 'sadness', 'disgust', 'intrest'}\n",
      "stamp lift: {'thinking', 'bothered', 'unsure', 'fear', 'neutral'}\n",
      "stamp offhand: {'thinking'}\n",
      "stamp pass: {'happiness', 'sadness', 'anger', 'surprise'}\n",
      "stamp stamp: {'sadness', 'boredom', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "stanfordbunny inspect: {'sadness', 'disgust', 'boredom', 'unsure', 'happiness'}\n",
      "stanfordbunny lift: {'sadness', 'thinking', 'unsure', 'anger', 'surprise'}\n",
      "stanfordbunny offhand: {'thinking'}\n",
      "stanfordbunny pass: {'sadness', 'thinking', 'bothered', 'disgust', 'happiness', 'anger', 'neutral'}\n",
      "stapler lift: {'thinking', 'sadness', 'disgust', 'anger', 'neutral'}\n",
      "stapler offhand: {'unsure'}\n",
      "stapler offhand Retake: {'thinking'}\n",
      "stapler pass: {'thinking', 'sadness', 'bothered', 'disgust', 'unsure', 'happiness'}\n",
      "stapler staple: {'thinking', 'concentrating', 'disgust', 'boredom', 'intrest', 'happiness', 'anger', 'contempt', 'neutral'}\n",
      "teapot lift: {'fear', 'happiness'}\n",
      "teapot pass: {'bothered', 'unsure', 'happiness', 'fear', 'neutral'}\n",
      "teapot pour: {'thinking', 'sadness', 'disgust', 'unsure', 'happiness', 'neutral'}\n",
      "toothbrush brush: {'sadness', 'disgust'}\n",
      "toothbrush lift: {'disgust'}\n",
      "toothbrush pass: {'thinking', 'bothered', 'happiness', 'fear', 'surprise'}\n",
      "toothpaste lift: {'neutral', 'happiness', 'anger', 'disgust'}\n",
      "toothpaste pass: {'unsure', 'boredom', 'anger', 'neutral'}\n",
      "toothpaste squeeze: {'thinking', 'concentrating', 'sadness', 'unsure', 'fear', 'neutral'}\n",
      "toothpaste squeeze Retake: {'concentrating'}\n",
      "toruslarge inspect: {'unsure', 'boredom', 'anger', 'disgust'}\n",
      "toruslarge inspect Retake: {'unsure'}\n",
      "toruslarge lift: {'unsure', 'boredom', 'sadness', 'concentrating'}\n",
      "toruslarge pass: {'sadness', 'concentrating', 'unsure', 'fear', 'neutral'}\n",
      "torusmedium inspect: {'unsure', 'sadness', 'happiness', 'neutral'}\n",
      "torusmedium lift: {'bothered', 'neutral'}\n",
      "torusmedium offhand: {'unsure'}\n",
      "torusmedium pass: {'thinking', 'bothered', 'unsure', 'happiness', 'anger'}\n",
      "torussmall inspect: {'unsure', 'happiness', 'sadness'}\n",
      "torussmall lift: {'fear', 'happiness', 'neutral'}\n",
      "torussmall offhand: {'neutral'}\n",
      "torussmall pass: {'sadness', 'disgust', 'unsure', 'happiness', 'contempt', 'neutral'}\n",
      "train lift: {'unsure', 'sadness', 'thinking', 'neutral'}\n",
      "train pass: {'disgust', 'boredom', 'unsure', 'happiness', 'anger', 'neutral'}\n",
      "train play: {'sadness', 'concentrating', 'disgust', 'happiness', 'anger'}\n",
      "watch lift: {'sadness', 'anger', 'surprise'}\n",
      "watch offhand: {'disgust'}\n",
      "watch pass: {'thinking', 'sadness', 'unsure', 'happiness', 'neutral'}\n",
      "watch set: {'sadness', 'concentrating', 'boredom', 'unsure', 'fear', 'neutral'}\n",
      "waterbottle drink: {'thinking', 'concentrating', 'sadness', 'disgust', 'intrest', 'happiness'}\n",
      "waterbottle lift: {'fear', 'unsure', 'happiness', 'concentrating'}\n",
      "waterbottle open: {'fear', 'thinking', 'anger', 'neutral'}\n",
      "waterbottle open Retake: {'concentrating'}\n",
      "waterbottle pass: {'sadness', 'concentrating', 'happiness', 'anger', 'fear'}\n",
      "waterbottle pour: {'unsure', 'thinking', 'concentrating', 'disgust'}\n",
      "waterbottle shake: {'sadness', 'concentrating', 'bothered', 'boredom', 'anger'}\n",
      "wineglass drink: {'thinking', 'sadness', 'concentrating', 'disgust', 'boredom', 'unsure', 'happiness', 'anger', 'contempt', 'fear', 'neutral'}\n",
      "wineglass lift: {'fear', 'thinking', 'sadness', 'neutral'}\n",
      "wineglass offhand: {'anger'}\n",
      "wineglass pass: {'thinking', 'sadness', 'unsure', 'happiness', 'neutral'}\n",
      "wineglass toast: {'thinking', 'disgust', 'unsure', 'happiness', 'anger'}\n",
      "n_types: 210\n",
      "total sequences 1068\n"
     ]
    }
   ],
   "source": [
    "seq_type_to_emotions = info[\"seq_type_to_emotions\"]\n",
    "n_types = len(seq_type_to_emotions.keys())\n",
    "# print results, sorted alphabetically by seq_type\n",
    "sorted_seq_types = sorted(seq_type_to_emotions.keys())\n",
    "for seq_type in sorted_seq_types:\n",
    "    emotions = seq_type_to_emotions[seq_type]\n",
    "    print(f\"{seq_type}: {emotions}\")\n",
    "print(f\"n_types: {n_types}\")\n",
    "print(f\"total sequences {info['n_seq']}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "anger: 83\n",
      "boredom: 42\n",
      "bothered: 59\n",
      "concentrating: 59\n",
      "disgust: 83\n",
      "fear: 51\n",
      "happiness: 140\n",
      "intrest: 21\n",
      "neutral: 153\n",
      "sadness: 131\n",
      "surprise: 26\n",
      "thinking: 90\n",
      "unsure: 130\n"
     ]
    }
   ],
   "source": [
    "emotions_count = info[\"emotions_count\"]\n",
    "sorted_emos = sorted(emotions_count.keys())\n",
    "code_to_label = info[\"code_to_label\"]\n",
    "for emo in sorted_emos:\n",
    "    print(f\"{code_to_label[emo]}: {emotions_count[emo]}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "airplane fly: 7\n",
      "airplane lift: 5\n",
      "airplane lift Retake: 1\n",
      "airplane offhand: 2\n",
      "airplane pass: 6\n",
      "alarmclock lift: 7\n",
      "alarmclock lift Retake: 1\n",
      "alarmclock offhand: 2\n",
      "alarmclock pass: 4\n",
      "alarmclock see: 8\n",
      "apple eat: 7\n",
      "apple lift: 8\n",
      "apple offhand: 1\n",
      "apple offhand Retake: 1\n",
      "apple pass: 9\n",
      "banana eat: 6\n",
      "banana lift: 3\n",
      "banana pass: 6\n",
      "banana peel: 11\n",
      "binoculars lift: 4\n",
      "binoculars offhand: 1\n",
      "binoculars pass: 5\n",
      "binoculars see: 7\n",
      "bowl drink: 12\n",
      "bowl drink Retake: 2\n",
      "bowl lift: 5\n",
      "bowl offhand: 1\n",
      "bowl pass: 6\n",
      "camera browse: 7\n",
      "camera lift: 2\n",
      "camera offhand: 2\n",
      "camera pass: 9\n",
      "camera takepicture: 16\n",
      "camera takepicture Retake: 1\n",
      "cubelarge inspect: 7\n",
      "cubelarge lift: 6\n",
      "cubelarge offhand: 2\n",
      "cubelarge pass: 8\n",
      "cubemedium inspect: 7\n",
      "cubemedium lift: 7\n",
      "cubemedium offhand: 2\n",
      "cubemedium pass: 8\n",
      "cubesmall inspect: 7\n",
      "cubesmall lift: 6\n",
      "cubesmall offhand: 2\n",
      "cubesmall pass: 5\n",
      "cup drink: 12\n",
      "cup lift: 5\n",
      "cup offhand: 2\n",
      "cup pass: 8\n",
      "cup pour: 6\n",
      "cylinderlarge inspect: 10\n",
      "cylinderlarge lift: 8\n",
      "cylinderlarge lift Retake: 1\n",
      "cylinderlarge offhand: 2\n",
      "cylinderlarge pass: 6\n",
      "cylindermedium inspect: 7\n",
      "cylindermedium lift: 6\n",
      "cylindermedium offhand: 1\n",
      "cylindermedium pass: 8\n",
      "cylindersmall inspect: 7\n",
      "cylindersmall lift: 3\n",
      "cylindersmall offhand: 1\n",
      "cylindersmall pass: 6\n",
      "doorknob lift: 5\n",
      "doorknob use: 10\n",
      "doorknob use fun: 1\n",
      "duck inspect: 8\n",
      "duck lift: 5\n",
      "duck pass: 5\n",
      "elephant inspect: 7\n",
      "elephant lift: 5\n",
      "elephant offhand: 1\n",
      "elephant pass: 8\n",
      "eyeglasses clean: 5\n",
      "eyeglasses lift: 4\n",
      "eyeglasses offhand: 2\n",
      "eyeglasses pass: 5\n",
      "eyeglasses wear: 6\n",
      "flashlight lift: 3\n",
      "flashlight offhand: 2\n",
      "flashlight on: 10\n",
      "flashlight pass: 5\n",
      "flute lift: 2\n",
      "flute offhand: 2\n",
      "flute pass: 8\n",
      "flute play: 8\n",
      "fryingpan cook: 10\n",
      "fryingpan lift: 2\n",
      "fryingpan offhand: 1\n",
      "fryingpan pass: 4\n",
      "gamecontroller lift: 4\n",
      "gamecontroller offhand: 1\n",
      "gamecontroller pass: 6\n",
      "gamecontroller play: 9\n",
      "hammer lift: 4\n",
      "hammer pass: 5\n",
      "hammer use: 19\n",
      "hand inspect: 7\n",
      "hand lift: 5\n",
      "hand pass: 7\n",
      "hand shake: 2\n",
      "headphones lift: 4\n",
      "headphones pass: 7\n",
      "headphones use: 7\n",
      "knife chop: 2\n",
      "knife lift: 2\n",
      "knife pass: 3\n",
      "knife peel: 3\n",
      "lightbulb pass: 3\n",
      "lightbulb screw: 3\n",
      "mouse lift: 6\n",
      "mouse pass: 7\n",
      "mouse use: 9\n",
      "mug drink: 16\n",
      "mug lift: 5\n",
      "mug offhand: 3\n",
      "mug pass: 4\n",
      "mug toast: 5\n",
      "phone call: 7\n",
      "phone lift: 5\n",
      "phone offhand: 2\n",
      "phone pass: 6\n",
      "piggybank lift: 5\n",
      "piggybank lift Retake: 2\n",
      "piggybank offhand: 1\n",
      "piggybank pass: 8\n",
      "piggybank pass Retake: 1\n",
      "piggybank use: 7\n",
      "pyramidlarge inspect: 8\n",
      "pyramidlarge lift: 4\n",
      "pyramidlarge offhand: 2\n",
      "pyramidlarge pass: 5\n",
      "pyramidlarge pass Retake: 1\n",
      "pyramidmedium inspect: 8\n",
      "pyramidmedium lift: 1\n",
      "pyramidmedium lift Retake: 1\n",
      "pyramidmedium offhand: 1\n",
      "pyramidmedium pass: 9\n",
      "pyramidsmall inspect: 3\n",
      "pyramidsmall pass: 3\n",
      "scissors offhand: 1\n",
      "scissors pass: 4\n",
      "scissors use: 4\n",
      "spherelarge inspect: 8\n",
      "spherelarge lift: 6\n",
      "spherelarge offhand: 1\n",
      "spherelarge pass: 4\n",
      "spheremedium inspect: 6\n",
      "spheremedium lift: 6\n",
      "spheremedium offhand: 1\n",
      "spheremedium pass: 7\n",
      "spheresmall inspect: 7\n",
      "spheresmall lift: 3\n",
      "spheresmall offhand: 1\n",
      "spheresmall pass: 6\n",
      "stamp lift: 7\n",
      "stamp offhand: 1\n",
      "stamp pass: 4\n",
      "stamp stamp: 9\n",
      "stanfordbunny inspect: 7\n",
      "stanfordbunny lift: 7\n",
      "stanfordbunny offhand: 1\n",
      "stanfordbunny pass: 9\n",
      "stapler lift: 5\n",
      "stapler offhand: 1\n",
      "stapler offhand Retake: 1\n",
      "stapler pass: 8\n",
      "stapler staple: 14\n",
      "teapot lift: 2\n",
      "teapot pass: 8\n",
      "teapot pour: 8\n",
      "toothbrush brush: 3\n",
      "toothbrush lift: 2\n",
      "toothbrush pass: 5\n",
      "toothpaste lift: 4\n",
      "toothpaste pass: 6\n",
      "toothpaste squeeze: 7\n",
      "toothpaste squeeze Retake: 1\n",
      "toruslarge inspect: 5\n",
      "toruslarge inspect Retake: 1\n",
      "toruslarge lift: 5\n",
      "toruslarge pass: 8\n",
      "torusmedium inspect: 6\n",
      "torusmedium lift: 3\n",
      "torusmedium offhand: 1\n",
      "torusmedium pass: 6\n",
      "torussmall inspect: 5\n",
      "torussmall lift: 4\n",
      "torussmall offhand: 1\n",
      "torussmall pass: 7\n",
      "train lift: 6\n",
      "train pass: 8\n",
      "train play: 5\n",
      "watch lift: 3\n",
      "watch offhand: 1\n",
      "watch pass: 7\n",
      "watch set: 9\n",
      "waterbottle drink: 7\n",
      "waterbottle lift: 4\n",
      "waterbottle open: 4\n",
      "waterbottle open Retake: 1\n",
      "waterbottle pass: 7\n",
      "waterbottle pour: 5\n",
      "waterbottle shake: 5\n",
      "wineglass drink: 14\n",
      "wineglass lift: 5\n",
      "wineglass offhand: 1\n",
      "wineglass pass: 9\n",
      "wineglass toast: 7\n"
     ]
    }
   ],
   "source": [
    "seq_type_count = info[\"seq_type_count\"]\n",
    "sorted_motions = sorted(seq_type_count.keys())\n",
    "for motion in sorted_motions:\n",
    "    print(f\"{motion}: {seq_type_count[motion]}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "airplane: 21\n",
      "alarmclock: 22\n",
      "apple: 26\n",
      "banana: 26\n",
      "binoculars: 17\n",
      "bowl: 26\n",
      "camera: 37\n",
      "cubesmall: 67\n",
      "cup: 33\n",
      "cylinderlarge: 66\n",
      "doorknob: 16\n",
      "duck: 18\n",
      "elephant: 21\n",
      "eyeglasses: 22\n",
      "flashlight: 20\n",
      "flute: 20\n",
      "fryingpan: 17\n",
      "gamecontroller: 20\n",
      "hammer: 28\n",
      "hand: 21\n",
      "headphones: 18\n",
      "knife: 10\n",
      "lightbulb: 6\n",
      "mouse: 22\n",
      "mug: 33\n",
      "phone: 20\n",
      "piggybank: 24\n",
      "pyramidlarge: 46\n",
      "scissors: 9\n",
      "spheremedium: 56\n",
      "stanfordbunny: 74\n",
      "teapot: 18\n",
      "toothpaste: 28\n",
      "toruslarge: 52\n",
      "train: 19\n",
      "waterbottle: 53\n",
      "wineglass: 36\n"
     ]
    }
   ],
   "source": [
    "obj_count = info[\"obj_count\"]\n",
    "for object_ in sorted(obj_count.keys()):\n",
    "    print(f\"{code_to_label[object_]}: {obj_count[object_]}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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rDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkaypHXZat26NpKSkPO0pKSlo3bq1JmoiIiIi0hi1w86RI0fw6tWrPO0ZGRk4fvy4RooiIiIi0hS9wnb8+++/pf9fu3YN8fHx0v2cnBxERUWhQoUKmq2OiIiIqJgKHXbq1q0LhUIBhUKR73CVsbExli5dqtHiiIiIiIqr0MNYcXFxuH37NoQQOHPmDOLi4qTbw4cPkZKSgv79+6u18GPHjqFjx45wcnKCQqHAzp07VaYLITB58mQ4OjrC2NgYfn5+iI2NVenz7NkzBAUFwcLCAlZWVhgwYABSU1PVqoOIiIjkq9Bhx8XFBa6urlAqlfDx8YGLi4t0c3R0hK6urtoLT0tLg5eXF5YvX57v9Llz52LJkiWIjIxEdHQ0TE1N4e/vj4yMDKlPUFAQrl69iv3792P37t04duwYBg0apHYtREREJE+FHsZ6U2xsLA4fPozExEQolUqVaZMnTy70fAICAhAQEJDvNCEEIiIi8M0336BTp04AgA0bNsDe3h47d+5Er169cP36dURFReHs2bPw8fEBACxduhSBgYGYP38+nJycivL0iIiISEbUDjurV6/GkCFDUL58eTg4OEChUEjTFAqFWmHnXeLi4hAfHw8/Pz+pzdLSEg0bNsSpU6fQq1cvnDp1ClZWVlLQAQA/Pz/o6OggOjoaXbp00UgtRERE9OFSO+zMnDkTs2bNwvjx40uiHknu2V729vYq7fb29tK0+Ph42NnZqUzX09ODtbW1ytlib8vMzERmZqZ0PyUlRVNlExERkZZR+zo7z58/R/fu3UuillITHh4OS0tL6ebs7FzWJREREVEJUTvsdO/eHX/++WdJ1KLCwcEBAJCQkKDSnpCQIE1zcHBAYmKiyvTs7Gw8e/ZM6pOfiRMnIjk5Wbo9ePBAw9UTERGRtlB7GKtq1aqYNGkSTp8+jdq1a0NfX19l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GN988w3S09Px2WefwcnJCYsXL9b4sJFSqYSPjw++/fZbAEC9evXwzz//IDIyEsHBwUWeb3h4OKZNm6apMomIiEiLFenU86CgIMTGxiI1NRXx8fH473//iwEDBmi6Njg6OsLT01OlzcPDA/fv3wcAODg4AAASEhJU+iQkJEjT8jNx4kQkJydLtwcPHmi4ciIiItIWau/ZefnyJYQQMDExgYmJCZ48eYKIiAh4enri448/1mhxTZo0QUxMjErbzZs34eLiAuD18UMODg44ePAg6tatC+D1kFR0dDSGDBlS4HwNDQ1haGio0VoL4jphT6ks5013Z7cv9WUWRWmvmw9lvRARkWapvWenU6dO2LBhAwAgKSkJDRo0wIIFC9CpUyesWLFCo8WNHj0ap0+fxrfffotbt25h8+bNWLVqFUJDQwEACoUCo0aNwsyZM/H777/jypUr6Nu3L5ycnNC5c2eN1kJEREQfJrXDzoULF9CsWTMAwNatW+Hg4IB79+5hw4YNWLJkiUaLq1+/Pnbs2IGffvoJtWrVwowZMxAREYGgoCCpz7hx4zB8+HAMGjQI9evXR2pqKqKiomBkZKTRWoiIiOjDpPYwVnp6OszNzQEAf/75J7p27QodHR00atRI+ukITerQoQM6dOhQ4HSFQoHp06dj+vTpGl82ERERffjU3rNTtWpV7Ny5Ew8ePMC+ffuk43QSExNhYWGh8QKJiIiIikPtsDN58mSMGTMGrq6uaNiwIXx9fQG83suT35WViYiIiMqS2sNYn376KZo2bYrHjx/Dy8tLam/Tpg26dOmi0eKIiIiIikvtsAO8vr7N29exadCggUYKIiIiItKkIl1UkIiIiOhDwbBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyVqSfiyAiIsqP64Q9pb7Mu7Pbl/oy6cPCPTtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGt6ZV2AOmbPno2JEydi5MiRiIiIAABkZGTgq6++ws8//4zMzEz4+/vju+++g729fdkWS0Qa5zphT6ku7+7s9qW6PCIqGR/Mnp2zZ89i5cqVqFOnjkr76NGjsWvXLmzZsgVHjx7Fo0eP0LVr1zKqkoiIiLTNBxF2UlNTERQUhNWrV6NcuXJSe3JyMr7//nssXLgQrVu3hre3N9auXYuTJ0/i9OnTZVgxERERaYsPIuyEhoaiffv28PPzU2k/f/48srKyVNpr1KiBSpUq4dSpU6VdJhEREWkhrT9m5+eff8aFCxdw9uzZPNPi4+NhYGAAKysrlXZ7e3vEx8cXOM/MzExkZmZK91NSUjRWLxEREWkXrd6z8+DBA4wcORKbNm2CkZGRxuYbHh4OS0tL6ebs7KyxeRMREZF20eqwc/78eSQmJuKjjz6Cnp4e9PT0cPToUSxZsgR6enqwt7fHq1evkJSUpPK4hIQEODg4FDjfiRMnIjk5Wbo9ePCghJ8JERERlRWtHsZq06YNrly5otIWEhKCGjVqYPz48XB2doa+vj4OHjyIbt26AQBiYmJw//59+Pr6FjhfQ0NDGBoalmjtREREpB20OuyYm5ujVq1aKm2mpqawsbGR2gcMGICwsDBYW1vDwsICw4cPh6+vLxo1alQWJRMREZGW0eqwUxiLFi2Cjo4OunXrpnJRQSIiIiLgAww7R44cUblvZGSE5cuXY/ny5WVTEBEREWk1rT5AmYiIiKi4GHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1vTKugAiIiIqXa4T9pTq8u7Obl+qy3sb9+wQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkaxpfdgJDw9H/fr1YW5uDjs7O3Tu3BkxMTEqfTIyMhAaGgobGxuYmZmhW7duSEhIKKOKiYiISJtofdg5evQoQkNDcfr0aezfvx9ZWVn4+OOPkZaWJvUZPXo0du3ahS1btuDo0aN49OgRunbtWoZVExERkbbQ+p+LiIqKUrm/bt062NnZ4fz582jevDmSk5Px/fffY/PmzWjdujUAYO3atfDw8MDp06fRqFGjsiibqMj+1y7jTkRU0rR+z87bkpOTAQDW1tYAgPPnzyMrKwt+fn5Snxo1aqBSpUo4depUmdRIRERE2kPr9+y8SalUYtSoUWjSpAlq1aoFAIiPj4eBgQGsrKxU+trb2yM+Pj7f+WRmZiIzM1O6n5KSUmI1ExERUdn6oPbshIaG4p9//sHPP/9crPmEh4fD0tJSujk7O2uoQiIiItI2H0zYGTZsGHbv3o3Dhw+jYsWKUruDgwNevXqFpKQklf4JCQlwcHDId14TJ05EcnKydHvw4EFJlk5ERERlSOvDjhACw4YNw44dO3Do0CG4ubmpTPf29oa+vj4OHjwotcXExOD+/fvw9fXNd56GhoawsLBQuREREZE8af0xO6Ghodi8eTN+++03mJubS8fhWFpawtjYGJaWlhgwYADCwsJgbW0NCwsLDB8+HL6+vjwTi4iIiLQ/7KxYsQIA0LJlS5X2tWvXol+/fgCARYsWQUdHB926dUNmZib8/f3x3XfflXKlREREpI20PuwIId7bx8jICMuXL8fy5ctLoSIiIiL6kGj9MTtERERExcGwQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLImm7CzfPlyuLq6wsjICA0bNsSZM2fKuiQiIiLSArIIO7/88gvCwsIwZcoUXLhwAV5eXvD390diYmJZl0ZERERlTBZhZ+HChRg4cCBCQkLg6emJyMhImJiY4Icffijr0oiIiKiMffBh59WrVzh//jz8/PykNh0dHfj5+eHUqVNlWBkRERFpA72yLqC4/v33X+Tk5MDe3l6l3d7eHjdu3Mj3MZmZmcjMzJTuJycnAwBSUlI0Xp8yM13j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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# show all as histogram\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.bar(range(len(emotions_count)), list(emotions_count.values()), align='center')\n",
    "plt.xticks(range(len(emotions_count)), list(emotions_count.keys()))\n",
    "# add title: GRAB training set emotion distribution\n",
    "plt.title(f\"GRAB training emotion distribution: {info['n_seq']} sequences\")\n",
    "# add axes\n",
    "plt.xlabel(\"emotions\")\n",
    "plt.ylabel(\"sequence count\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'sequence count')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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IqPFRIaIiIiMFhMZIiIiMlpMZIiIiMhoMZEhIiIio8VEhoiIiIwWExkiIiIyWoU+sy/Rq+JkckRE/11skSEiIiKjxUSGiIiIjBYTGSIiIjJaTGSIiIjIaLGzL9F/BDtFE9GbiC0yREREZLSYyBAREZHRYiJDRERERouJDBERERktJjJERERktJjIEBERkdFiIkNERERGi4kMERERGS0mMkRERGS0mMgQERGR0WIiQ0REREaLiQwREREZLSYyREREZLSYyBAREZHRYiJDRERERouJDBERERktJjJERERktJjIEBERkdFiIkNERERGi4kMERERGS0mMkRERGS0mMgQERGR0WIiQ0REREar0BOZO3fu4IMPPoCLiwusra1RuXJlnDp1SnlcRDB27Fh4enrC2toawcHBiI6OLsSIiYiIqKgo1ETm0aNHqF+/PszNzbF9+3ZcvHgRM2bMgJOTk1Ln66+/xty5c7Fo0SKcOHECtra2CAkJwfPnzwsxciIiIioKzApz49OmTYO3tzeioqKUMj8/P+X/IoLZs2fjyy+/RLt27QAAq1atgru7OzZv3oxu3bq99piJiIio6CjUFplffvkFtWrVQufOneHm5obq1avju+++Ux6PiYlBXFwcgoODlTIHBwfUqVMHx44d07rOlJQUJCYmqi1ERET0ZirURObGjRtYuHAhAgICsHPnTgwcOBBDhgzBypUrAQBxcXEAAHd3d7Xnubu7K49lFxkZCQcHB2Xx9vYu2J0gIiKiQlOoiUxGRgZq1KiBKVOmoHr16hgwYAD69++PRYsW5Xmdo0ePxuPHj5Xl9u3b+RgxERERFSWFmsh4enqiQoUKamXly5dHbGwsAMDDwwMAEB8fr1YnPj5eeSw7S0tL2Nvbqy1ERET0ZirURKZ+/fq4cuWKWtnVq1dRqlQpAC87/np4eGDPnj3K44mJiThx4gSCgoJea6xERERU9BTqqKWhQ4eiXr16mDJlCrp06YI//vgDS5YswZIlSwAAKpUKn376KSZNmoSAgAD4+flhzJgx8PLyQvv27QszdCIiIioCCjWReeutt7Bp0yaMHj0aEyZMgJ+fH2bPno0ePXoodT777DMkJSVhwIABSEhIQIMGDbBjxw5YWVkVYuRERERUFBRqIgMA7777Lt59912dj6tUKkyYMAETJkx4jVERERGRMSj0WxQQERER5RUTGSIiIjJaTGSIiIjIaDGRISIiIqPFRIaIiIiMFhMZIiIiMlpMZIiIiMhoMZEhIiIio8VEhoiIiIwWExkiIiIyWkxkiIiIyGgxkSEiIiKjVeg3jSQiKkp8R23Ltc7Nqa1fQyREpA+2yBAREZHRYiJDRERERouJDBERERktJjJERERktJjIEBERkdFiIkNERERGi4kMERERGS0mMkRERGS0mMgQERGR0WIiQ0REREaLiQwREREZLSYyREREZLSYyBAREZHR4t2viUgrfe4CDfBO0ERUuNgiQ0REREaLiQwREREZLSYyREREZLSYyBAREZHRYmdfIiIqUOw4TgWJLTJERERktJjIEBERkdFiIkNERERGi4kMERERGS0mMkRERGS0CjWR+eqrr6BSqdSWcuXKKY8/f/4cgwYNgouLC+zs7NCpUyfEx8cXYsRERERUlBR6i0zFihVx7949ZTl8+LDy2NChQ7F161b8/PPPOHDgAO7evYuOHTsWYrRERERUlBT6PDJmZmbw8PDQKH/8+DGWLVuGtWvXomnTpgCAqKgolC9fHsePH0fdunVfd6hERERUxBjcItO0aVMkJCRolCcmJioJhyGio6Ph5eWF0qVLo0ePHoiNjQUAnD59GmlpaQgODlbqlitXDj4+Pjh27JjO9aWkpCAxMVFtISIiojeTwYnM/v37kZqaqlH+/PlzHDp0yKB11alTBytWrMCOHTuwcOFCxMTEoGHDhnjy5Ani4uJgYWEBR0dHtee4u7sjLi5O5zojIyPh4OCgLN7e3gbFRERERMZD70tLFy5cUP5/8eJFtWQiPT0dO3bsQIkSJQzaeMuWLZX/V6lSBXXq1EGpUqXw008/wdra2qB1ZRo9ejQiIiKUvxMTE5nMEBERvaH0TmSqVaumjCzSdgnJ2toa33777SsF4+joiLJly+LatWt45513kJqaioSEBLVWmfj4eK19ajJZWlrC0tLyleIgIiIi46B3IhMTEwMRQenSpfHHH3/A1dVVeczCwgJubm4wNTV9pWCePn2K69evo2fPnqhZsybMzc2xZ88edOrUCQBw5coVxMbGIigo6JW2Q0RERG8GvROZUqVKAQAyMjLybePDhw9HmzZtUKpUKdy9exfjxo2DqakpunfvDgcHB4SFhSEiIgLOzs6wt7dHeHg4goKCOGKJiIiIAORx+HV0dDT2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/fvV/rayssL8+fMxf/78V1ovERERvZkMbpFRqVR48uSJRvnjx4+VWX6JiIiIXgeDE5lGjRohMjJSLWlJT09HZGQkGjRokK/BEREREeXE4EtL06ZNQ6NGjRAYGIiGDRsCAA4dOoTExETs3bs33wMkIiIi0sXgFpkKFSrgwoUL6NKlC+7fv48nT56gV69euHz5ssYoJCIiIqKClKd5ZLy8vDBlypT8joWIiIjIIHlKZBISEvDHH3/g/v37yMjIUHusV69e+RIYERERUW4MTmS2bt2KHj164OnTp7C3t4dKpVIeU6lUTGSIiIjotTG4j8ywYcPQt29fPH36FAkJCXj06JGy/PvvvwURIxEREZFWBrfI3LlzB0OGDFFuTUBFi++obXrVuzm1dQFHQkREVPAMbpEJCQnBqVOnCiIWIiIiIoMY3CLTunVrjBgxAhcvXkTlypVhbm6u9njbtm3zLTgiIiKinBicyPTv3x8AMGHCBI3HVCoVb1NAREREr43BiUz24dZk3NinhoiIjJnBfWSyev78eX7FQURERGQwgxOZ9PR0TJw4ESVKlICdnR1u3LgBABgzZgyWLVuW7wESERER6WJwIjN58mSsWLECX3/9NSwsLJTySpUqYenSpfkaHBEREVFODE5kVq1ahSVLlqBHjx4wNTVVyqtWrYrLly/na3BEREREOTE4kblz5w78/f01yjMyMpCWlpYvQRERERHpw+BEpkKFCjh06JBG+fr161G9evV8CYqIiIhIHwYPvx47dixCQ0Nx584dZGRkYOPGjbhy5QpWrVqFX3/9tSBiJCIiItLK4BaZdu3aYevWrfj9999ha2uLsWPH4tKlS9i6dSveeeedgoiRiIiISCuDW2QAoGHDhti9e3d+x0JERERkkFeaEI+IiIioMBncImNiYgKVSqXzcd5riYiIiF4XgxOZTZs2qf2dlpaGs2fPYuXKlRg/fny+BUZERESUG4MTmXbt2mmUvffee6hYsSJ+/PFHhIWF5UtgRERERLnJtz4ydevWxZ49e/JrdURERES5ytOopeyePXuGuXPnokSJEvmxOqPhO2qbXvVuTm1dwJEQGSd+hojoVRmcyDg5Oal19hURPHnyBDY2Nvj+++/zNTgiIiKinBicyMyaNUstkTExMYGrqyvq1KkDJyenfA2OiIiIKCcGJzK9e/cugDCIiIiIDGdw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p1y5cvDx8cGxY8e0riMlJQWJiYlqCxEREb2ZisyEeBkZGfj0009Rv359VKpUCQAQFxcHCwsLODo6qtV1d3dHXFyc1vVERkZi/PjxBR3uf9p/sZ/Cf3Gf6b+D7+/c8TUquopMi8ygQYPw119/Yd26da+0ntGjR+Px48fKcvv27XyKkIiIiIqaItEiM3jwYPz66684ePAgSpYsqZR7eHggNTUVCQkJaq0y8fHx8PDw0LouS0tLWFpaFnTIREREVAQUaouMiGDw4MHYtGkT9u7dCz8/P7XHa9asCXNzc+zZs0cpu3LlCmJjYxEUFPS6wyUiIqIiplBbZAYNGoS1a9diy5YtKFasmNLvxcHBAdbW1nBwcEBYWBgiIiLg7OwMe3t7hIeHIygoiCOWiIiIqHATmYULFwIAmjRpolYeFRWF3r17AwBmzZoFExMTdOrUSW1CPKL/OnY+JCIq5ERGRHKtY2Vlhfnz52P+/PmvISIiIiIyJkVm1BIRERGRoZjIEBERkdFiIkNERERGq0jMI0OU1ZvQifVN2AeiwqTPZ4ifHwLYIkNERERGjIkMERERGS0mMkRERGS0mMgQERGR0WJnXypw7PhK9GbhZ5qKErbIEBERkdFiIkNERERGi4kMERERGS32kSGiNxb7chC9+dgiQ0REREaLiQwREREZLSYyREREZLSYyBAREZHRYiJDRERERouJDBERERktJjJERERktJjIEBERkdFiIkNERERGi4kMERERGS0mMkRERGS0mMgQERGR0WIiQ0REREaLiQwREREZLSYyREREZLSYyBAREZHRYiJDRERERouJDBERERktJjJERERktJjIEBERkdFiIkNERERGi4kMERERGS0mMkRERGS0mMgQERGR0SrURObgwYNo06YNvLy8oFKpsHnzZrXHRQRjx46Fp6cnrK2tERwcjOjo6MIJloiIiIqcQk1kkpKSULVqVcyfP1/r419//TXmzp2LRYsW4cSJE7C1tUVISAieP3/+miMlIiKiosisMDfesmVLtGzZUutjIoLZs2fjyy+/RLt27QAAq1atgru7OzZv3oxu3bq9zlCJiIioCCqyfWRiYmIQFxeH4OBgpczBwQF16tTBsWPHdD4vJSUFiYmJagsRERG9mQq1RSYncXFxAAB3d3e1cnd3d+UxbSIjIzF+/PgCjY2IqCjzHbUt1zo3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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# grab training object distribution\n",
    "plt.bar(range(len(obj_count)), list(obj_count.values()), align='center')\n",
    "plt.xticks(range(len(obj_count)), list(obj_count.keys()))\n",
    "plt.xticks(rotation=90)\n",
    "# add title: GRAB training set object distribution\n",
    "plt.title(f\"GRAB training object distribution: {info['n_seq']} sequences\")\n",
    "tot_seqs = 0\n",
    "for obj in obj_count.keys():\n",
    "    tot_seqs += obj_count[obj]\n",
    "plt.xlabel(\"object\")\n",
    "plt.ylabel(\"sequence count\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mug -> mug\n",
      "air -> airplane\n",
      "lig -> lightbulb\n",
      "cam -> camera\n",
      "win -> wineglass\n",
      "pho -> phone\n",
      "bin -> binoculars\n",
      "tea -> teapot\n",
      "cub -> cubesmall\n",
      "ele -> elephant\n",
      "gam -> gamecontroller\n",
      "duc -> duck\n",
      "sta -> stanfordbunny\n",
      "tra -> train\n",
      "cyl -> cylinderlarge\n",
      "wat -> waterbottle\n",
      "sci -> scissors\n",
      "cup -> cup\n",
      "han -> hand\n",
      "doo -> doorknob\n",
      "sph -> spheremedium\n",
      "ala -> alarmclock\n",
      "mou -> mouse\n",
      "app -> apple\n",
      "kni -> knife\n",
      "flu -> flute\n",
      "fry -> fryingpan\n",
      "tor -> toruslarge\n",
      "hea -> headphones\n",
      "pyr -> pyramidlarge\n",
      "too -> toothpaste\n",
      "fla -> flashlight\n",
      "ban -> banana\n",
      "bow -> bowl\n",
      "pig -> piggybank\n",
      "ham -> hammer\n",
      "eye -> eyeglasses\n"
     ]
    }
   ],
   "source": [
    "for obj in obj_count.keys():\n",
    "    print(f\"{obj} -> {code_to_label[obj]}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "emotions for airplane pass: ['fea', 'dis', 'sad', 'hap', 'ang']\n",
      "all emotions: dict_keys(['con', 'hap', 'bot', 'neu', 'int', 'ang', 'bor', 'dis', 'uns', 'fea', 'sad', 'thi', 'sur'])\n",
      "missing emotions: {'int', 'sur', 'bot', 'thi', 'bor', 'con', 'neu', 'uns'}\n"
     ]
    }
   ],
   "source": [
    "seq_type = \"airplane pass\"\n",
    "seq_emo_codes = [label_code(emo) for emo in seq_type_to_emotions[seq_type]]\n",
    "print(f\"emotions for {seq_type}: {seq_emo_codes}\")\n",
    "print(f\"all emotions: {emotions_count.keys()}\")\n",
    "print(f\"missing emotions: {set(emotions_count.keys()) - set(seq_emo_codes)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "seqs for emotion surprise\n",
      "s2/cubesmall_lift\n",
      "s2/stanfordbunny_lift\n",
      "s1/flashlight_pass_1\n",
      "s2/cubemedium_lift\n",
      "s2/elephant_pass_1\n",
      "s8/watch_lift\n",
      "s1/stamp_pass_1\n",
      "s7/cubesmall_pass_1\n",
      "s9/apple_pass_1\n",
      "s1/elephant_inspect_1\n",
      "s7/hand_pass_1\n",
      "s2/cylindermedium_lift\n",
      "s1/hammer_pass_1\n",
      "s6/phone_call_1\n",
      "s4/bowl_pass_1\n",
      "s1/phone_offhand_1\n",
      "s5/gamecontroller_play_1\n",
      "s5/apple_pass_1\n",
      "s6/hammer_use_1\n",
      "s9/toothbrush_pass_1\n",
      "s8/hand_inspect_1\n",
      "s1/headphones_pass_1\n",
      "s9/spheresmall_inspect_1\n",
      "s10/bowl_pass_1\n",
      "s9/airplane_lift\n",
      "s8/mug_offhand_1\n"
     ]
    }
   ],
   "source": [
    "emo = \"surprise\"\n",
    "emo_code = label_code(emo)\n",
    "emotion_to_names = info[\"emotion_to_names\"]\n",
    "names = emotion_to_names[emo_code]\n",
    "print(f\"seqs for emotion {code_to_label[emo_code]}\")\n",
    "for name in names:\n",
    "    print(name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "arrays = names_to_arrays(data_dir, names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "calc stats for 26 arrays\n"
     ]
    }
   ],
   "source": [
    "print(f\"calc stats for {len(arrays)} arrays\")\n",
    "mean, std = calc_mean_stddev_pose(arrays)\n",
    "# add 1 dimension to mean and std\n",
    "mean = mean.reshape(1, -1)\n",
    "std = std.reshape(1, -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean shape (1, 212)\n",
      "std shape (1, 212)\n"
     ]
    }
   ],
   "source": [
    "print(f\"mean shape {mean.shape}\")\n",
    "print(f\"std shape {std.shape}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "surprise mean: tensor([[ 0.3944,  1.0355, -0.1104,  0.3438,  0.1835,  0.3515, -0.4112,  0.8183,\n",
      "         -0.3203, -0.0656, -0.2213, -0.1106, -0.5442,  0.4136,  0.1552,  0.0691,\n",
      "         -0.2591,  0.1572, -0.1857,  0.2525,  0.1290,  0.2594, -0.3789,  0.0457,\n",
      "         -0.0049, -0.1438, -0.0413, -0.1620, -0.3905, -0.2516, -0.0828,  0.0523,\n",
      "          0.4467, -0.4080,  0.1744, -0.1148, -0.2176,  0.0395,  0.1339,  0.3428,\n",
      "          0.2916, -0.1423, -0.0314, -0.0233, -0.0612,  0.0477,  0.0232,  0.2205,\n",
      "         -0.0019,  0.1335]])\n",
      "surprise std: tensor([[0.7210, 0.7371, 0.3311, 0.4672, 0.9656, 0.7212, 0.9995, 0.8425, 0.6267,\n",
      "         1.1531, 0.5747, 0.8608, 0.5243, 0.2150, 0.6206, 0.2514, 0.6583, 0.3428,\n",
      "         0.5910, 0.1835, 0.2937, 0.5265, 0.7656, 0.4151, 0.3056, 0.2745, 0.1566,\n",
      "         0.5495, 0.4626, 0.4047, 0.1767, 0.2355, 0.5954, 0.6374, 0.3063, 0.2315,\n",
      "         0.3174, 0.1950, 0.2760, 0.6069, 0.4781, 0.3419, 0.1015, 0.1178, 0.1603,\n",
      "         0.2853, 0.1881, 0.2943, 0.1791, 0.2315]])\n"
     ]
    }
   ],
   "source": [
    "mean_dict = motion_arr_to_dict(mean, shapes_dropped=True)\n",
    "std_dict = motion_arr_to_dict(std, shapes_dropped=True)\n",
    "print(f\"surprise mean: {mean_dict['face_expr']}\")\n",
    "print(f\"surprise std: {std_dict['face_expr']}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean: tensor([[ 0.9793,  1.1955, -0.1761,  0.2503, -0.0148, -0.1734, -0.0857,  0.2882,\n",
      "         -0.1658, -0.1143, -0.1749,  0.0256, -0.3031,  0.3240,  0.1928, -0.0123,\n",
      "         -0.4032,  0.0880, -0.1201,  0.2633,  0.1121,  0.1342, -0.0902,  0.0071,\n",
      "         -0.0969, -0.0379, -0.0360,  0.0097, -0.2914, -0.2203, -0.0764, -0.0385,\n",
      "          0.3104, -0.2582,  0.1217, -0.1046, -0.0752,  0.0608,  0.0820,  0.2003,\n",
      "          0.2053, -0.0535, -0.0106,  0.0088, -0.0766, -0.0099,  0.0547,  0.0924,\n",
      "          0.0387,  0.1299]])\n",
      "std: tensor([[1.0655, 1.0759, 0.4935, 0.4183, 0.7407, 0.6360, 0.9216, 0.6985, 0.6380,\n",
      "         0.9843, 0.5477, 0.6577, 0.4538, 0.2694, 0.5082, 0.2214, 0.4444, 0.2400,\n",
      "         0.4524, 0.1704, 0.2673, 0.3875, 0.5558, 0.3554, 0.2595, 0.2144, 0.1623,\n",
      "         0.4468, 0.3424, 0.2883, 0.1587, 0.1878, 0.4116, 0.4483, 0.1814, 0.1800,\n",
      "         0.2852, 0.1462, 0.2142, 0.4437, 0.3668, 0.2245, 0.1168, 0.1120, 0.1565,\n",
      "         0.2382, 0.1440, 0.2470, 0.1249, 0.1625]])\n"
     ]
    }
   ],
   "source": [
    "# load std.npy from data dir\n",
    "std_train = np.load(pjoin(data_dir, \"Std.npy\"))\n",
    "std_train = std_train.reshape(1, -1)\n",
    "mean_train = np.load(pjoin(data_dir, \"Mean.npy\"))\n",
    "mean_train = mean_train.reshape(1, -1)\n",
    "mean_train_dict = motion_arr_to_dict(mean_train, shapes_dropped=True)\n",
    "std_train_dict = motion_arr_to_dict(std_train, shapes_dropped=True)\n",
    "print(f\"mean: {mean_train_dict['face_expr']}\")\n",
    "print(f\"std: {std_train_dict['face_expr']}\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.7.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}