-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgen_annotations.py
More file actions
574 lines (562 loc) · 29.1 KB
/
Copy pathgen_annotations.py
File metadata and controls
574 lines (562 loc) · 29.1 KB
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
import json, csv, random
# ── question pool ─────────────────────────────────────────────────────────────
with open('/Users/tangxueying/Downloads/CGM-VQA-1/metadata/question_pool.csv') as f:
pool = list(csv.DictReader(f))
yn_qs = [q for q in pool if q['type'] == 'yes_no']
tmp_qs = [q for q in pool if q['type'] == 'temporal']
q_by_id = {q['question_id']: q for q in pool}
# ── per-graph ground-truth answers ────────────────────────────────────────────
graph_data = {
"G01": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("11:30","11:00","12:00"),"Q22":("11:00","10:30","11:30"),
"Q23":("10:30-13:00","10:30","13:00"),"Q24":("07:00","06:30","07:30"),
"Q25":(None,None,None),
"Q26":("10:00-11:30","10:00","11:30"),"Q27":("12:30-14:00","12:30","14:00"),
"Q28":("10:00-11:30","10:00","11:30"),"Q29":("12:00-15:00","12:00","15:00"),
"Q30":("07:00-09:00","07:00","09:00"),
"Q31":("10:30-11:30","10:30","11:30"),"Q32":("12:30-14:00","12:30","14:00"),
"Q33":("10:30-12:00","10:30","12:00"),"Q34":("12:00-13:30","12:00","13:30"),
"Q35":("10:30-12:00","10:30","12:00"),
"Q36":("10:30-13:00","10:30","13:00"),"Q37":(None,None,None),
"Q38":("06:00-10:00","06:00","10:00"),"Q39":("06:00-09:00","06:00","09:00"),
"Q40":("10:00-11:30","10:00","11:30"),
},
"G02": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("11:30","11:00","12:00"),"Q22":("11:00","10:30","11:30"),
"Q23":("11:00-14:00","11:00","14:00"),"Q24":("08:00","07:30","08:30"),
"Q25":(None,None,None),
"Q26":("10:30-11:30","10:30","11:30"),"Q27":("12:00-13:00","12:00","13:00"),
"Q28":("10:30-11:30","10:30","11:30"),"Q29":("14:00-17:00","14:00","17:00"),
"Q30":("07:00-10:00","07:00","10:00"),
"Q31":("10:30-11:30","10:30","11:30"),"Q32":("12:00-13:30","12:00","13:30"),
"Q33":("10:30-12:00","10:30","12:00"),"Q34":("12:00-13:00","12:00","13:00"),
"Q35":("13:00-14:00","13:00","14:00"),
"Q36":("11:00-14:00","11:00","14:00"),"Q37":(None,None,None),
"Q38":("07:00-10:30","07:00","10:30"),"Q39":("07:00-10:00","07:00","10:00"),
"Q40":("10:30-11:30","10:30","11:30"),
},
"G03": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"no","Q14":"no","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("11:30","11:00","12:00"),"Q22":("11:00","10:30","11:30"),
"Q23":("11:00-13:00","11:00","13:00"),"Q24":("07:30","07:00","08:00"),
"Q25":(None,None,None),
"Q26":("10:30-11:30","10:30","11:30"),"Q27":("12:30-14:00","12:30","14:00"),
"Q28":("14:30-15:30","14:30","15:30"),"Q29":("12:00-14:30","12:00","14:30"),
"Q30":("07:00-09:30","07:00","09:30"),
"Q31":("10:30-11:30","10:30","11:30"),"Q32":("12:30-14:00","12:30","14:00"),
"Q33":("14:30-15:30","14:30","15:30"),"Q34":("12:30-14:00","12:30","14:00"),
"Q35":("14:30-15:30","14:30","15:30"),
"Q36":("11:00-13:00","11:00","13:00"),"Q37":(None,None,None),
"Q38":("06:00-10:30","06:00","10:30"),"Q39":("06:00-09:00","06:00","09:00"),
"Q40":("10:30-11:30","10:30","11:30"),
},
"G04": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("12:30","12:00","13:00"),"Q22":("11:30","11:00","12:00"),
"Q23":("11:30-17:00","11:30","17:00"),"Q24":("08:00","07:30","08:30"),
"Q25":(None,None,None),
"Q26":("11:00-12:30","11:00","12:30"),"Q27":("13:30-15:30","13:30","15:30"),
"Q28":("11:00-12:30","11:00","12:30"),"Q29":("13:00-16:00","13:00","16:00"),
"Q30":("07:00-10:30","07:00","10:30"),
"Q31":("11:00-12:30","11:00","12:30"),"Q32":("13:30-15:30","13:30","15:30"),
"Q33":("11:00-12:30","11:00","12:30"),"Q34":("13:30-15:00","13:30","15:00"),
"Q35":("11:00-12:30","11:00","12:30"),
"Q36":("11:30-17:00","11:30","17:00"),"Q37":(None,None,None),
"Q38":("07:00-11:00","07:00","11:00"),"Q39":("07:00-10:30","07:00","10:30"),
"Q40":("11:00-12:30","11:00","12:30"),
},
"G05": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("12:30","12:00","13:00"),"Q22":("11:30","11:00","12:00"),
"Q23":("11:30-14:00","11:30","14:00"),"Q24":("08:30","08:00","09:00"),
"Q25":(None,None,None),
"Q26":("11:00-12:30","11:00","12:30"),"Q27":("13:00-15:00","13:00","15:00"),
"Q28":("11:00-12:30","11:00","12:30"),"Q29":("13:00-17:00","13:00","17:00"),
"Q30":("07:00-10:30","07:00","10:30"),
"Q31":("11:00-12:30","11:00","12:30"),"Q32":("13:00-15:00","13:00","15:00"),
"Q33":("11:00-12:30","11:00","12:30"),"Q34":("13:00-14:30","13:00","14:30"),
"Q35":("11:00-12:30","11:00","12:30"),
"Q36":("11:30-14:00","11:30","14:00"),"Q37":(None,None,None),
"Q38":("00:00-11:00","00:00","11:00"),"Q39":("07:00-10:30","07:00","10:30"),
"Q40":("11:00-12:30","11:00","12:30"),
},
"G06": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("16:45","16:30","17:00"),"Q22":("15:30","15:00","16:00"),
"Q23":("15:00-20:00","15:00","20:00"),"Q24":("08:00","07:30","08:30"),
"Q25":(None,None,None),
"Q26":("15:00-16:45","15:00","16:45"),"Q27":("17:30-19:00","17:30","19:00"),
"Q28":("15:00-16:45","15:00","16:45"),"Q29":("17:00-20:00","17:00","20:00"),
"Q30":("07:00-14:00","07:00","14:00"),
"Q31":("15:00-16:45","15:00","16:45"),"Q32":("17:30-19:00","17:30","19:00"),
"Q33":("15:00-16:45","15:00","16:45"),"Q34":("17:30","17:00","18:00"),
"Q35":("15:00-16:45","15:00","16:45"),
"Q36":("15:00-20:00","15:00","20:00"),"Q37":(None,None,None),
"Q38":("07:00-14:00","07:00","14:00"),"Q39":("07:00-13:00","07:00","13:00"),
"Q40":("15:00-16:45","15:00","16:45"),
},
"G07": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("18:15","18:00","18:30"),"Q22":("16:00","15:30","16:30"),
"Q23":("15:30-21:00","15:30","21:00"),"Q24":("09:00","08:30","09:30"),
"Q25":(None,None,None),
"Q26":("15:30-18:15","15:30","18:15"),"Q27":("19:00-21:00","19:00","21:00"),
"Q28":("15:30-18:15","15:30","18:15"),"Q29":("18:30-21:30","18:30","21:30"),
"Q30":("07:00-14:00","07:00","14:00"),
"Q31":("15:30-18:15","15:30","18:15"),"Q32":("19:00-21:00","19:00","21:00"),
"Q33":("15:30-18:15","15:30","18:15"),"Q34":("19:00","18:30","19:30"),
"Q35":("15:30-18:15","15:30","18:15"),
"Q36":("15:30-21:00","15:30","21:00"),"Q37":(None,None,None),
"Q38":("07:00-15:00","07:00","15:00"),"Q39":("07:00-14:00","07:00","14:00"),
"Q40":("15:30-18:15","15:30","18:15"),
},
"G08": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("17:00","16:30","17:30"),"Q22":("14:30","14:00","15:00"),
"Q23":("14:30-18:00","14:30","18:00"),"Q24":("08:30","08:00","09:00"),
"Q25":(None,None,None),
"Q26":("14:00-17:00","14:00","17:00"),"Q27":("17:30-19:00","17:30","19:00"),
"Q28":("14:00-17:00","14:00","17:00"),"Q29":("17:00-19:30","17:00","19:30"),
"Q30":("07:00-13:30","07:00","13:30"),
"Q31":("14:00-17:00","14:00","17:00"),"Q32":("17:30-19:00","17:30","19:00"),
"Q33":("14:00-17:00","14:00","17:00"),"Q34":("17:30","17:00","18:00"),
"Q35":("14:00-17:00","14:00","17:00"),
"Q36":("14:30-18:00","14:30","18:00"),"Q37":(None,None,None),
"Q38":("07:00-14:00","07:00","14:00"),"Q39":("07:00-13:30","07:00","13:30"),
"Q40":("14:00-17:00","14:00","17:00"),
},
"G09": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("15:00","14:30","15:30"),"Q22":("12:30","12:00","13:00"),
"Q23":("12:30-18:00","12:30","18:00"),"Q24":("08:00","07:30","08:30"),
"Q25":(None,None,None),
"Q26":("13:00-15:00","13:00","15:00"),"Q27":("15:30-17:30","15:30","17:30"),
"Q28":("13:00-15:00","13:00","15:00"),"Q29":("15:00-18:00","15:00","18:00"),
"Q30":("07:00-12:00","07:00","12:00"),
"Q31":("13:00-15:00","13:00","15:00"),"Q32":("15:30-17:30","15:30","17:30"),
"Q33":("13:00-15:00","13:00","15:00"),"Q34":("15:30","15:00","16:00"),
"Q35":("13:00-15:00","13:00","15:00"),
"Q36":("12:30-18:00","12:30","18:00"),"Q37":(None,None,None),
"Q38":("07:00-12:30","07:00","12:30"),"Q39":("07:00-12:00","07:00","12:00"),
"Q40":("13:00-15:00","13:00","15:00"),
},
"G10": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"yes","Q11":"no","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("13:30","13:00","14:00"),"Q22":("12:30","12:00","13:00"),
"Q23":("12:30-15:30","12:30","15:30"),"Q24":("11:15","11:00","11:30"),
"Q25":("11:00-11:30","11:00","11:30"),
"Q26":("12:00-13:30","12:00","13:30"),"Q27":("14:00-16:00","14:00","16:00"),
"Q28":("12:00-13:30","12:00","13:30"),"Q29":("14:00-16:30","14:00","16:30"),
"Q30":("07:00-11:00","07:00","11:00"),
"Q31":("12:00-13:30","12:00","13:30"),"Q32":("14:00-16:00","14:00","16:00"),
"Q33":("12:00-13:30","12:00","13:30"),"Q34":("14:00","13:30","14:30"),
"Q35":("12:00-13:30","12:00","13:30"),
"Q36":("12:30-15:30","12:30","15:30"),"Q37":("11:00-11:30","11:00","11:30"),
"Q38":("07:00-11:00","07:00","11:00"),"Q39":("07:00-11:00","07:00","11:00"),
"Q40":("12:00-13:30","12:00","13:30"),
},
"G11": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("20:30","20:00","21:00"),"Q22":("19:30","19:00","20:00"),
"Q23":("19:30-22:00","19:30","22:00"),"Q24":("07:30","07:00","08:00"),
"Q25":(None,None,None),
"Q26":("19:00-20:30","19:00","20:30"),"Q27":("21:00-22:30","21:00","22:30"),
"Q28":("19:00-20:30","19:00","20:30"),"Q29":("21:00-23:00","21:00","23:00"),
"Q30":("07:00-18:00","07:00","18:00"),
"Q31":("19:00-20:30","19:00","20:30"),"Q32":("21:00-22:30","21:00","22:30"),
"Q33":("19:00-20:30","19:00","20:30"),"Q34":("21:00","20:30","21:30"),
"Q35":("19:00-20:30","19:00","20:30"),
"Q36":("19:30-22:00","19:30","22:00"),"Q37":(None,None,None),
"Q38":("07:00-19:00","07:00","19:00"),"Q39":("07:00-18:00","07:00","18:00"),
"Q40":("19:00-20:30","19:00","20:30"),
},
"G12": {
"Q01":"no","Q02":"no","Q03":"no","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"no","Q11":"no","Q12":"no",
"Q13":"yes","Q14":"no","Q15":"no","Q16":"no","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("01:00","00:30","01:30"),"Q22":("00:30","00:00","01:00"),
"Q23":("00:30-02:30","00:30","02:30"),"Q24":("07:30","07:00","08:00"),
"Q25":(None,None,None),
"Q26":("00:00-01:00","00:00","01:00"),"Q27":("01:30-03:00","01:30","03:00"),
"Q28":("18:30-19:30","18:30","19:30"),"Q29":("01:00-03:00","01:00","03:00"),
"Q30":("07:00-17:00","07:00","17:00"),
"Q31":("00:00-01:00","00:00","01:00"),"Q32":("01:30-03:00","01:30","03:00"),
"Q33":("18:30-19:30","18:30","19:30"),"Q34":("01:30","01:00","02:00"),
"Q35":("18:30-19:30","18:30","19:30"),
"Q36":("00:30-02:30","00:30","02:30"),"Q37":(None,None,None),
"Q38":("07:00-17:00","07:00","17:00"),"Q39":("07:00-17:00","07:00","17:00"),
"Q40":("00:00-01:00","00:00","01:00"),
},
"G13": {
"Q01":"yes","Q02":"yes","Q03":"no","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"yes","Q11":"no","Q12":"yes",
"Q13":"no","Q14":"no","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("09:00","08:30","09:30"),"Q22":("08:30","08:00","09:00"),
"Q23":("08:30-10:30","08:30","10:30"),"Q24":("02:45","02:30","03:00"),
"Q25":("02:30-03:00","02:30","03:00"),
"Q26":("08:00-09:00","08:00","09:00"),"Q27":("09:30-11:00","09:30","11:00"),
"Q28":("14:30-15:30","14:30","15:30"),"Q29":("09:30-11:00","09:30","11:00"),
"Q30":("04:00-07:30","04:00","07:30"),
"Q31":("08:00-09:00","08:00","09:00"),"Q32":("09:30-11:00","09:30","11:00"),
"Q33":("14:30-15:30","14:30","15:30"),"Q34":("09:30","09:00","10:00"),
"Q35":("14:30-15:30","14:30","15:30"),
"Q36":("08:30-10:30","08:30","10:30"),"Q37":("02:30-03:00","02:30","03:00"),
"Q38":("04:00-08:00","04:00","08:00"),"Q39":("04:00-07:30","04:00","07:30"),
"Q40":("08:00-09:00","08:00","09:00"),
},
"G14": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("20:00","19:30","20:30"),"Q22":("09:00","08:30","09:30"),
"Q23":("19:00-21:30","19:00","21:30"),"Q24":("07:30","07:00","08:00"),
"Q25":(None,None,None),
"Q26":("08:30-09:30","08:30","09:30"),"Q27":("10:00-12:00","10:00","12:00"),
"Q28":("19:00-20:00","19:00","20:00"),"Q29":("09:30-12:00","09:30","12:00"),
"Q30":("13:00-18:30","13:00","18:30"),
"Q31":("08:30-09:30","08:30","09:30"),"Q32":("10:00-12:00","10:00","12:00"),
"Q33":("19:00-20:00","19:00","20:00"),"Q34":("10:00","09:30","10:30"),
"Q35":("19:00-20:00","19:00","20:00"),
"Q36":("19:00-21:30","19:00","21:30"),"Q37":(None,None,None),
"Q38":("13:00-18:30","13:00","18:30"),"Q39":("13:00-18:30","13:00","18:30"),
"Q40":("08:30-09:30","08:30","09:30"),
},
"G15": {
"Q01":"yes","Q02":"yes","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"yes","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("10:30","10:00","11:00"),"Q22":("10:00","09:30","10:30"),
"Q23":("10:00-22:00","10:00","22:00"),"Q24":("13:15","13:00","13:30"),
"Q25":("13:00-13:30","13:00","13:30"),
"Q26":("09:30-10:30","09:30","10:30"),"Q27":("11:00-13:00","11:00","13:00"),
"Q28":("16:00-17:30","16:00","17:30"),"Q29":("10:30-13:00","10:30","13:00"),
"Q30":("06:00-09:00","06:00","09:00"),
"Q31":("09:30-10:30","09:30","10:30"),"Q32":("11:00-13:00","11:00","13:00"),
"Q33":("16:00-17:30","16:00","17:30"),"Q34":("11:00","10:30","11:30"),
"Q35":("16:00-17:30","16:00","17:30"),
"Q36":("10:00-22:00","10:00","22:00"),"Q37":("13:00-13:30","13:00","13:30"),
"Q38":("06:00-09:30","06:00","09:30"),"Q39":("06:00-09:00","06:00","09:00"),
"Q40":("09:30-10:30","09:30","10:30"),
},
"G16": {
"Q01":"no","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"no","Q08":"yes","Q09":"no","Q10":"no","Q11":"yes","Q12":"no",
"Q13":"no","Q14":"yes","Q15":"no","Q16":"no","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("13:00","12:30","13:30"),"Q22":(None,None,None),
"Q23":(None,None,None),"Q24":("07:30","07:00","08:00"),
"Q25":(None,None,None),
"Q26":("12:00-13:00","12:00","13:00"),"Q27":("13:30-15:00","13:30","15:00"),
"Q28":("12:00-13:00","12:00","13:00"),"Q29":("13:00-16:00","13:00","16:00"),
"Q30":("07:00-11:30","07:00","11:30"),
"Q31":("12:00-13:00","12:00","13:00"),"Q32":("13:30-15:00","13:30","15:00"),
"Q33":("12:00-13:00","12:00","13:00"),"Q34":("13:30","13:00","14:00"),
"Q35":("12:00-13:00","12:00","13:00"),
"Q36":(None,None,None),"Q37":(None,None,None),
"Q38":("00:00-23:59","00:00","23:59"),"Q39":("07:00-11:30","07:00","11:30"),
"Q40":("12:00-13:00","12:00","13:00"),
},
"G17": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"yes","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("19:30","19:00","20:00"),"Q22":("12:00","11:30","12:30"),
"Q23":("12:00-14:00","12:00","14:00"),"Q24":("15:30","15:00","16:00"),
"Q25":("15:00-16:00","15:00","16:00"),
"Q26":("11:30-12:30","11:30","12:30"),"Q27":("13:00-15:30","13:00","15:30"),
"Q28":("19:00-19:30","19:00","19:30"),"Q29":("12:30-15:30","12:30","15:30"),
"Q30":("07:00-11:00","07:00","11:00"),
"Q31":("11:30-12:30","11:30","12:30"),"Q32":("13:00-15:30","13:00","15:30"),
"Q33":("19:00-19:30","19:00","19:30"),"Q34":("13:00","12:30","13:30"),
"Q35":("19:00-19:30","19:00","19:30"),
"Q36":("12:00-14:00","12:00","14:00"),"Q37":("15:00-16:00","15:00","16:00"),
"Q38":("07:00-11:00","07:00","11:00"),"Q39":("07:00-11:00","07:00","11:00"),
"Q40":("11:30-12:30","11:30","12:30"),
},
"G18": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("16:30","16:00","17:00"),"Q22":("15:30","15:00","16:00"),
"Q23":("15:30-18:30","15:30","18:30"),"Q24":("08:30","08:00","09:00"),
"Q25":(None,None,None),
"Q26":("15:00-16:30","15:00","16:30"),"Q27":("17:00-18:30","17:00","18:30"),
"Q28":("15:00-16:30","15:00","16:30"),"Q29":("17:00-19:00","17:00","19:00"),
"Q30":("07:00-14:30","07:00","14:30"),
"Q31":("15:00-16:30","15:00","16:30"),"Q32":("17:00-18:30","17:00","18:30"),
"Q33":("15:00-16:30","15:00","16:30"),"Q34":("17:00","16:30","17:30"),
"Q35":("15:00-16:30","15:00","16:30"),
"Q36":("15:30-18:30","15:30","18:30"),"Q37":(None,None,None),
"Q38":("07:00-15:00","07:00","15:00"),"Q39":("07:00-14:30","07:00","14:30"),
"Q40":("15:00-16:30","15:00","16:30"),
},
"G19": {
"Q01":"yes","Q02":"no","Q03":"no","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"yes","Q11":"no","Q12":"no",
"Q13":"no","Q14":"no","Q15":"no","Q16":"no","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("03:30","03:00","04:00"),"Q22":("02:30","02:00","03:00"),
"Q23":("02:30-05:00","02:30","05:00"),"Q24":("18:30","18:00","19:00"),
"Q25":("18:00-19:00","18:00","19:00"),
"Q26":("02:00-03:30","02:00","03:30"),"Q27":("04:00-05:30","04:00","05:30"),
"Q28":("02:00-03:30","02:00","03:30"),"Q29":("04:00-06:00","04:00","06:00"),
"Q30":("08:00-17:00","08:00","17:00"),
"Q31":("02:00-03:30","02:00","03:30"),"Q32":("04:00-05:30","04:00","05:30"),
"Q33":("02:00-03:30","02:00","03:30"),"Q34":("04:00","03:30","04:30"),
"Q35":("02:00-03:30","02:00","03:30"),
"Q36":("02:30-05:00","02:30","05:00"),"Q37":("18:00-19:00","18:00","19:00"),
"Q38":("08:00-17:00","08:00","17:00"),"Q39":("08:00-17:00","08:00","17:00"),
"Q40":("02:00-03:30","02:00","03:30"),
},
"G20": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"yes","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"yes","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("09:45","09:30","10:00"),"Q22":("09:00","08:30","09:30"),
"Q23":("09:00-11:00","09:00","11:00"),"Q24":("15:00","14:30","15:30"),
"Q25":("14:30-15:30","14:30","15:30"),
"Q26":("09:00-09:45","09:00","09:45"),"Q27":("10:00-11:30","10:00","11:30"),
"Q28":("09:00-09:45","09:00","09:45"),"Q29":("10:00-12:00","10:00","12:00"),
"Q30":("07:00-08:30","07:00","08:30"),
"Q31":("09:00-09:45","09:00","09:45"),"Q32":("10:00-11:30","10:00","11:30"),
"Q33":("09:00-09:45","09:00","09:45"),"Q34":("10:00","09:30","10:30"),
"Q35":("09:00-09:45","09:00","09:45"),
"Q36":("09:00-11:00","09:00","11:00"),"Q37":("14:30-15:30","14:30","15:30"),
"Q38":("07:00-08:30","07:00","08:30"),"Q39":("07:00-08:30","07:00","08:30"),
"Q40":("09:00-09:45","09:00","09:45"),
},
"G21": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"no","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("18:45","18:30","19:00"),"Q22":("17:30","17:00","18:00"),
"Q23":("17:30-20:30","17:30","20:30"),"Q24":("08:00","07:30","08:30"),
"Q25":(None,None,None),
"Q26":("17:30-18:45","17:30","18:45"),"Q27":("19:00-20:30","19:00","20:30"),
"Q28":("17:30-18:45","17:30","18:45"),"Q29":("19:00-21:00","19:00","21:00"),
"Q30":("07:00-16:30","07:00","16:30"),
"Q31":("17:30-18:45","17:30","18:45"),"Q32":("19:00-20:30","19:00","20:30"),
"Q33":("17:30-18:45","17:30","18:45"),"Q34":("19:00","18:30","19:30"),
"Q35":("17:30-18:45","17:30","18:45"),
"Q36":("17:30-20:30","17:30","20:30"),"Q37":(None,None,None),
"Q38":("07:00-17:00","07:00","17:00"),"Q39":("07:00-16:30","07:00","16:30"),
"Q40":("17:30-18:45","17:30","18:45"),
},
"G22": {
"Q01":"yes","Q02":"yes","Q03":"no","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"yes","Q11":"no","Q12":"yes",
"Q13":"yes","Q14":"no","Q15":"yes","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("22:00","21:30","22:30"),"Q22":("20:30","20:00","21:00"),
"Q23":("20:30-23:00","20:30","23:00"),"Q24":("06:30","06:00","07:00"),
"Q25":("06:00-07:00","06:00","07:00"),
"Q26":("20:00-22:00","20:00","22:00"),"Q27":("22:30-23:59","22:30","23:59"),
"Q28":("20:00-22:00","20:00","22:00"),"Q29":("22:00-23:59","22:00","23:59"),
"Q30":("08:00-19:00","08:00","19:00"),
"Q31":("20:00-22:00","20:00","22:00"),"Q32":("22:30-23:59","22:30","23:59"),
"Q33":("20:00-22:00","20:00","22:00"),"Q34":("22:30","22:00","23:00"),
"Q35":("20:00-22:00","20:00","22:00"),
"Q36":("20:30-23:00","20:30","23:00"),"Q37":("06:00-07:00","06:00","07:00"),
"Q38":("08:00-19:00","08:00","19:00"),"Q39":("08:00-19:00","08:00","19:00"),
"Q40":("20:00-22:00","20:00","22:00"),
},
"G23": {
"Q01":"no","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"no","Q08":"yes","Q09":"yes","Q10":"no","Q11":"yes","Q12":"no",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"no","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("00:15","00:00","00:30"),"Q22":("00:00","00:00","00:15"),
"Q23":("00:00-01:00","00:00","01:00"),"Q24":("09:00","08:30","09:30"),
"Q25":(None,None,None),
"Q26":("23:30-00:15","23:30","00:30"),"Q27":("00:30-02:00","00:30","02:00"),
"Q28":("23:30-00:15","23:30","00:30"),"Q29":("00:15-02:00","00:15","02:00"),
"Q30":("02:00-22:00","02:00","22:00"),
"Q31":("23:30-00:15","23:30","00:30"),"Q32":("00:30-02:00","00:30","02:00"),
"Q33":("23:30-00:15","23:30","00:30"),"Q34":("00:30","00:00","01:00"),
"Q35":("23:30-00:15","23:30","00:30"),
"Q36":("00:00-01:00","00:00","01:00"),"Q37":(None,None,None),
"Q38":("02:00-22:00","02:00","22:00"),"Q39":("02:00-22:00","02:00","22:00"),
"Q40":("23:30-00:15","23:30","00:30"),
},
"G24": {
"Q01":"yes","Q02":"no","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"yes","Q08":"yes","Q09":"yes","Q10":"no","Q11":"yes","Q12":"yes",
"Q13":"yes","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("13:00","12:30","13:30"),"Q22":("12:00","11:30","12:30"),
"Q23":("12:00-15:00","12:00","15:00"),"Q24":("08:00","07:30","08:30"),
"Q25":(None,None,None),
"Q26":("11:30-13:00","11:30","13:00"),"Q27":("13:30-15:30","13:30","15:30"),
"Q28":("11:30-13:00","11:30","13:00"),"Q29":("13:00-16:00","13:00","16:00"),
"Q30":("07:00-11:00","07:00","11:00"),
"Q31":("11:30-13:00","11:30","13:00"),"Q32":("13:30-15:30","13:30","15:30"),
"Q33":("11:30-13:00","11:30","13:00"),"Q34":("13:30","13:00","14:00"),
"Q35":("11:30-13:00","11:30","13:00"),
"Q36":("12:00-15:00","12:00","15:00"),"Q37":(None,None,None),
"Q38":("07:00-11:00","07:00","11:00"),"Q39":("07:00-11:00","07:00","11:00"),
"Q40":("11:30-13:00","11:30","13:00"),
},
"G25": {
"Q01":"yes","Q02":"yes","Q03":"yes","Q04":"no","Q05":"yes","Q06":"yes",
"Q07":"no","Q08":"yes","Q09":"yes","Q10":"yes","Q11":"yes","Q12":"no",
"Q13":"no","Q14":"yes","Q15":"no","Q16":"yes","Q17":"yes","Q18":"yes",
"Q19":"yes","Q20":"yes",
"Q21":("20:30","20:00","21:00"),"Q22":("20:00","19:30","20:30"),
"Q23":("20:00-21:30","20:00","21:30"),"Q24":("13:45","13:30","14:00"),
"Q25":("13:30-14:00","13:30","14:00"),
"Q26":("19:30-20:30","19:30","20:30"),"Q27":("21:00-22:00","21:00","22:00"),
"Q28":("19:30-20:30","19:30","20:30"),"Q29":("20:30-22:00","20:30","22:00"),
"Q30":("07:00-12:00","07:00","12:00"),
"Q31":("19:30-20:30","19:30","20:30"),"Q32":("21:00-22:00","21:00","22:00"),
"Q33":("19:30-20:30","19:30","20:30"),"Q34":("21:00","20:30","21:30"),
"Q35":("19:30-20:30","19:30","20:30"),
"Q36":("20:00-21:30","20:00","21:30"),"Q37":("13:30-14:00","13:30","14:00"),
"Q38":("07:00-12:00","07:00","12:00"),"Q39":("07:00-12:00","07:00","12:00"),
"Q40":("19:30-20:30","19:30","20:30"),
},
}
# ── evenly distribute questions across graphs ─────────────────────────────────
graphs = [f'G{i:02d}' for i in range(1, 26)]
def even_assign(q_list, per_graph, n_graphs, seed=42):
"""Distribute question IDs evenly; each graph gets per_graph distinct IDs."""
rng = random.Random(seed)
ids = [q['question_id'] for q in q_list]
total = per_graph * n_graphs
reps, rem = divmod(total, len(ids))
seq = ids * reps + rng.sample(ids, rem)
rng.shuffle(seq)
# ensure each graph gets per_graph *distinct* question IDs
result = {}
used = {g: set() for g in graphs}
pos = 0
for g in graphs:
assigned = []
attempts = list(seq[pos:]) + list(seq[:pos])
for qid in attempts:
if qid not in used[g] and len(assigned) < per_graph:
assigned.append(qid)
used[g].add(qid)
if len(assigned) == per_graph:
break
# fallback: fill from remaining ids if needed
if len(assigned) < per_graph:
for qid in ids:
if qid not in used[g]:
assigned.append(qid)
used[g].add(qid)
if len(assigned) == per_graph:
break
result[g] = assigned
pos = (pos + per_graph) % len(seq)
return result
yn_assign = even_assign(yn_qs, per_graph=2, n_graphs=25, seed=42)
tmp_assign = even_assign(tmp_qs, per_graph=2, n_graphs=25, seed=99)
# ── resolve N/A temporal questions (not applicable to graph) ──────────────────
def get_fallback_temporal(g, exclude, gd, tmp_qs):
"""Find a temporal QID applicable to graph g, not in exclude set."""
for q in tmp_qs:
qid = q['question_id']
if qid in exclude:
continue
raw = gd.get(qid)
if raw and isinstance(raw, tuple) and raw[0] is not None:
return qid
return None
# ── build samples ─────────────────────────────────────────────────────────────
samples = []
for g in graphs:
assigned_q = yn_assign[g] + tmp_assign[g]
# fix N/A temporals
fixed = []
assigned_set = set(assigned_q)
for qid in assigned_q:
q = q_by_id[qid]
if q['type'] == 'temporal':
raw = graph_data[g].get(qid)
if raw is None or raw[0] is None:
fb = get_fallback_temporal(g, assigned_set, graph_data[g], tmp_qs)
if fb:
assigned_set.discard(qid)
assigned_set.add(fb)
qid = fb
fixed.append(qid)
assigned_q = fixed
for qid in assigned_q:
q = q_by_id[qid]
qtype = q['type']
raw = graph_data[g][qid]
if qtype == 'yes_no':
ans, t_s, t_e = raw, None, None
else:
ans, t_s, t_e = raw if raw[0] else ("N/A", None, None)
samples.append({
"graph_id": g,
"question_id": qid,
"question": q['question'],
"task_type": qtype,
"answer": ans,
"t_start": t_s,
"t_end": t_e,
})
# renumber with sample_id
final = []
for i, s in enumerate(samples, 1):
row = {"sample_id": f"S{i:03d}"}
row.update(s)
final.append(row)
samples = final
out = '/Users/tangxueying/Downloads/CGM-VQA-1/annotation/annotations.json'
with open(out, 'w') as f:
json.dump(samples, f, indent=2, ensure_ascii=False)
from collections import Counter
q_use = Counter(s['question_id'] for s in samples)
print(f"Total samples: {len(samples)}")
print(f"yes_no: {sum(1 for s in samples if s['task_type']=='yes_no')}")
print(f"temporal: {sum(1 for s in samples if s['task_type']=='temporal')}")
print(f"N/A answers: {sum(1 for s in samples if s['answer']=='N/A')}")
print(f"Questions used: {len(q_use)} unique")
print("Min uses:", min(q_use.values()), "Max uses:", max(q_use.values()))
print("Usage:", dict(sorted(q_use.items())))