lsnu commited on
Commit
7f173cd
·
verified ·
1 Parent(s): ec51b6b

Add iter22 pregrasp repair reruns and updated benchmark code

Browse files

Upload the repaired oven metric code, refreshed README, and iter22 episode 0/1 dense outputs with visualization GIF suites.

Files changed (31) hide show
  1. .gitattributes +6 -0
  2. README.md +33 -2
  3. artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.dense.csv +330 -0
  4. artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.keyframes.csv +15 -0
  5. artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.metrics.json +53 -0
  6. artifacts/results/metric_iter22_ep0_pregrasp_repair/summary.json +106 -0
  7. artifacts/results/metric_iter22_ep0_pregrasp_repair/templates.json +243 -0
  8. artifacts/results/metric_iter22_ep0_pregrasp_repair/templates.pkl +3 -0
  9. artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/README.md +13 -0
  10. artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_all_metrics.gif +3 -0
  11. artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_path_quality_focus.gif +3 -0
  12. artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_visibility_focus.gif +3 -0
  13. artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.dense.csv +313 -0
  14. artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.keyframes.csv +15 -0
  15. artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.metrics.json +53 -0
  16. artifacts/results/metric_iter22_ep1_pregrasp_repair/summary.json +106 -0
  17. artifacts/results/metric_iter22_ep1_pregrasp_repair/templates.json +223 -0
  18. artifacts/results/metric_iter22_ep1_pregrasp_repair/templates.pkl +3 -0
  19. artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/README.md +13 -0
  20. artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_all_metrics.gif +3 -0
  21. artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_path_quality_focus.gif +3 -0
  22. artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_visibility_focus.gif +3 -0
  23. code/rr_label_study/oven_study.py +530 -150
  24. code/scripts/launch_parallel_oven_label_study.py +20 -3
  25. code/scripts/recompute_oven_episode_parallel.py +267 -0
  26. code/scripts/recompute_oven_pregrasp_parallel.py +282 -0
  27. code/scripts/recompute_oven_visibility_pregrasp.py +147 -0
  28. code/scripts/render_oven_metric_frame.py +41 -39
  29. code/scripts/render_oven_metric_gifs.py +44 -9
  30. code/scripts/run_oven_frame_batch.py +12 -2
  31. code/scripts/run_oven_pregrasp_batch.py +94 -0
.gitattributes CHANGED
@@ -854,3 +854,9 @@ artifacts/results/metric_iter19_ep0_independent/visualizations/frames/visibility
854
  artifacts/results/metric_iter19_ep1_independent/visualizations/episode1_all_metrics.gif filter=lfs diff=lfs merge=lfs -text
855
  artifacts/results/metric_iter19_ep1_independent/visualizations/episode1_path_quality_focus.gif filter=lfs diff=lfs merge=lfs -text
856
  artifacts/results/metric_iter19_ep1_independent/visualizations/episode1_visibility_focus.gif filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
854
  artifacts/results/metric_iter19_ep1_independent/visualizations/episode1_all_metrics.gif filter=lfs diff=lfs merge=lfs -text
855
  artifacts/results/metric_iter19_ep1_independent/visualizations/episode1_path_quality_focus.gif filter=lfs diff=lfs merge=lfs -text
856
  artifacts/results/metric_iter19_ep1_independent/visualizations/episode1_visibility_focus.gif filter=lfs diff=lfs merge=lfs -text
857
+ artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_all_metrics.gif filter=lfs diff=lfs merge=lfs -text
858
+ artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_path_quality_focus.gif filter=lfs diff=lfs merge=lfs -text
859
+ artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_visibility_focus.gif filter=lfs diff=lfs merge=lfs -text
860
+ artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_all_metrics.gif filter=lfs diff=lfs merge=lfs -text
861
+ artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_path_quality_focus.gif filter=lfs diff=lfs merge=lfs -text
862
+ artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_visibility_focus.gif filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -14,7 +14,9 @@ This is still a label-validation repository, not a policy repository. No `pi0.5`
14
 
15
  ## Current Status
16
 
17
- The latest work in this upload fixes the main simulator-state bugs that were still contaminating the oven metrics:
 
 
18
 
19
  1. The reveal-to-retrieve transition used to occur too late, effectively at grasp time.
20
  2. The visibility metric used to drop to zero around frame 232 even when the tray grasp region was clearly visible in `wrist_left`.
@@ -38,7 +40,17 @@ The current code addresses those issues by:
38
  - sampling intervention states earlier in the reveal phase so pre-ready extract checks are not contaminated by borderline near-ready states
39
  - confirming extraction feasibility with repeated planner checks inside the extract oracle so one lucky planner sample is less likely to flip a label
40
 
41
- The old `iter4_*` outputs are still useful historical checkpoints, but the current authoritative path is the new independent-replay episode-0 rerun under `artifacts/results/oven_episode0_iter6_independent_full/`.
 
 
 
 
 
 
 
 
 
 
42
 
43
  ## What Is In This Upload
44
 
@@ -49,6 +61,8 @@ The old `iter4_*` outputs are still useful historical checkpoints, but the curre
49
  - Study runners and helpers.
50
  - `run_oven_label_study.py`: dense/keyframe study runner.
51
  - `launch_parallel_oven_label_study.py`: multi-display worker launcher.
 
 
52
  - `refresh_saved_oven_study.py`: recompute keyframes, per-episode metrics, intervention stats, and summary JSONs from saved dense CSVs after metric-code changes.
53
  - `run_oven_single_frame.py`: single-frame recomputation helper.
54
  - `run_oven_frame_batch.py`: new sequential batch recomputation helper used to avoid late-frame drift.
@@ -70,6 +84,8 @@ The old `iter4_*` outputs are still useful historical checkpoints, but the curre
70
  The latest code changes are in:
71
 
72
  - `code/rr_label_study/oven_study.py`
 
 
73
  - `code/scripts/repair_oven_episode_dense.py`
74
  - `code/scripts/run_oven_frame_batch.py`
75
  - `code/scripts/render_oven_metric_frame.py`
@@ -141,6 +157,21 @@ This fixed the major replay bug where post-oracle restores could leave the arm,
141
 
142
  The current trustworthy artifacts are:
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  - `artifacts/results/oven_episode0_iter4_templates/templates.json`
145
  - `artifacts/results/oven_episode0_iter4_templates/templates.pkl`
146
  - `artifacts/results/oven_episode0_iter4_batch/iter4_batch_comparison.csv`
 
14
 
15
  ## Current Status
16
 
17
+ The latest work in this upload is the `metric_iter22_*_pregrasp_repair` rerun for episodes 0 and 1.
18
+
19
+ That rerun fixes the main simulator-state bugs that were still contaminating the oven metrics:
20
 
21
  1. The reveal-to-retrieve transition used to occur too late, effectively at grasp time.
22
  2. The visibility metric used to drop to zero around frame 232 even when the tray grasp region was clearly visible in `wrist_left`.
 
40
  - sampling intervention states earlier in the reveal phase so pre-ready extract checks are not contaminated by borderline near-ready states
41
  - confirming extraction feasibility with repeated planner checks inside the extract oracle so one lucky planner sample is less likely to flip a label
42
 
43
+ The old `iter4_*`, `iter6_*`, and `iter19_*` outputs are still useful historical checkpoints, but the current authoritative outputs are:
44
+
45
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/`
46
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/`
47
+
48
+ The main improvement from the `iter22` rerun is that the reveal-to-retrieve signal now flips well before grasp:
49
+
50
+ - episode 0: `p_pre` first crosses at frame `138`, `phase_switch` at `143`, `y_retrieve` at `235`
51
+ - episode 1: `p_pre` first crosses at frame `135`, `phase_switch` at `135`, `y_retrieve` at `228`
52
+
53
+ The main remaining limitation is `p_pre` flicker after the first crossing, especially on episode 0. The current repo state should therefore be treated as a repaired benchmark snapshot, not the final metric design.
54
 
55
  ## What Is In This Upload
56
 
 
61
  - Study runners and helpers.
62
  - `run_oven_label_study.py`: dense/keyframe study runner.
63
  - `launch_parallel_oven_label_study.py`: multi-display worker launcher.
64
+ - `recompute_oven_pregrasp_parallel.py`: targeted dense rerun for repaired `p_pre` labels.
65
+ - `run_oven_pregrasp_batch.py`: sequential per-worker pregrasp recomputation helper.
66
  - `refresh_saved_oven_study.py`: recompute keyframes, per-episode metrics, intervention stats, and summary JSONs from saved dense CSVs after metric-code changes.
67
  - `run_oven_single_frame.py`: single-frame recomputation helper.
68
  - `run_oven_frame_batch.py`: new sequential batch recomputation helper used to avoid late-frame drift.
 
84
  The latest code changes are in:
85
 
86
  - `code/rr_label_study/oven_study.py`
87
+ - `code/scripts/recompute_oven_pregrasp_parallel.py`
88
+ - `code/scripts/run_oven_pregrasp_batch.py`
89
  - `code/scripts/repair_oven_episode_dense.py`
90
  - `code/scripts/run_oven_frame_batch.py`
91
  - `code/scripts/render_oven_metric_frame.py`
 
157
 
158
  The current trustworthy artifacts are:
159
 
160
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.dense.csv`
161
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.keyframes.csv`
162
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.metrics.json`
163
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/summary.json`
164
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_all_metrics.gif`
165
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_visibility_focus.gif`
166
+ - `artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_path_quality_focus.gif`
167
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.dense.csv`
168
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.keyframes.csv`
169
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.metrics.json`
170
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/summary.json`
171
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_all_metrics.gif`
172
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_visibility_focus.gif`
173
+ - `artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_path_quality_focus.gif`
174
+
175
  - `artifacts/results/oven_episode0_iter4_templates/templates.json`
176
  - `artifacts/results/oven_episode0_iter4_templates/templates.pkl`
177
  - `artifacts/results/oven_episode0_iter4_batch/iter4_batch_comparison.csv`
artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.dense.csv ADDED
@@ -0,0 +1,330 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_index,time_norm,door_angle,right_gripper_open,left_gripper_open,pregrasp_progress,pregrasp_distance,p_pre,p_ext,y_pre_raw,y_ext_raw,y_pre,y_ext,three_view_visibility,three_view_whole_tray_visibility,full_view_visibility,full_view_whole_tray_visibility,door_speed_abs,pregrasp_speed,y_pre_progress_seed,phase_score,approach_active,y_retrieve,y_ready,phase_switch
2
+ 0,0.0,1.5707963705062866,1.0,1.0,0.0,0.48866117061264636,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02671200499217541,0.0,0.0,0.0,0.0,0.0,0.0
3
+ 1,0.0030487804878048,1.5707963705062866,1.0,1.0,0.0,0.4873255703630376,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.027185417261638145,0.0,0.0,0.0,0.0,0.0,0.0
4
+ 2,0.0060975609756097,1.5707963705062866,1.0,1.0,0.0,0.48594262888648254,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02954320927901377,0.0,0.0,0.0,0.0,0.0,0.0
5
+ 3,0.0091463414634146,1.5707963705062866,1.0,1.0,0.0,0.4843712494351362,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.034670240116305706,0.0,0.0,0.0,0.0,0.0,0.0
6
+ 4,0.0121951219512195,1.5707963705062866,1.0,1.0,0.0,0.48247560487485197,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.04176586160028806,0.0,0.0,0.0,0.0,0.0,0.0
7
+ 5,0.0152439024390243,1.5707963705062866,1.0,1.0,0.0,0.4801946632751074,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05135028536207675,0.0,0.0,0.0,0.0,0.0,0.0
8
+ 6,0.0182926829268292,1.5707963705062866,1.0,1.0,0.0,0.4773405763386443,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05920717437781331,0.0,0.0,0.0,0.0,0.0,0.0
9
+ 7,0.0213414634146341,1.5707963705062866,1.0,1.0,0.0,0.47427394583732607,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06389467001490734,0.0,0.0,0.0,0.0,0.0,0.0
10
+ 8,0.024390243902439,1.5707963705062866,1.0,1.0,0.0,0.47095110933715356,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06718998456674063,0.0,0.0,0.0,0.0,0.0,0.0
11
+ 9,0.0274390243902439,1.5707963705062866,1.0,1.0,0.0,0.467554947380652,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07018989888683769,0.0,0.0,0.0,0.0,0.0,0.0
12
+ 10,0.0304878048780487,1.5707963705062866,1.0,1.0,0.0,0.4639321194484698,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0734944501898982,0.0,0.0,0.0,0.0,0.0,0.0
13
+ 11,0.0335365853658536,1.5707963705062866,1.0,1.0,0.0,0.4602055023616622,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07702609806440885,0.0,0.0,0.0,0.0,0.0,0.0
14
+ 12,0.0365853658536585,1.5707963705062866,1.0,1.0,0.0,0.4562295096420289,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08072991443775657,0.0,0.0,0.0,0.0,0.0,0.0
15
+ 13,0.0396341463414634,1.5707963705062866,1.0,1.0,0.0,0.45213251091788653,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08279491095181557,0.0,0.0,0.0,0.0,0.0,0.0
16
+ 14,0.0426829268292682,1.5707963705062866,1.0,1.0,0.0,0.44795001854684735,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.085940386733111,0.0,0.0,0.0,0.0,0.0,0.0
17
+ 15,0.0457317073170731,1.5707963705062866,1.0,1.0,0.0,0.44353847224457543,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0877961894939494,0.0,0.0,0.0,0.0,0.0,0.0
18
+ 16,0.048780487804878,1.5707963705062866,1.0,1.0,0.0,0.4391703995974524,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08918116225218264,0.0,0.0,0.0,0.0,0.0,0.0
19
+ 17,0.0518292682926829,1.5707963705062866,1.0,1.0,0.0,0.43462035601935717,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08995308283540948,0.0,0.0,0.0,0.0,0.0,0.0
20
+ 18,0.0548780487804878,1.5707963705062866,1.0,1.0,0.0,0.43017509131391146,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09062979548831063,0.0,0.0,0.0,0.0,0.0,0.0
21
+ 19,0.0579268292682926,1.5707963705062866,1.0,1.0,0.0,0.4255573764705261,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09381808565892491,0.0,0.0,0.0,0.0,0.0,0.0
22
+ 20,0.0609756097560975,1.5707963705062866,1.0,1.0,0.0,0.42079328274801897,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09624265065276527,0.0,0.0,0.0,0.0,0.0,0.0
23
+ 21,0.0640243902439024,1.5707963705062866,1.0,1.0,0.0,0.4159331114052496,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09599541961407998,0.0,0.0,0.0,0.0,0.0,0.0
24
+ 22,0.0670731707317073,1.5707963705062866,1.0,1.0,0.0,0.411193740786611,0.0,0.0007303555806477,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0946939128248514,0.0,0.0,0.0,0.0,0.0,0.0
25
+ 23,0.0701219512195122,1.5707963705062866,1.0,1.0,0.0,0.40646372012276444,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09424508556718392,0.0,0.0,0.0,0.0,0.0,0.0
26
+ 24,0.073170731707317,1.5707963705062866,1.0,1.0,0.0,0.4017692322298926,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09562118086540672,0.0,0.0,0.0,0.0,0.0,0.0
27
+ 25,0.0762195121951219,1.5707963705062866,1.0,1.0,0.0,0.39690160203622377,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09801305258705872,0.0,0.0,0.0,0.0,0.0,0.0
28
+ 26,0.0792682926829268,1.5707963705062866,1.0,1.0,0.0,0.3919679269711867,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09768696856880921,0.0,0.0,0.0,0.0,0.0,0.0
29
+ 27,0.0823170731707317,1.5707963705062866,1.0,1.0,0.0,0.38713290517934285,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.02845529708571881,0.0,0.0,0.0,0.0,0.0,0.0
30
+ 28,0.0853658536585365,1.5707963705062866,1.0,1.0,0.0,0.3948134566797586,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.022741140127123805,0.0,0.0,0.0,0.0,0.0,0.0
31
+ 29,0.0884146341463414,1.5707963705062866,1.0,1.0,0.0,0.3894070191920552,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1071456885689992,0.0,0.0,0.0,0.0,0.0,0.0
32
+ 30,0.0914634146341463,1.5707963705062866,1.0,1.0,0.0,0.38409888782285867,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10645471974937815,0.0,0.0,0.0,0.0,0.0,0.0
33
+ 31,0.0945121951219512,1.5707963705062866,1.0,1.0,0.0,0.3787615472171174,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10600513796768296,0.0,0.0,0.0,0.0,0.0,0.0
34
+ 32,0.0975609756097561,1.5707963705062866,1.0,1.0,0.0,0.3734983740260904,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10682980631697703,0.0,0.0,0.0,0.0,0.0,0.0
35
+ 33,0.1006097560975609,1.5707963705062866,1.0,1.0,0.0,0.3680785665854197,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10796475096877867,0.0,0.0,0.0,0.0,0.0,0.0
36
+ 34,0.1036585365853658,1.5707963705062866,1.0,1.0,0.0,0.3627018989292125,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10687276423838599,0.0,0.0,0.0,0.0,0.0,0.0
37
+ 35,0.1067073170731707,1.5707963705062866,1.0,1.0,0.0,0.3573912901615811,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10630399365677612,0.0,0.0,0.0,0.0,0.0,0.0
38
+ 36,0.1097560975609756,1.5707963705062866,1.0,1.0,0.0,0.3520714995635349,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10557099389240265,0.0,0.0,0.0,0.0,0.0,0.0
39
+ 37,0.1128048780487804,1.5707963705062866,1.0,1.0,0.0,0.34683419077234084,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1035775874589806,0.0,0.0,0.0,0.0,0.0,0.0
40
+ 38,0.1158536585365853,1.5707963705062866,1.0,1.0,0.0,0.34171374081763684,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1017213048659904,0.0,0.0,0.0,0.0,0.0,0.0
41
+ 39,0.1189024390243902,1.5707963705062866,1.0,1.0,0.0,0.3366620602857418,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10011006945653711,0.0,0.0,0.0,0.0,0.0,0.0
42
+ 40,0.1219512195121951,1.5707963705062866,1.0,1.0,0.0,0.3317027338719831,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09809246888054457,0.0,0.0,0.0,0.0,0.0,0.0
43
+ 41,0.125,1.5707963705062866,1.0,1.0,0.0,0.32685281339768735,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09531367143869263,0.0,0.0,0.0,0.0,0.0,0.0
44
+ 42,0.1280487804878048,1.5707963705062866,1.0,1.0,0.0,0.32217136672811386,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09427691692099005,0.0,0.0,0.0,0.0,0.0,0.0
45
+ 43,0.1310975609756097,1.5707963705062866,1.0,1.0,0.0,0.31742512170558834,0.3815942437808567,0.0007303555806477,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09234989923940229,0.0,0.3815942437808567,0.0,0.0,0.0,0.0
46
+ 44,0.1341463414634146,1.5707963705062866,1.0,1.0,0.0,0.31293637680417363,0.383287608310052,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08984714818350392,0.0,0.383287608310052,0.0,0.0,0.0,0.0
47
+ 45,0.1371951219512195,1.5707963705062866,1.0,1.0,0.0,0.30844040688723795,0.3851011790698915,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08819685559702417,0.0,0.3851011790698915,0.0,0.0,0.0,0.0
48
+ 46,0.1402439024390244,1.5707963705062866,1.0,1.0,0.0,0.3041166912444712,0.38685439951917233,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08601492644194353,0.0,0.38685439951917233,0.0,0.0,0.0,0.0
49
+ 47,0.1432926829268292,1.5707963705062866,1.0,1.0,0.0,0.2998389142430436,0.38868933672289024,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08299284609333712,0.0,0.38868933672289024,0.0,0.0,0.0,0.0
50
+ 48,0.1463414634146341,1.5707963705062866,1.0,1.0,0.0,0.2958174066351375,0.3905587610674007,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07888773870745658,0.0,0.3905587610674007,0.0,0.0,0.0,0.0
51
+ 49,0.149390243902439,1.5707963705062866,1.0,1.0,0.0,0.29195014037229794,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07596903907353847,0.0,0.0,0.0,0.0,0.0,0.0
52
+ 50,0.1524390243902439,1.5707963705062866,1.0,1.0,0.0,0.28822050272778366,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07408732717719746,0.0,0.0,0.0,0.0,0.0,0.0
53
+ 51,0.1554878048780487,1.5707963705062866,1.0,1.0,0.0,0.2845414076545782,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06980228976254388,0.0,0.0,0.0,0.0,0.0,0.0
54
+ 52,0.1585365853658536,1.5707963705062866,1.0,1.0,0.0,0.28124027375152927,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.060249841306827534,0.0,0.0,0.0,0.0,0.0,0.0
55
+ 53,0.1615853658536585,1.5707963705062866,1.0,1.0,0.0055805920641751605,0.27851642352389544,0.4013866531416635,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.048871975886605745,0.0,0.4013866531416635,0.0,0.0,0.0,0.0
56
+ 54,0.1646341463414634,1.5707963705062866,1.0,1.0,0.013304641674591666,0.2763530761628687,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0369757951356775,0.0,0.0,0.0,0.0,0.0,0.0
57
+ 55,0.1676829268292683,1.5707963705062866,1.0,1.0,0.018782488318331292,0.2748188440103277,0.4052120639725118,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.062456426326343295,0.0,0.4052120639725118,0.0,0.0,0.0,0.0
58
+ 56,0.1707317073170731,1.5707963705062866,1.0,1.0,0.0,0.282598718795503,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.07277803884467526,0.0,0.0,0.0,0.0,0.0,0.0
59
+ 57,0.173780487804878,1.5707963705062866,1.0,1.0,0.0,0.2820966478947952,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.013258400200638065,0.0,0.0,0.0,0.0,0.0,0.0
60
+ 58,0.1768292682926829,1.5707963705062866,1.0,1.0,0.0,0.2812728787754392,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.013363603010461134,0.0,0.0,0.0,0.0,0.0,0.0
61
+ 59,0.1798780487804878,1.5707963705062866,1.0,1.0,0.0,0.2807602875937491,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008972523016690381,0.0,0.0,0.0,0.0,0.0,0.0
62
+ 60,0.1829268292682926,1.5707963705062866,1.0,1.0,0.0,0.2803756264737702,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007919407578686477,0.0,0.0,0.0,0.0,0.0,0.0
63
+ 61,0.1859756097560975,1.5707963705062866,1.0,1.0,0.0003966207773271613,0.27996834683588046,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008864560822093304,0.0,0.0,0.0,0.0,0.0,0.0
64
+ 62,0.1890243902439024,1.5707963705062866,1.0,1.0,0.0021074800163471963,0.27948917039156085,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.009062064685298465,0.0,0.0,0.0,0.0,0.0,0.0
65
+ 63,0.1920731707317073,1.5707963705062866,1.0,1.0,0.00363215465115041,0.2790621403673506,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007923787266443383,0.0,0.0,0.0,0.0,0.0,0.0
66
+ 64,0.1951219512195122,1.5707963705062866,1.0,1.0,0.004936601436139942,0.2786967916649165,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00679463292253657,0.0,0.0,0.0,0.0,0.0,0.0
67
+ 65,0.198170731707317,1.5707963705062866,1.0,1.0,0.006058121151710116,0.27838267707509695,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0062105490452718515,0.0,0.0,0.0,0.0,0.0,0.0
68
+ 66,0.2012195121951219,1.5707963705062866,1.0,1.0,0.0071540256863991125,0.2780757367603893,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0063462572886197055,0.0,0.0,0.0,0.0,0.0,0.0
69
+ 67,0.2042682926829268,1.5707963705062866,1.0,1.0,0.008323986360496916,0.277748051346235,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007028960389635075,0.0,0.0,0.0,0.0,0.0,0.0
70
+ 68,0.2073170731707317,1.5707963705062866,1.0,1.0,0.009663656853144964,0.2773728407214258,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007795665161449694,0.0,0.0,0.0,0.0,0.0,0.0
71
+ 69,0.2103658536585365,1.5707963705062866,1.0,1.0,0.011107375571107192,0.27696848483009,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007381294695377183,0.0,0.0,0.0,0.0,0.0,0.0
72
+ 70,0.2134146341463414,1.5707963705062866,1.0,1.0,0.012299085998000003,0.2766347112518881,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006278192396910187,0.0,0.0,0.0,0.0,0.0,0.0
73
+ 71,0.2164634146341463,1.5707963705062866,1.0,1.0,0.013348951458589386,0.276340665590399,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006055382333344239,0.0,0.0,0.0,0.0,0.0,0.0
74
+ 72,0.2195121951219512,1.5707963705062866,1.0,1.0,0.014461109485665147,0.2760291730185537,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006097172687020147,0.0,0.0,0.0,0.0,0.0,0.0
75
+ 73,0.2225609756097561,1.5707963705062866,1.0,1.0,0.015525895654056376,0.275730948321697,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006366113092854397,0.0,0.0,0.0,0.0,0.0,0.0
76
+ 74,0.2256097560975609,1.5707963705062866,1.0,1.0,0.016734076643515006,0.27539256170926824,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006413983017332092,0.0,0.0,0.0,0.0,0.0,0.0
77
+ 75,0.2286585365853658,1.5707963705062866,1.0,1.0,0.01781595446032802,0.27508955001996377,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00638895836855613,0.0,0.0,0.0,0.0,0.0,0.0
78
+ 76,0.2317073170731707,1.5707963705062866,1.0,1.0,0.019015200457581982,0.2747536658724126,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006546211933932122,0.0,0.0,0.0,0.0,0.0,0.0
79
+ 77,0.2347560975609756,1.5707963705062866,1.0,1.0,0.020153204248432144,0.27443492882657056,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006281231738324844,0.0,0.0,0.0,0.0,0.0,0.0
80
+ 78,0.2378048780487804,1.5707963705062866,1.0,1.0,0.021257861591901905,0.27412554269858014,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006197708650109157,0.0,0.0,0.0,0.0,0.0,0.0
81
+ 79,0.2408536585365853,1.5707963705062866,1.0,1.0,0.022366044075049385,0.27381515796155964,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006494863083856828,0.0,0.0,0.0,0.0,0.0,0.0
82
+ 80,0.2439024390243902,1.5707963705062866,1.0,1.0,0.023576785449106463,0.27347605639019446,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006788511298812527,0.0,0.0,0.0,0.0,0.0,0.0
83
+ 81,0.2469512195121951,1.5707963705062866,1.0,1.0,0.02478984510908766,0.2731363068316784,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00646026944557343,0.0,0.0,0.0,0.0,0.0,0.0
84
+ 82,0.25,1.5707963705062866,1.0,1.0,0.025883370582444387,0.2728300294456371,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006147414838295617,0.0,0.0,0.0,0.0,0.0,0.0
85
+ 83,0.2530487804878049,1.5707963705062866,1.0,1.0,0.026984715750884458,0.2725215653478488,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.08972591921181827,0.0,0.0,0.0,0.0,0.0,0.0
86
+ 84,0.2560975609756097,1.5707963705062866,1.0,1.0,0.0,0.28180262136681894,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.08797042445437164,0.0,0.0,0.0,0.0,0.0,0.0
87
+ 85,0.2591463414634146,1.5707963705062866,1.0,1.0,0.0,0.281318607793286,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008645862377547053,0.0,0.0,0.0,0.0,0.0,0.0
88
+ 86,0.2621951219512195,1.5707963705062866,1.0,1.0,0.0,0.28093803512906423,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007283071161731103,0.0,0.0,0.0,0.0,0.0,0.0
89
+ 87,0.2652439024390244,1.5707963705062866,1.0,1.0,0.0,0.2805903006771129,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0072070595241335855,0.0,0.0,0.0,0.0,0.0,0.0
90
+ 88,0.2682926829268293,1.5707963705062866,1.0,1.0,0.0,0.2802173291766509,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0075265980515876185,0.0,0.0,0.0,0.0,0.0,0.0
91
+ 89,0.2713414634146341,1.5707963705062866,1.0,1.0,0.0008632953952139033,0.2798376408719541,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006828912950941901,0.0,0.0,0.0,0.0,0.0,0.0
92
+ 90,0.274390243902439,1.5707963705062866,1.0,1.0,0.0019458561688954212,0.2795344378815567,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.003962516784667969,0.011592762736775675,0.0,0.0,0.0,0.0,0.0,0.0
93
+ 91,0.2774390243902439,1.5704001188278198,0.0,1.0,0.005002393682502104,0.27867836459827655,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0020718574523947986,0.010448094188048596,0.0,0.0,0.0,0.0,0.0,0.0
94
+ 92,0.2804878048780488,1.571003556251526,0.0,1.0,0.0056762398369917255,0.2784896284627518,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.004620552062988281,0.005149346343001349,0.0,0.0,0.0,0.0,0.0,0.0
95
+ 93,0.2835365853658536,1.569938063621521,0.0,1.0,0.006840924530867487,0.2781634299639764,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.002665519714357689,0.006444191656841958,0.0,0.0,0.0,0.0,0.0,0.0
96
+ 94,0.2865853658536585,1.5707370042800903,0.0,1.0,0.00797710457928058,0.27784520929706763,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.004029273986816406,0.007303916492132356,0.0,0.0,0.0,0.0,0.0,0.0
97
+ 95,0.2896341463414634,1.5703409910202026,0.0,1.0,0.009448726481878555,0.2774330383147632,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.027899742126464844,0.007883823619288521,0.0,0.0,0.0,0.0,0.0,0.0
98
+ 96,0.2926829268292683,1.5679470300674438,0.0,1.0,0.010791957468468394,0.2770568269351388,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06757259368896484,0.007282345566493875,0.0,0.0,0.0,0.0,0.0,0.0
99
+ 97,0.2957317073170731,1.5635837316513062,0.0,1.0,0.012048826714373129,0.2767048037581138,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.11388063430786355,0.006261302188088069,0.0,0.0,0.0,0.0,0.0,0.0
100
+ 98,0.298780487804878,1.5565589666366575,0.0,1.0,0.013027502891578058,0.27643069671632997,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15336036682128906,0.006050276783361452,0.0,0.0,0.0,0.0,0.0,0.0
101
+ 99,0.3018292682926829,1.5482476949691772,0.0,1.0,0.01420902710233718,0.27609977607977765,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.211062431335447,0.007120719088848926,0.0,0.0,0.0,0.0,0.0,0.0
102
+ 100,0.3048780487804878,1.5354527235031128,0.0,1.0,0.015569895601938333,0.2757186248074451,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.21154403686523438,0.0065210045993874255,0.0,0.0,0.0,0.0,0.0,0.0
103
+ 101,0.3079268292682927,1.5270932912826538,0.0,1.0,0.016537296942836677,0.2754476756198389,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2286219596862793,0.006445903178523005,0.0,0.0,0.0,0.0,0.0,0.0
104
+ 102,0.3109756097560975,1.5125905275344849,0.0,1.0,0.017871351297651716,0.2750740344895928,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.39522886276245117,0.006973738129805729,0.0,0.0,0.0,0.0,0.0,0.0
105
+ 103,0.3140243902439024,1.4875704050064087,0.0,1.0,0.01902721152994047,0.27475030180685833,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5440235137939453,0.0065630531579258244,0.0,0.0,0.0,0.0,0.0,0.0
106
+ 104,0.3170731707317073,1.4581881761550903,0.0,1.0,0.020214634240117046,0.2744177291738002,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.0666666666666666,0.1512482355553056,0.6154441833496094,0.006361561425772266,0.0,0.0,0.0,0.0,0.0,0.0
107
+ 105,0.3201219512195122,1.4260259866714478,0.0,1.0,0.021298553538345977,0.2741141456642811,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.308641975308642,0.1773402644340301,0.6313633918762185,0.006003405669716133,0.0,0.0,0.0,0.0,0.0,0.0
108
+ 106,0.3231707317073171,1.3950518369674685,0.0,1.0,0.022358099911294893,0.2738173886068286,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.5265432098765432,0.3065480287662653,0.615389347076416,0.005925167348512228,0.0,0.0,0.0,0.0,0.0,0.0
109
+ 107,0.3262195121951219,1.3644870519638062,0.0,1.0,0.023414064731286932,0.2735216289294299,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.6139506172839506,0.3192331258010288,0.6273937225341819,0.006212216601517162,0.0,0.0,0.0,0.0,0.0,0.0
110
+ 108,0.3292682926829268,1.3323124647140503,0.0,1.0,0.024576119711751998,0.27319616694667687,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.6843621399176955,0.3488316855488101,0.655517578125,0.006631599493646112,0.0,0.0,0.0,0.0,0.0,0.0
111
+ 109,0.3323170731707317,1.2989352941513062,0.0,1.0,0.02578182968512588,0.27285846898006527,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.0,0.7450617283950618,0.3699735139400826,0.6099128723144531,0.006377359319511,0.0,0.0,0.0,0.0,0.0,0.0
112
+ 110,0.3353658536585366,1.271321177482605,0.0,1.0,0.026853089883484116,0.27255843101472577,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0,0.805761316872428,0.4080288050443728,0.6195783615112305,0.00668972327011963,0.0,0.0,0.0,0.0,0.0,0.0
113
+ 111,0.3384146341463415,1.236977458000183,0.0,1.0,0.028170339286580637,0.2721894966530533,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.0347222222222222,0.805761316872428,0.4285833604247764,0.6466507911682129,-0.08925504522335925,0.0,0.0,0.0,0.0,0.0,0.0
114
+ 112,0.3414634146341463,1.2066560983657837,0.0,1.0,0.0,0.2814839355370617,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.0,0.2708333333333332,0.805761316872428,0.5683543370115218,0.64453125,-0.0885188702103723,0.0,0.0,0.0,0.0,0.0,0.0
115
+ 113,0.3445121951219512,1.172524333000183,0.0,1.0,0.0,0.28104138367409054,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.4131944444444444,0.805761316872428,0.6526280140711771,0.6808161735534668,0.008191007963815888,0.0,0.0,0.0,0.0,0.0,0.0
116
+ 114,0.3475609756097561,1.138574481010437,0.0,1.0,0.0,0.2806648347406801,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.0,0.5694444444444444,0.805761316872428,0.7451235132829939,0.6544065475463867,0.00729062594386487,0.0,0.0,0.0,0.0,0.0,0.0
117
+ 115,0.3506097560975609,1.1070836782455444,0.0,1.0,0.0,0.28031232107970405,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.1111111111111111,0.6770833333333334,0.8273433927754915,0.8088426349622454,0.6624817848205589,0.007459117001215043,0.0,0.0,0.0,0.0,0.0,0.0
118
+ 116,0.3536585365853658,1.0723263025283811,0.0,1.0,0.0005730842719785523,0.2799189230405586,0.0,0.0007303555806477,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.6742048263549805,0.007989354441951813,0.0,0.0,0.0,0.0,0.0,0.0
119
+ 117,0.3567073170731707,1.0396631956100464,0.0,1.0,0.002021000886534452,0.27951338563550887,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.632023811340332,0.007597440449777504,0.0,0.0,0.0,0.0,0.0,0.0
120
+ 118,0.3597560975609756,1.009123921394348,0.0,1.0,0.0032856738418999276,0.27915917899558085,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.5926752090454102,0.0071489337395364005,0.0,0.0,0.0,0.0,0.0,0.0
121
+ 119,0.3628048780487805,0.9803956747055054,0.0,1.0,0.004573480096514371,0.27879849226155523,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.5756664276123036,0.007319775269011841,0.0,0.0,0.0,0.0,0.0,0.0
122
+ 120,0.3658536585365853,0.9515572786331176,0.0,1.0,0.0058991505198774385,0.27842720146867966,0.0,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.6015801429748535,0.007233963889057282,0.0,0.0,0.0,0.0,0.0,0.0
123
+ 121,0.3689024390243902,0.92023766040802,0.0,1.0,0.007156306034230786,0.2780750958726495,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.6073665618896473,0.007368909433627113,0.0,0.0,0.0,0.0,0.0,0.0
124
+ 122,0.3719512195121951,0.8908206224441528,0.0,1.0,0.00853013718479012,0.27769031052531695,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7743055555555556,0.9417283950617285,0.8663953900273758,0.5839872360229492,0.006711410862934586,0.0,0.0,0.0,0.0,0.0,0.0
125
+ 123,0.375,0.8618389368057251,0.0,1.0,0.009552546391256023,0.27740395478635604,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.6459903717041016,0.00589423214128193,0.0,0.0,0.0,0.0,0.0,0.0
126
+ 124,0.3780487804878049,0.8262215852737427,0.0,1.0,0.01063462329823961,0.27710088731118876,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7708333333333334,0.9417283950617285,0.8643399344893354,0.6747531890869141,0.006583758218040026,0.0,0.0,0.0,0.0,0.0,0.0
127
+ 125,0.3810975609756097,0.7943636178970337,0.0,1.0,0.011903221871425784,0.27674557896455204,0.0,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.57861328125,0.007128411015103198,0.0,0.0,0.0,0.0,0.0,0.0
128
+ 126,0.3841463414634146,0.7683602571487427,0.0,1.0,0.013179782812787089,0.27638804620967844,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.4708218574523926,0.006746398958327182,0.0,0.0,0.0,0.0,0.0,0.0
129
+ 127,0.3871951219512195,0.7472814321517944,0.0,1.0,0.01431198711796855,0.2760709390687193,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.33034324645996094,0.006689970325272632,0.0,0.0,0.0,0.0,0.0,0.0
130
+ 128,0.3902439024390244,0.7353259325027466,0.0,1.0,0.015568380399214043,0.2757190491771512,0.4452970281989904,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.1101231575012207,0.007420558376375341,0.0,0.4452970281989904,0.0,0.0,0.0,0.0
131
+ 129,0.3932926829268293,0.7362691164016724,0.0,1.0,0.01696143511829873,0.2753288832310818,0.445433079513517,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.07194042205810547,0.0098311529853512,0.0,0.445433079513517,0.0,0.0,0.0,0.0
132
+ 130,0.3963414634146341,0.728131890296936,1.0,1.0,0.01907851101545255,0.27473593387861606,0.44620877071596826,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.08178234100341797,0.007885939925640906,0.0,0.44620877071596826,0.0,0.0,0.0,0.0
133
+ 131,0.399390243902439,0.7280908823013306,1.0,1.0,0.01977704368453259,0.2745402892385177,0.4457009075298833,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.01112222671508789,0.003980682932955282,0.0,0.4457009075298833,0.0,0.0,0.0,0.0
134
+ 132,0.4024390243902439,0.7292441129684448,1.0,1.0,0.020499772720911857,0.27433786558532053,0.4447570287929474,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.014355182647705078,0.005093607297941838,0.0,0.4447570287929474,0.0,0.0,0.0,0.0
135
+ 133,0.4054878048780488,0.7295264005661011,1.0,1.0,0.02159566104957078,0.2740309285087235,0.44486238003214407,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.0020456314086914062,0.0048145560457341086,0.0,0.44486238003214407,0.0,0.0,0.0,0.0
136
+ 134,0.4085365853658536,0.7290395498275757,1.0,1.0,0.022218764871341667,0.2738564099807471,0.4460463589808891,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.0021123886108398438,0.004575861091365985,0.0,0.4460463589808891,0.0,0.0,0.0,0.0
137
+ 135,0.4115853658536585,0.7297376394271851,1.0,1.0,0.02322942617797019,0.2735733423995869,0.44512387977796575,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.005469322204589844,0.0064033185464074105,0.0,0.44512387977796575,0.0,0.0,0.0,0.0
138
+ 136,0.4146341463414634,0.7284926176071167,1.0,1.0,0.024505016007729807,0.2732160781261064,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.010268688201904297,0.0067414614460203914,0.0,0.0,0.0,0.0,0.0,0.0
139
+ 137,0.4176829268292683,0.7287107706069946,1.0,1.0,0.02563641597317734,0.2728991962549849,0.0,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7743055555555556,0.9417283950617285,0.8663953900273758,0.0008273124694824219,0.005758119497595859,0.0,0.0,0.0,0.0,0.0,0.0
140
+ 138,0.4207317073170731,0.7285753488540649,1.0,1.0,0.026560904143929087,0.2726402661763468,0.7232510379392315,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.011565685272216797,0.005939703578655142,0.0,0.7232510379392315,0.0,0.0,0.0,0.0
141
+ 139,0.423780487804878,0.727554202079773,1.0,1.0,0.02775713761818155,0.27230522589711936,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.020248889923095703,-0.09129204189806339,0.0,0.0,0.0,0.0,0.0,0.0
142
+ 140,0.4268292682926829,0.7306002378463745,1.0,1.0,0.0,0.28176947036615313,0.44417021311653826,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.005676746368408203,-0.0901712878912464,0.0,0.44417021311653826,0.0,0.0,0.0,0.0
143
+ 141,0.4298780487804878,0.7269865274429321,1.0,1.0,0.0,0.281322354686244,0.4443012489114744,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7708333333333334,0.9417283950617285,0.8643399344893354,0.036160945892333984,0.008587066151120593,0.0,0.4443012489114744,0.0,0.0,0.0,0.0
144
+ 142,0.4329268292682927,0.7269841432571411,1.0,1.0,0.0,0.28091076375104107,0.4444259818892848,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7743055555555556,0.9417283950617285,0.8663953900273758,0.03936290740966797,0.008430318360030942,0.0,0.4444259818892848,0.0,0.0,0.0,0.0
145
+ 143,0.4359756097560975,0.7309228181838989,1.0,1.0,0.0,0.2804793228502409,0.7219264371582491,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.009512901306152344,0.008119295002027571,0.0,0.7219264371582491,0.0,0.0,0.0,1.0
146
+ 144,0.4390243902439024,0.7279354333877563,1.0,1.0,0.0,0.2800988342508383,0.7219835915953693,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.020020008087158203,0.006939125139822644,0.0,0.7219835915953693,0.0,0.0,0.0,1.0
147
+ 145,0.4420731707317073,0.7289208173751831,1.0,1.0,0.0010497722401906495,0.27978541033625864,0.7220320049134769,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.010602474212646484,0.006645510351512285,0.0,0.7220320049134769,0.0,0.0,0.0,1.0
148
+ 146,0.4451219512195122,0.728995680809021,1.0,1.0,0.002303442127722821,0.2794342832156871,0.7220910070090938,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.006229877471923828,0.007260393998975712,0.0,0.7220910070090938,0.0,0.0,0.0,1.0
149
+ 147,0.4481707317073171,0.7282978296279907,1.0,1.0,0.0036420426849084198,0.2790593709363611,0.7221541594497627,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.008327960968017578,0.007318365339475386,0.0,0.7221541594497627,0.0,0.0,0.0,1.0
150
+ 148,0.4512195121951219,0.7298284769058228,1.0,1.0,0.004916410710569807,0.27870244668173955,0.7222140850460721,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.004069805145263672,0.0073028953893666815,0.0,0.7222140850460721,0.0,0.0,0.0,1.0
151
+ 149,0.4542682926829268,0.7278908491134644,1.0,1.0,0.006249480003354124,0.2783290813974244,0.7222729061651283,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.0004911422729492188,0.007046346719989938,0.0,0.7222729061651283,0.0,0.0,0.0,1.0
152
+ 150,0.4573170731707317,0.7298775911331177,1.0,1.0,0.007432249445508465,0.27799781200974055,0.7226553607875176,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7708333333333334,0.9417283950617285,0.8643399344893354,0.007557868957519531,0.007032047301342437,0.0,0.7226553607875176,0.0,0.0,0.0,1.0
153
+ 151,0.4603658536585366,0.7286466360092163,1.0,1.0,0.008760205582529434,0.27762587666729016,0.7227144622367652,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.013852119445800781,0.0071599571839453535,0.0,0.7227144622367652,0.0,0.0,0.0,1.0
154
+ 152,0.4634146341463415,0.7312628030776978,1.0,1.0,0.009988652048723345,0.277281816291346,0.7227799869172076,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.00019550323486328125,0.006329786401848558,0.0,0.7227799869172076,0.0,0.0,0.0,1.0
155
+ 153,0.4664634146341463,0.72862708568573,1.0,1.0,0.01102021047615842,0.2769928980271053,0.7228213169023905,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7708333333333334,0.9417283950617285,0.8643399344893354,0.013747215270996094,0.006065933966641346,0.0,0.7228213169023905,0.0,0.0,0.0,1.0
156
+ 154,0.4695121951219512,0.7298880815505981,1.0,1.0,0.01215444267703536,0.2766752228946819,0.7228718139376187,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.002205371856689453,0.006474280903913665,0.0,0.7228718139376187,0.0,0.0,0.0,1.0
157
+ 155,0.4725609756097561,0.7288476228713989,1.0,1.0,0.013331797940119738,0.27634546993671394,0.7229310897755556,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.01294851303100586,0.0065176288302654095,0.0,0.7229310897755556,0.0,0.0,0.0,1.0
158
+ 156,0.4756097560975609,0.7285932302474976,1.0,1.0,0.014481494767859204,0.27602346001165534,0.7229967466457544,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7708333333333334,0.9417283950617285,0.8643399344893354,0.0011301040649414062,0.006576242691368472,0.0,0.7229967466457544,0.0,0.0,0.0,1.0
159
+ 157,0.4786585365853658,0.7287346124649048,1.0,1.0,0.01567977778403229,0.2756878456675771,0.7230566341481791,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.0034546852111816406,0.0063206393080389445,0.0,0.7230566341481791,0.0,0.0,0.0,1.0
160
+ 158,0.4817073170731707,0.7282477617263794,1.0,1.0,0.016738238380269,0.27539139608085145,0.7227946481428151,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7708333333333334,0.9417283950617285,0.8643399344893354,0.0361323356628418,0.006291740733939677,0.0,0.7227946481428151,0.0,0.0,0.0,1.0
161
+ 159,0.4847560975609756,0.732347846031189,1.0,1.0,0.017926190922127994,0.2750586715941831,0.723157036067354,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.006363391876220703,0.006712881034495188,0.0,0.723157036067354,0.0,0.0,0.0,1.0
162
+ 160,0.4878048780487805,0.7288841009140015,1.0,1.0,0.019135016065907617,0.27472010797740193,0.7232206689627657,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.020613670349121094,0.006532440556364927,0.0,0.7232206689627657,0.0,0.0,0.0,1.0
163
+ 161,0.4908536585365853,0.7302864789962769,1.0,1.0,0.020258544070170692,0.27440542753854663,0.7232832262842267,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.01201629638671875,0.007075258068567347,0.0,0.7232832262842267,0.0,0.0,0.0,1.0
164
+ 162,0.4939024390243902,0.7300857305526733,1.0,1.0,0.021661165455350573,0.2740125821705452,0.7233571096320636,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.0018167495727539062,0.0068399812415192995,0.0,0.7233571096320636,0.0,0.0,0.0,1.0
165
+ 163,0.4969512195121951,0.7301048040390015,1.0,1.0,0.022700701830402847,0.2737214294143947,0.7234193405450184,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.006618499755859375,0.005898218077833861,0.0,0.7234193405450184,0.0,0.0,0.0,1.0
166
+ 164,0.5,0.7294238805770874,1.0,1.0,0.023767074734296956,0.2734227603627618,0.7234570807485904,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.0018835067749023438,0.005728025823517058,0.0,0.7234570807485904,0.0,0.0,0.0,1.0
167
+ 165,0.5030487804878049,0.7302931547164917,1.0,1.0,0.024745845390431676,0.273148626832043,0.7234997614351456,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.010111331939697266,0.0057921536743210655,0.0,0.7234997614351456,0.0,0.0,0.0,1.0
168
+ 166,0.5060975609756098,0.7304350137710571,1.0,1.0,0.025835114708912643,0.2728435449953297,0.7235601604104618,0.0007307529449462,0.0,0.0,0.0,0.0,0.7,0.815327892325315,0.9417283950617285,0.8906794317448425,0.020935535430908203,-0.0861506055050254,0.0,0.7235601604104618,0.0,0.0,0.0,1.0
169
+ 167,0.5091463414634146,0.7281996011734009,1.0,1.0,0.0,0.28176368738254554,0.721744668194708,0.0007323424021402,0.0,0.0,0.0,0.0,0.7,0.8416075650118204,0.9417283950617285,0.9062362409881158,0.0006151199340820312,-0.08508511343549963,0.0,0.721744668194708,0.0,0.0,0.0,1.0
170
+ 168,0.5121951219512195,0.7303735017776489,1.0,1.0,0.0,0.28135205633887966,0.7212551551160588,0.0007315476735432,0.0,0.0,0.0,0.0,0.7999999999999999,0.8368853767560664,0.9611522633744856,0.9034408415635518,0.03125190734863281,0.008188309656311232,0.0,0.7212551551160588,0.0,0.0,0.0,1.0
171
+ 169,0.5152439024390244,0.7313247919082642,1.0,1.0,0.0,0.2809448564169144,0.7213243911169782,0.0007307529449462,0.0,0.0,0.0,0.0,0.8133333333333332,0.872433574879227,0.9637421124828532,0.9244843508850384,0.00997304916381836,0.007928060148619243,0.0,0.7213243911169782,0.0,0.0,0.0,1.0
172
+ 170,0.5182926829268293,0.7293761968612671,1.0,1.0,0.0,0.28055925032401774,0.7213867538662113,0.0007311503092447,0.0,0.0,0.0,0.0,0.8366666666666667,0.8663898273273274,0.9682743484224966,0.9209066264247304,0.06486892700195312,0.007434214524953964,0.0,0.7213867538662113,0.0,0.0,0.0,1.0
173
+ 171,0.5213414634146342,0.7248378992080688,1.0,1.0,0.0,0.280201434964419,0.721442752534359,0.0007311503092447,0.0,0.0,0.0,0.0,0.7999999999999999,0.8819947665056361,0.9611522633744856,0.9301443009173236,0.01861095428466797,0.007212397513002289,0.0,0.721442752534359,0.0,0.0,0.0,1.0
174
+ 172,0.524390243902439,0.7275151014328003,1.0,1.0,0.0008619754061531815,0.2798380105727175,0.7220396841163264,0.0007315476735432,0.0,0.0,0.0,0.0,0.8266666666666667,0.8667114695340502,0.9663319615912208,0.9210970293461922,0.03529071807861328,0.006957254156176318,0.0,0.7220396841163264,0.0,0.0,0.0,1.0
175
+ 173,0.5274390243902439,0.7283669710159302,1.0,1.0,0.002048420361083436,0.2795057095488014,0.7215536465816019,0.0007307529449462,0.0,0.0,0.0,0.0,0.83,0.8283811475409837,0.9669794238683128,0.8984065828329226,0.000209808349609375,0.00868351697957015,0.0,0.7215536465816019,0.0,0.0,0.0,1.0
176
+ 174,0.5304878048780488,0.7275360822677612,1.0,1.0,0.003962331559445809,0.2789696588747605,0.7221614055512678,0.0007323424021402,0.0,0.0,0.0,0.0,0.83,0.8283811475409837,0.9669794238683128,0.8984065828329226,0.02620220184326172,0.009455210794028779,0.0,0.7221614055512678,0.0,0.0,0.0,1.0
177
+ 175,0.5335365853658537,0.7309871912002563,1.0,1.0,0.005424323805194087,0.2785601884693985,0.7222230970999384,0.0007311503092447,0.0,0.0,0.0,0.0,0.83,0.8596476124885216,0.9669794238683128,0.9169154294499549,0.013387203216552734,0.011233225893156895,0.0,0.7222230970999384,0.0,0.0,0.0,1.0
178
+ 176,0.5365853658536586,0.7288748025894165,1.0,1.0,0.007973068288181562,0.2778463362854448,0.722508034198161,0.0007311503092447,0.0,0.0,0.0,0.0,0.8266666666666667,0.8587962962962963,0.9663319615912208,0.9164114747863582,0.0225067138671875,0.01146413070228558,0.0,0.722508034198161,0.0,0.0,0.0,1.0
179
+ 177,0.5396341463414634,0.7287365198135376,1.0,1.0,0.009517482732248839,0.27741377539916995,0.7229103858442261,0.0007315476735432,0.0,0.0,0.0,0.0,0.8266666666666667,0.8587962962962963,0.9663319615912208,0.9164114747863582,0.003669261932373047,0.016211271876709343,0.0,0.7229103858442261,0.0,0.0,0.0,1.0
180
+ 178,0.5426829268292683,0.7292417287826538,1.0,1.0,0.013761158604575163,0.27622520909777387,0.7234529639947627,0.0007323424021402,0.0,0.0,0.0,0.0,0.7881481481481482,0.8730034722222223,0.9588501752781587,0.9248217136961734,0.0021386146545410156,0.03230727302981018,0.0,0.7234529639947627,0.0,0.0,0.0,1.0
181
+ 179,0.5457317073170732,0.7285226583480835,1.0,1.0,0.021052522526320172,0.27418304809618893,0.7245898331683458,0.0007323424021402,0.0,0.0,0.0,0.0,0.7046913580246914,0.8565393518518518,0.9426396382665244,0.915075428686632,0.0029587745666503906,0.050259772834998495,0.0,0.7245898331683458,1.0,0.0,0.0,1.0
182
+ 180,0.5487804878048781,0.7295376062393188,1.0,1.0,0.031705999548056196,0.271199231814274,0.7263806245825009,0.0007327397664388,0.0,0.0,0.0,0.0,0.7777777777777778,0.8538908246225319,0.9568358481938728,0.9135075768578188,0.012118816375732422,0.06898524444885701,0.0,0.7263806245825009,1.0,0.0,0.0,1.0
183
+ 181,0.551829268292683,0.7273107767105103,1.0,1.0,0.04568312309079825,0.26728452365130323,0.7288506065917302,0.0007315476735432,0.0,0.0,0.0,0.0,0.8174074074074075,0.8757142857142857,0.9645334552659656,0.926426437198372,0.009958744049072266,0.08449174257116443,0.0,0.7288506065917302,1.0,0.0,0.0,1.0
184
+ 182,0.5548780487804879,0.7285417318344116,1.0,1.0,0.061873071692338355,0.2627500575571576,0.731879618443738,0.0007323424021402,0.0,0.0,0.0,0.0,0.8237037037037037,0.8696428571428572,0.9657564395671392,0.9228323263718556,0.01956939697265625,0.09319901121295604,0.0,0.731879618443738,1.0,0.0,0.0,1.0
185
+ 183,0.5579268292682927,0.7292677164077759,1.0,1.0,0.07895906401528874,0.2579646225300076,0.735085451120124,0.0007315476735432,0.0,0.0,0.0,0.0,0.7985185185185185,0.8706845238095238,0.9608645023624448,0.9234489630332678,0.0050258636474609375,0.09703426372392687,0.0,0.735085451120124,1.0,0.0,0.0,1.0
186
+ 184,0.5609756097560976,0.7280391454696655,1.0,1.0,0.09651833744347826,0.2530466311847649,0.7388847916442877,0.0007315476735432,0.0,0.0,0.0,0.0,0.7859259259259259,0.8753869047619047,0.9584185337600976,0.9262326371047854,0.008444786071777344,0.09852923869971969,0.0,0.7388847916442877,1.0,0.0,0.0,1.0
187
+ 185,0.5640243902439024,0.7301121950149536,1.0,1.0,0.11413808689472116,0.24811169866003566,0.7426359606730689,0.0007315476735432,0.0,0.0,0.0,0.0,0.8048148148148149,0.8885714285714286,0.9620874866636184,0.93403749541923,0.0038099288940429688,0.09699968197428632,0.0,0.7426359606730689,1.0,0.0,0.0,1.0
188
+ 186,0.5670731707317073,0.7276581525802612,1.0,1.0,0.13115124541453382,0.24334666298733626,0.7464658079630127,0.0007323424021402,0.0,0.0,0.0,0.0,0.83,0.8753063725490197,0.9669794238683128,0.9261849643544914,0.019593238830566406,0.09380831663798883,0.0,0.7464658079630127,1.0,0.0,0.0,1.0
189
+ 187,0.5701219512195121,0.728152871131897,1.0,1.0,0.14763156690279966,0.23873086699623677,0.7503867895882768,0.0007315476735432,0.0,0.0,0.0,0.0,0.83,0.8680453431372549,0.9669794238683128,0.921886644097001,0.008568763732910156,0.09244799037189083,0.0,0.7503867895882768,1.0,0.0,0.0,1.0
190
+ 188,0.573170731707317,0.7285150289535522,1.0,1.0,0.16415902149293415,0.23410186395014718,0.7543927304499978,0.0007311503092447,0.0,0.0,0.0,0.0,0.83,0.8547794117647058,0.9669794238683128,0.914033594850194,0.0002574920654296875,0.09206462817691802,0.0,0.7543927304499978,1.0,0.0,0.0,1.0
191
+ 189,0.5762195121951219,0.728127121925354,1.0,1.0,0.1805024662466378,0.22952440417854497,0.7584955842264964,0.0007311503092447,0.0,0.0,0.0,0.0,0.8174074074074075,0.8680453431372549,0.9645334552659656,0.921886644097001,0.000782012939453125,0.09062693222308155,0.0,0.7584955842264964,1.0,0.0,0.0,1.0
192
+ 190,0.5792682926829268,0.7284368276596069,1.0,1.0,0.19651661431691525,0.22503917072783902,0.7626618843879152,0.0007323424021402,0.0,0.0,0.0,0.0,0.7166666666666667,0.8523897058823529,0.944965706447188,0.9126189578034248,0.0017976760864257812,0.08836801198197686,0.0,0.7626618843879152,1.0,0.0,0.0,1.0
193
+ 191,0.5823170731707317,0.7283068895339966,1.0,1.0,0.21205352018785728,0.22068760298034729,0.7668832226279634,0.0007315476735432,0.0,0.0,0.0,0.0,0.7166666666666667,0.8433768656716418,0.944965706447188,0.907283616013946,0.005035400390625,0.08750285976282857,0.0,0.7668832226279634,1.0,0.0,0.0,1.0
194
+ 192,0.5853658536585366,0.7279332876205444,1.0,1.0,0.22775876307388299,0.21628888475155617,0.7711700186543202,0.0007323424021402,0.0,0.0,0.0,0.0,0.7733333333333333,0.8229482323232323,0.9559725651577504,0.8951904535193778,0.006504058837890625,0.08789379520915908,0.0,0.7711700186543202,1.0,0.0,0.0,1.0
195
+ 193,0.5884146341463414,0.7276564836502075,1.0,1.0,0.24343525874137228,0.21189822345943138,0.775543261821427,0.0007311503092447,0.0,0.0,0.0,0.0,0.7733333333333333,0.8778093434343435,0.9559725651577504,0.9276666510204156,0.007174015045166016,0.02463603908267442,0.0,0.775543261821427,1.0,0.0,0.0,1.0
196
+ 194,0.5914634146341463,0.728650689125061,1.0,1.0,0.2365548615035602,0.21382528084328872,0.5643854687872693,0.0007307529449462,0.0,0.0,0.0,0.0,0.83,0.8728219696969697,0.9669794238683128,0.9247142694294122,0.022742748260498047,0.025322019995549783,0.0,0.5643854687872693,1.0,0.0,0.0,1.0
197
+ 195,0.5945121951219512,0.7299307584762573,1.0,1.0,0.25247626527349754,0.2093660214598764,0.5732177029541791,0.0007315476735432,0.0,0.0,0.0,0.0,0.8362962962962963,0.8723958333333333,0.9662150586800792,0.9244620089770164,0.0036191940307617188,0.0888841046272354,0.0,0.5732177029541791,1.0,0.0,0.0,1.0
198
+ 196,0.5975609756097561,0.7290126085281372,1.0,1.0,0.26829016673931605,0.20493687038056518,0.5823279213741892,0.0007311503092447,0.0,0.0,0.0,0.0,0.7544444444444445,0.8716796875,0.9493225880201188,0.9240380712722956,0.0009369850158691406,0.08886138864816706,0.0,0.5823279213741892,1.0,0.0,0.0,1.0
199
+ 197,0.600609756097561,0.7300244569778442,1.0,1.0,0.28420348090698666,0.2004798825950597,0.5916519444661396,0.0007311503092447,0.0,0.0,0.0,0.0,0.7166666666666667,0.8648148148148148,0.9392329675354368,0.919974264385628,0.020875930786132812,0.08938975968003637,0.0,0.5916519444661396,1.0,0.0,0.0,1.0
200
+ 198,0.6036585365853658,0.7311002016067505,1.0,1.0,0.30020604184330424,0.19599789441256155,0.6011260882855722,0.0007323424021402,0.0,0.0,0.0,0.0,0.7733333333333333,0.8650873655913978,0.9513863740283494,0.920135606594528,0.054357051849365234,0.06597925920053926,0.0,0.6011260882855722,1.0,0.0,0.0,1.0
201
+ 199,0.6067073170731707,0.7245887517929077,1.0,1.0,0.3077608105024926,0.19388195667500577,0.6096491352886337,0.0007315476735432,0.0,0.0,0.0,0.0,0.7733333333333333,0.8486895161290322,0.949551897576589,0.9104285520535892,0.06354331970214844,0.06847226172786047,0.0,0.6096491352886337,1.0,0.0,0.0,1.0
202
+ 200,0.6097560975609756,0.7247458696365356,1.0,1.0,0.3246534857035652,0.1891506682397755,0.6195771360911444,0.0007323424021402,0.0,0.0,0.0,0.0,0.83,0.8715447154471545,0.9614759945130316,0.9239581717048868,0.01093149185180664,0.09427442093238814,0.0,0.6195771360911444,1.0,0.0,0.0,1.0
203
+ 201,0.6128048780487805,0.723495602607727,1.0,1.0,0.34142069296118127,0.18445451458176695,0.6296526715137396,0.0007323424021402,0.0,0.0,0.0,0.0,0.8111111111111111,0.8788279132791328,0.957195549458924,0.9282696150285812,0.010037422180175781,0.09466748835364358,0.0,0.6296526715137396,1.0,0.0,0.0,1.0
204
+ 202,0.6158536585365854,0.7257496118545532,1.0,1.0,0.35845370124644715,0.17968391940441114,0.8197258734158155,0.0007323424021402,0.0,0.0,0.0,0.0,0.83,0.8635162601626016,0.9594122085048012,0.9192055574364424,0.019309520721435547,0.08002947233318652,0.0,0.8197258734158155,1.0,0.0,0.0,1.0
205
+ 203,0.6189024390243902,0.7215646505355835,1.0,1.0,0.3699945469968915,0.1764515673484483,0.8243833476633964,0.0007315476735432,0.0,0.0,0.0,0.0,0.7418518518518518,0.8699929971988796,0.938366686988772,0.9230395991992212,0.06788253784179688,0.07044532819631993,0.0,0.8243833476633964,1.0,0.0,0.0,1.0
206
+ 204,0.6219512195121951,0.7189613580703735,1.0,1.0,0.3836056249640343,0.17263938658477915,0.6592069236317151,0.0007315476735432,0.0,0.0,0.0,0.0,0.7733333333333333,0.8644607843137255,0.9440484682213076,0.919191579159182,0.024297237396240234,0.08934980975257134,0.0,0.6592069236317151,1.0,0.0,0.0,1.0
207
+ 205,0.625,0.7191349267959595,1.0,1.0,0.4018961512805749,0.16751658637319117,0.6699266089981261,0.0007315476735432,0.0,0.0,0.0,0.0,0.7733333333333333,0.8844936708860759,0.9422139917695472,0.9316235803294924,0.0019192695617675781,0.10223435723457353,0.0,0.6699266089981261,1.0,0.0,0.0,1.0
208
+ 206,0.6280487804878049,0.7191532850265503,1.0,1.0,0.420107540337326,0.1624159508613218,0.839926667550039,0.0007323424021402,0.0,0.0,0.0,0.0,0.83,0.8605225988700564,0.95390877914952,0.917433396183802,0.0015163421630859375,0.0898801202745747,0.0,0.839926667550039,1.0,0.0,0.0,1.0
209
+ 207,0.6310975609756098,0.7192865610122681,1.0,1.0,0.43398708350279724,0.1585285743457337,0.6909639091252324,0.0007335344950358,0.0,0.0,0.0,0.0,0.83,0.827683615819209,0.95390877914952,0.8979936641460642,0.027790069580078125,0.09602579481492513,0.0,0.6909639091252324,1.0,0.0,0.0,1.0
210
+ 208,0.6341463414634146,0.7163742780685425,1.0,1.0,0.454392734039311,0.15281337137982928,0.7025021667839442,0.0007311503092447,0.0,0.0,0.0,0.0,0.8362962962962963,0.8729613733905579,0.9542909617436366,0.9247967924004868,0.004146099090576172,0.11124134331980978,0.0,0.7025021667839442,1.0,0.0,0.0,1.0
211
+ 209,0.6371951219512195,0.7188719511032104,1.0,1.0,0.4737048702174189,0.14740444001375272,0.7135550461333114,0.0007311503092447,0.0,0.0,0.0,0.0,0.8237037037037037,0.8799342105263158,0.9479212518416908,0.9289245111319724,0.008969306945800781,0.10838369666527709,0.0,0.7135550461333114,1.0,0.0,0.0,1.0
212
+ 210,0.6402439024390244,0.7154773473739624,1.0,1.0,0.4930902157446557,0.14197500171330157,0.7246218576569241,0.0007311503092447,0.0,0.0,0.0,0.0,0.7733333333333333,0.8744837758112094,0.9330416095107452,0.9256980107806432,0.014464855194091797,0.10861298158103633,0.0,0.7246218576569241,1.0,0.0,0.0,1.0
213
+ 211,0.6432926829268293,0.7203184366226196,1.0,1.0,0.5124842137574876,0.1365431418556491,0.8650335664333906,0.0007307529449462,0.0,0.0,0.0,0.0,0.7733333333333333,0.8688455657492354,0.9302898948331048,0.9223603528328456,0.057730674743652344,0.10845675680421024,0.0,0.8650335664333906,1.0,0.0,0.0,1.0
214
+ 212,0.6463414634146342,0.7097042798995972,1.0,1.0,0.5318137873087968,0.13112932603288055,0.7472213199470045,0.0007311503092447,0.0,0.0,0.0,0.0,0.7985185185185185,0.855045871559633,0.9372201392064218,0.913578412311786,0.04124164581298828,0.10956581389935077,0.0,0.7472213199470045,1.0,0.0,0.0,1.0
215
+ 213,0.649390243902439,0.7161942720413208,1.0,1.0,0.5516037704742871,0.125586560465714,0.8758784306741085,0.0007311503092447,0.0,0.0,0.0,0.0,0.83,0.8986111111111111,0.944965706447188,0.939551988991287,0.0651860237121582,0.11296591649792548,0.0,0.8758784306741085,1.0,0.0,0.0,1.0
216
+ 214,0.6524390243902439,0.716222882270813,1.0,1.0,0.5721473195859388,0.119832734383088,0.7701574437134947,0.0007311503092447,0.0,0.0,0.0,0.0,0.83,0.8947115384615384,0.944965706447188,0.9372270654909518,0.003833770751953125,0.11635899966301474,0.0,0.7701574437134947,1.0,0.0,0.0,1.0
217
+ 215,0.6554878048780488,0.7165776491165161,1.0,1.0,0.5931487687807725,0.11395066049941253,0.781919424533718,0.0007311503092447,0.0,0.0,0.0,0.0,0.8551851851851852,0.8759708737864077,0.9519469084997204,0.9255294489452666,0.006759166717529297,0.1151255699087543,0.0,0.781919424533718,1.0,0.0,0.0,1.0
218
+ 216,0.6585365853658537,0.7168987989425659,1.0,1.0,0.6132519391573905,0.10832017739221257,0.7936139431023065,0.0007311503092447,0.0,0.0,0.0,0.0,0.8488888888888888,0.872168284789644,0.9486346593507088,0.9232462683193224,0.005679130554199219,0.11867450470252963,1.0,0.7936139431023065,1.0,0.0,0.0,1.0
219
+ 217,0.6615853658536586,0.717145562171936,1.0,1.0,0.6355205024312736,0.10208321002915957,0.805814091512272,0.0007311503092447,0.0,0.0,0.0,0.0,0.8237037037037037,0.8952265372168284,0.9393603617334756,0.9370910870085586,0.0033426284790039062,0.12350504551475003,1.0,0.805814091512272,1.0,0.0,0.0,1.0
220
+ 218,0.6646341463414634,0.7172330617904663,1.0,1.0,0.6573483701053755,0.09596967284073757,0.9039087718128518,0.0007323424021402,0.0,0.0,0.0,0.0,0.83,0.8777369281045752,0.9394622770919068,0.9265898372772784,0.0015878677368164062,0.12340563690338618,1.0,0.9039087718128518,1.0,0.0,0.0,1.0
221
+ 219,0.6676829268292683,0.7173043489456177,1.0,1.0,0.6795814435616857,0.08974264633882095,0.829739320695624,0.0007315476735432,0.0,0.0,0.0,0.0,0.8551851851851852,0.9006188118811881,0.9484308286338464,0.9403287593033854,0.0006198883056640625,0.1217250528586597,1.0,0.829739320695624,1.0,0.0,0.0,1.0
222
+ 220,0.6707317073170732,0.7171710729598999,1.0,1.0,0.70080927459359,0.0837971675548716,1.0,0.0007315476735432,1.0,0.0,0.0,0.0,0.8551851851851852,0.891089108910891,0.9472588020118884,0.93414634443669,0.003578662872314453,0.21544801470154418,1.0,1.0,1.0,0.0,0.0,1.0
223
+ 221,0.6737804878048781,0.7169464826583862,1.0,1.0,0.7565053443840035,0.06819784486866654,0.8886733784933276,0.0007311503092447,0.0,0.0,0.0,0.0,0.8551851851851852,0.8663778877887789,0.9472588020118884,0.9192045491024392,0.0006866455078125,0.23482631740966292,1.0,0.8886733784933276,1.0,0.0,0.0,1.0
224
+ 222,0.676829268292683,0.7172397375106812,1.0,1.0,0.7846520347547815,0.06031453581390531,0.9020817721523657,0.0007311503092447,0.0,0.0,0.0,0.0,0.8551851851851852,0.8821929824561403,0.9445770461819843,0.9287672456014828,0.023288726806640625,0.1583860794864212,1.0,0.9020817721523657,1.0,0.0,0.0,1.0
225
+ 223,0.6798780487804879,0.7146176099777222,1.0,1.0,0.8130557587864251,0.052359236920024414,0.9577950900960486,0.0007311503092447,0.0,0.0,0.0,0.0,0.8677777777777778,0.8475438596491227,0.946360219478738,0.907816435484272,0.24432897567749023,0.13665254939701513,1.0,0.9577950900960486,1.0,0.0,0.0,1.0
226
+ 224,0.6829268292682927,0.6928068399429321,1.0,1.0,0.8334426754772497,0.046649280874203794,0.9261176013716039,0.0007311503092447,0.0,0.0,0.0,0.0,0.8740740740740741,0.8987179487179487,0.9443780521262004,0.9387591704266144,0.42278528213500977,0.10519864415337733,1.0,0.9261176013716039,1.0,0.0,0.0,1.0
227
+ 225,0.6859756097560976,0.6723390817642212,1.0,1.0,0.8506160478003071,0.04183937250468668,0.9341705921203942,0.0007323424021402,0.0,0.0,0.0,0.0,0.8551851851851852,0.8960526315789473,0.9308357293095564,0.9368899777206968,0.42255401611328125,0.12185728899737867,1.0,0.9341705921203942,1.0,0.0,0.0,1.0
228
+ 226,0.6890243902439024,0.650551438331604,1.0,1.0,0.8769507931720647,0.03446355197446593,0.9612385798812211,0.0007323424021402,0.0,0.0,0.0,0.0,0.8803703703703704,0.876078431372549,0.9383242798353908,0.9244558638473722,0.3709602355957031,0.15888865921171658,1.0,0.9612385798812211,1.0,0.0,0.0,1.0
229
+ 227,0.6920731707317073,0.6352430582046509,1.0,1.0,0.9073459040444912,0.025950506583515023,0.9669014042203664,0.0007311503092447,0.0,0.0,0.0,0.0,0.8866666666666667,0.8799509803921568,0.9415703703703704,0.9268166181021418,0.32713890075683594,0.18398025210344476,1.0,0.9669014042203664,1.0,0.0,0.0,1.0
230
+ 228,0.6951219512195121,0.6178375482559204,1.0,1.0,0.942639390669821,0.01606552676412145,1.0,0.0007311503092447,1.0,0.0,0.0,0.0,0.8740740740740741,0.7471264367816092,0.9345651577503428,0.8464717630568963,0.3030991554260254,0.16547706303611673,1.0,1.0,1.0,0.0,0.0,1.0
231
+ 229,0.698170731707317,0.6049331426620483,1.0,1.0,0.9664280939000538,0.009402800279903348,0.9695949823107265,0.0007307529449462,0.0,0.0,0.0,0.0,0.8803703703703704,0.4527938342967244,0.9449867804704568,0.671442136661567,0.23787975311279297,0.008645991603031637,1.0,0.9695949823107265,0.0,0.0,0.0,1.0
232
+ 230,0.7012195121951219,0.5940495729446411,1.0,1.0,0.945726369538588,0.015200927603818287,1.0,0.0007323424021402,1.0,0.0,0.0,0.0,0.9257936507936508,0.4971230158730159,0.9696065451695082,0.6980586152305339,0.2008533477783203,-0.14131223247796001,1.0,1.0,0.0,0.0,0.0,1.0
233
+ 231,0.7042682926829268,0.5848478078842163,1.0,1.0,0.9159737530839401,0.02353402352769935,1.0,0.0007307529449462,1.0,0.0,0.0,0.0,0.922077922077922,0.50640625,0.9774891774891776,0.7036325282468691,0.16524314880371094,-0.11121353068842747,1.0,1.0,0.0,0.0,0.0,1.0
234
+ 232,0.7073170731707317,0.57752525806427,1.0,1.0,0.9060185160176144,0.026322280672661034,0.0,1.0,0.0,1.0,0.0,1.0,0.9178082191780822,0.5300632911392404,0.9679007835841932,0.7178368764007841,0.13538360595703125,-0.060338472696677276,1.0,0.0,0.0,0.0,0.0,1.0
235
+ 233,0.7103658536585366,0.5713094472885132,1.0,1.0,0.8944304100975395,0.029567870797367078,0.0,1.0,0.0,1.0,0.0,1.0,0.922077922077922,0.5535714285714286,0.9513885949441504,0.7319518186106535,0.11414289474487305,-0.05345193913571779,1.0,0.0,0.0,0.0,0.0,1.0
236
+ 234,0.7134146341463414,0.5661109685897827,1.0,0.0,0.8869339516211069,0.03166747458623281,0.0,1.0,0.0,1.0,0.0,1.0,0.964102564102564,0.3174825174825174,0.9764583729028172,0.574679636950962,0.057735443115234375,-0.020575684207202113,1.0,0.0,0.0,0.0,1.0,1.0
237
+ 235,0.7164634146341463,0.5655359029769897,1.0,0.0,0.8870840351127071,0.03162543921808729,1.0,1.0,1.0,1.0,1.0,1.0,0.9602409638554216,0.5390524967989757,0.9788962962962964,0.7685290304356838,0.010747909545898438,0.0492033916873252,1.0,1.0,1.0,1.0,1.0,1.0
238
+ 236,0.7195121951219512,0.5650361776351929,1.0,0.0,0.9045016076100404,0.026747135417500293,1.0,1.0,1.0,1.0,1.0,1.0,0.7743589743589743,0.4888927058284666,0.9095702578171714,0.7931544024948072,0.0016927719116210938,0.0641049075699722,1.0,1.0,1.0,1.0,1.0,1.0
239
+ 237,0.7225609756097561,0.5653666257858276,1.0,0.0,0.9099721518884709,0.02521494846109007,1.0,1.0,1.0,1.0,1.0,1.0,0.5526695526695526,0.0161290322580645,0.863334105309414,0.6518869099514261,0.0034928321838378906,0.012013881478665188,1.0,1.0,1.0,1.0,1.0,1.0
240
+ 238,0.725609756097561,0.5653854608535767,1.0,0.0,0.9087910627967859,0.025545747269633774,1.0,1.0,1.0,1.0,1.0,1.0,0.3974025974025973,0.0,0.804308766679137,0.6318143540365762,0.05341529846191406,-0.0033487848790489383,1.0,1.0,0.0,1.0,1.0,1.0
241
+ 239,0.7286585365853658,0.5600250959396362,1.0,0.0,0.908776495529291,0.025549826948994964,1.0,1.0,1.0,1.0,1.0,1.0,0.3939393939393939,0.0,0.7845117845117845,0.5660170752763345,0.13408184051513672,0.0002647123542533214,1.0,1.0,0.0,1.0,1.0,1.0
242
+ 240,0.7317073170731707,0.551977276802063,1.0,0.0,0.9088855749550416,0.025519276034208442,1.0,1.0,1.0,1.0,1.0,1.0,0.390909090909091,0.0,0.7270370370370369,0.4642976309642977,0.19018888473510742,0.00017212383154358024,1.0,1.0,0.0,1.0,1.0,1.0
243
+ 241,0.7347560975609756,0.5410062074661255,1.0,0.0,0.9088379503444013,0.025532614565840606,1.0,1.0,1.0,1.0,1.0,1.0,0.2871572871572871,0.0,0.7289437585733882,0.4589101348775385,0.22463083267211914,-7.000740775833098e-05,1.0,1.0,0.0,1.0,1.0,1.0
244
+ 242,0.7378048780487805,0.5295141935348511,1.0,0.0,0.9088605792497041,0.025526276774984275,1.0,1.0,1.0,1.0,1.0,1.0,0.2402597402597402,0.0,0.7996536796536797,0.5204439044956286,0.2429676055908203,6.046682234951695e-06,1.0,1.0,0.0,1.0,1.0,1.0
245
+ 243,0.7408536585365854,0.5167094469070435,1.0,0.0,0.9088401100674857,0.02553200989761711,1.0,1.0,1.0,1.0,1.0,1.0,0.2871572871572871,0.0,0.7843870806833769,0.5322389374041109,0.24044275283813477,-2.6026784337267184e-05,1.0,1.0,0.0,1.0,1.0,1.0
246
+ 244,0.7439024390243902,0.5054699182510376,1.0,0.0,0.908851286633251,0.025528879453418002,1.0,1.0,1.0,1.0,1.0,1.0,0.3434343434343434,0.0,0.7949245541838135,0.5625254161934603,0.21057367324829157,-1.6710085269065755e-05,1.0,1.0,0.0,1.0,1.0,1.0
247
+ 245,0.7469512195121951,0.4956520795822143,1.0,0.0,0.9088341451042394,0.025533680906144017,1.0,1.0,1.0,1.0,1.0,1.0,0.3340548340548341,0.0,0.8373778347852423,0.6047240528429849,0.12931823730468806,0.00012008127067482388,1.0,1.0,0.0,1.0,1.0,1.0
248
+ 246,0.75,0.4925380945205688,1.0,0.0,0.9088941615763898,0.02551687132635052,1.0,1.0,1.0,1.0,1.0,1.0,0.2683982683982684,0.0,0.8726471059804393,0.6103133944358858,0.04999160766601507,7.746680824791824e-05,1.0,1.0,0.0,1.0,1.0,1.0
249
+ 247,0.7530487804878049,0.4906529188156128,1.0,0.0,0.9088618036796512,0.025525934225319225,1.0,1.0,1.0,1.0,1.0,1.0,0.3434343434343434,0.0,0.8832772166105499,0.5910242628992629,0.02046823501586914,-0.033754794282615484,1.0,1.0,0.0,1.0,1.0,1.0
250
+ 248,0.7560975609756098,0.4904912710189819,1.0,0.0,0.896842297613121,0.028892350754612068,1.0,1.0,1.0,1.0,1.0,1.0,0.2761904761904761,0.0,0.8511275720164608,0.5650901006884255,0.002906322479248047,-0.033026585383827654,1.0,1.0,0.0,1.0,1.0,1.0
251
+ 249,0.7591463414634146,0.490362286567688,1.0,0.0,0.8970699394844374,0.02882859276370199,1.0,1.0,1.0,1.0,1.0,1.0,0.2965367965367965,0.0,0.9323459462348352,0.6163394439521488,0.0029277801513666324,0.0005267672383882718,1.0,1.0,0.0,1.0,1.0,1.0
252
+ 250,0.7621951219512195,0.4901984930038452,1.0,0.0,0.8970303754759987,0.02883967403077324,1.0,1.0,1.0,1.0,1.0,1.0,0.3340548340548341,0.0,0.967442680776014,0.6171650824964132,0.010747909545898993,-0.0005753492885564662,1.0,1.0,0.0,1.0,1.0,1.0
253
+ 251,0.7652439024390244,0.4892874956130981,1.0,0.0,0.8968645163375395,0.028886127692557637,1.0,1.0,1.0,1.0,1.0,1.0,0.3152958152958153,0.0,0.9661874476689292,0.6538106229184473,0.16190528869628906,-0.0007819580188099876,1.0,1.0,0.0,1.0,1.0,1.0
254
+ 252,0.7682926829268293,0.4740079641342163,1.0,0.0,0.8967511820586868,0.02891786983265424,1.0,1.0,1.0,1.0,1.0,1.0,0.3340548340548341,0.0,0.988818698448328,0.6301496162257689,0.2792930603027338,0.00045859418039355393,1.0,1.0,0.0,1.0,1.0,1.0
255
+ 253,0.7713414634146342,0.4613581895828247,1.0,0.0,0.8970282526640895,0.028840268274518282,1.0,1.0,1.0,1.0,1.0,1.0,0.2704184704184703,0.034965034965035,0.9927041847041848,0.6498631417311715,0.25820016860961914,0.0008454187281472722,1.0,1.0,0.0,1.0,1.0,1.0
256
+ 254,0.774390243902439,0.4481879472732544,1.0,0.0,0.8970530317736243,0.028833327959839512,1.0,1.0,1.0,1.0,1.0,1.0,0.2761904761904761,0.0033783783783783,0.9976141093474428,0.6404407939880913,0.2524280548095703,0.00034145371941393665,1.0,1.0,0.0,1.0,1.0,1.0
257
+ 255,0.7774390243902439,0.4361153841018677,1.0,0.0,0.8971501664964355,0.028806122902576888,1.0,1.0,1.0,1.0,1.0,1.0,0.305916305916306,0.0516129032258064,1.0,0.7262325023419095,0.2316427230834961,-0.0006343685768773338,1.0,1.0,0.0,1.0,1.0,1.0
258
+ 256,0.7804878048780488,0.4250236749649048,1.0,0.0,0.8968265383479195,0.028896764817527246,1.0,0.8007892847061153,1.0,1.0,1.0,1.0,0.2571428571428571,0.0064516129032258,0.9976685087203606,0.6957848148634714,0.20818948745727595,-0.00016957835418357492,1.0,1.0,0.0,1.0,1.0,1.0
259
+ 257,0.7835365853658537,0.4152964353561401,1.0,0.0,0.8970896194328057,0.028823080737995246,1.0,0.8190322796503698,1.0,1.0,1.0,1.0,0.305916305916306,0.0601733809280978,0.9932134038800704,0.715295129817438,0.1763772964477539,0.0010919058258046163,1.0,1.0,0.0,1.0,1.0,1.0
260
+ 258,0.7865853658536586,0.4073859453201294,1.0,0.0,0.8972163912926272,0.028787574234946784,1.0,0.8217403173446651,1.0,1.0,1.0,1.0,0.3939393939393939,0.0628419830873818,1.0,0.7856685880092937,0.07925748825073187,-0.0003336938734455064,1.0,1.0,0.0,1.0,1.0,1.0
261
+ 259,0.7896341463414634,0.4073706865310669,1.0,0.0,0.8969704771288329,0.028856450125339796,1.0,0.8488445361455278,1.0,1.0,1.0,1.0,0.2545454545454546,0.0465718786270933,0.9908991146028184,0.6918026727783617,0.07215499877929688,2.4482471799869288e-05,1.0,1.0,0.0,1.0,1.0,1.0
262
+ 260,0.7926829268292683,0.4001704454421997,1.0,0.0,0.8972251348937137,0.028785125987766797,1.0,0.8538125832875566,1.0,1.0,1.0,1.0,0.4112554112554112,0.061055030934549,1.0,0.773353192069188,0.12404918670654297,-8.734491238174963e-05,1.0,1.0,0.0,1.0,1.0,1.0
263
+ 261,0.7957317073170732,0.3949657678604126,1.0,0.0,0.8969392929744325,0.02886518461657797,1.0,0.8766391754150387,1.0,1.0,1.0,1.0,0.2519480519480519,0.0613431613431613,1.0,0.7248573810501981,0.06240367889404297,-0.000922257090257457,1.0,1.0,0.0,1.0,1.0,1.0
264
+ 262,0.7987804878048781,0.3939300775527954,1.0,0.0,0.8968958474944818,0.028877351696792543,1.0,0.8884905656178789,1.0,1.0,1.0,1.0,0.2611832611832612,0.036144578313253,0.998149411021839,0.6923648535666367,0.02088308334350586,-0.00045111014073704464,1.0,1.0,0.0,1.0,1.0,1.0
265
+ 263,0.801829268292683,0.392877459526062,1.0,0.0,0.8967782278810069,0.028910295630651676,1.0,0.8950629711151119,1.0,1.0,1.0,1.0,0.2611832611832612,0.0583482578964505,1.0,0.7510766030291094,0.015501976013184149,-0.000192524002973829,1.0,1.0,0.0,1.0,1.0,1.0
266
+ 264,0.8048780487804879,0.392379879951477,1.0,0.0,0.8968271116041823,0.028896604097089926,1.0,0.8949517091115312,1.0,1.0,1.0,1.0,0.2796536796536796,0.0575538112963263,1.0,0.7382868036795726,0.013866424560546875,0.00010980467782216452,1.0,1.0,0.0,1.0,1.0,1.0
267
+ 265,0.8079268292682927,0.3914908170700073,1.0,0.0,0.8968174292929314,0.02889931516286946,1.0,0.8938947200775142,1.0,1.0,1.0,1.0,0.259018759018759,0.0575538112963263,1.0,0.7479979364380769,0.011425018310546875,0.00039526470071719194,1.0,1.0,0.0,1.0,1.0,1.0
268
+ 266,0.8109756097560976,0.3912373781204223,1.0,0.0,0.8969682359413229,0.028857077627018207,1.0,0.8934814612070715,1.0,1.0,1.0,1.0,0.2611832611832612,0.0543372714031397,1.0,0.7411566783889578,0.005085468292236328,0.00031369128170408156,1.0,1.0,0.0,1.0,1.0,1.0
269
+ 267,0.8140243902439024,0.3909822702407837,1.0,0.0,0.8969294299520713,0.02886794603469905,1.0,0.89401790301005,1.0,1.0,1.0,1.0,0.2777777777777778,0.0543372714031397,1.0,0.7363036106436667,0.002295970916748047,-0.0003992991922112388,1.0,1.0,0.0,1.0,1.0,1.0
270
+ 268,0.8170731707317073,0.3914669752120971,1.0,0.0,0.896825671834573,0.02889700754623933,1.0,0.8981008211771643,1.0,1.0,1.0,1.0,0.2965367965367965,0.0511207315099531,1.0,0.7365710530322869,0.0037646293640131168,0.0002728720682481159,1.0,1.0,0.0,1.0,1.0,1.0
271
+ 269,0.8201219512195121,0.391358733177185,1.0,0.0,0.8970268587314495,0.02884065882787424,1.0,0.9231635808944698,1.0,1.0,1.0,1.0,0.2519480519480519,0.0370385629531971,0.996252557319224,0.6890303850567168,0.003733634948731024,0.0005947857054442937,1.0,1.0,0.0,1.0,1.0,1.0
272
+ 270,0.823170731707317,0.3918403387069702,1.0,0.0,0.8970380344780572,0.0288375289756949,1.0,0.9645609935124712,1.0,1.0,1.0,1.0,0.2727272727272728,0.0519480519480519,1.0,0.7321323320598567,0.006372928619384766,0.0006351932155492304,1.0,1.0,0.0,1.0,1.0,1.0
273
+ 271,0.8262195121951219,0.3919960260391235,1.0,0.0,0.8972536463951507,0.028777139506319317,1.0,1.0,1.0,1.0,1.0,1.0,0.2796536796536796,0.0402684563758388,0.9983201800485751,0.7051416056635906,0.003440380096436102,-0.00036479264450193366,1.0,1.0,0.0,1.0,1.0,1.0
274
+ 272,0.8292682926829268,0.3914963006973266,1.0,0.0,0.8969077849499176,0.028874008240145094,1.0,1.0,1.0,1.0,1.0,1.0,0.2704184704184703,0.0601503759398496,0.9978733048691896,0.678326844410124,0.005674362182616632,-0.0009059078199092144,1.0,1.0,0.0,1.0,1.0,1.0
275
+ 273,0.8323170731707317,0.3914285898208618,1.0,0.0,0.8969302026620216,0.028867730288310238,1.0,1.0,1.0,1.0,1.0,1.0,0.3272727272727274,0.08213866039953,0.9978572390572392,0.7266176523675016,0.0020933151245111636,0.0002554355323982835,1.0,1.0,0.0,1.0,1.0,1.0
276
+ 274,0.8353658536585366,0.3912869691848755,1.0,0.0,0.8969989903276705,0.028848464686905266,1.0,1.0,1.0,1.0,1.0,1.0,0.2611832611832612,0.101157191674433,0.99206456095345,0.6879371685218361,0.0012063980102539062,-0.0003886896187023023,1.0,1.0,0.0,1.0,1.0,1.0
277
+ 275,0.8384146341463414,0.3915492296218872,1.0,0.0,0.8967914249280653,0.028906599250180468,1.0,1.0,1.0,1.0,1.0,1.0,0.3636363636363636,0.2449281605103522,1.0,0.7706232870458144,0.003364086151123047,0.01085100152034807,1.0,1.0,1.0,1.0,1.0,1.0
278
+ 276,0.8414634146341463,0.3916233777999878,1.0,0.0,0.9008732458552243,0.02776336453487046,1.0,1.0,1.0,1.0,1.0,1.0,0.4563575958924796,0.3808028919330288,1.0,0.9501717534579748,0.0003266334533691406,0.026441073359688982,1.0,1.0,1.0,1.0,1.0,1.0
279
+ 277,0.8445121951219512,0.3915818929672241,1.0,0.0,0.9062319850583388,0.02626249191421157,1.0,1.0,1.0,1.0,1.0,1.0,0.8233766233766233,0.4583487597186226,1.0,0.9757896264969512,0.0009751319885259457,0.01748297758725894,1.0,1.0,1.0,1.0,1.0,1.0
280
+ 278,0.8475609756097561,0.3915258646011352,1.0,0.0,0.9071153977715019,0.026015066776144565,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.3252499074416881,1.0,0.9653426171737044,0.0016522407531743832,0.016536962653303823,1.0,1.0,1.0,1.0,1.0,1.0
281
+ 279,0.850609756097561,0.3914166688919067,1.0,0.0,0.912136367300929,0.024608795648881188,1.0,1.0,1.0,1.0,1.0,1.0,0.4936708860759493,0.0933450573861532,1.0,0.958061384845428,0.00255584716796875,0.021920777722081418,1.0,1.0,1.0,1.0,1.0,1.0
282
+ 280,0.8536585365853658,0.3917814493179321,1.0,0.0,0.9149420248175221,0.023822989003936423,1.0,1.0,1.0,1.0,1.0,1.0,0.6506024096385542,0.1159524250277674,0.9905101889037632,0.9095372899707838,0.00850439071655329,0.0049089007450472955,1.0,1.0,0.0,1.0,1.0,1.0
283
+ 281,0.8567073170731707,0.392267107963562,1.0,0.0,0.9138890486892751,0.024117905574376458,1.0,1.0,1.0,1.0,1.0,1.0,0.8452380952380952,0.4186486486486487,0.9972486772486772,0.9948493136570152,0.0017428398132324219,-0.05077063386194538,1.0,1.0,0.0,1.0,1.0,1.0
284
+ 282,0.8597560975609756,0.3919557332992553,1.0,0.0,0.8968147996910931,0.02890005239013096,1.0,1.0,1.0,1.0,1.0,1.0,0.7273504273504273,0.3760468214693566,1.0,0.9893241755889484,0.008485317230225164,-0.04714729130432246,1.0,1.0,0.0,1.0,1.0,1.0
285
+ 283,0.8628048780487805,0.3914185762405395,1.0,0.0,0.8970555083210856,0.028832634704808704,1.0,1.0,1.0,1.0,1.0,1.0,0.6974358974358974,0.4168728587742671,0.9996484611867328,0.9879832440988114,0.005173683166503351,0.0010037235094963182,1.0,1.0,0.0,1.0,1.0,1.0
286
+ 284,0.8658536585365854,0.391438364982605,1.0,0.0,0.8971731687186246,0.02879968003918133,1.0,1.0,1.0,1.0,1.0,1.0,0.6698005698005698,0.472401979444233,0.9992571645191672,0.9897344248597238,0.0043964385986328125,-0.006400826228582478,1.0,1.0,0.0,1.0,1.0,1.0
287
+ 285,0.8689024390243902,0.3918582201004028,1.0,0.0,0.8947701486053181,0.02947271732766695,1.0,1.0,1.0,1.0,1.0,1.0,0.7073170731707317,0.4618861819566044,0.999440329218107,0.9897570561043386,0.004298686981201172,-0.005350311076744961,1.0,1.0,0.0,1.0,1.0,1.0
288
+ 286,0.8719512195121951,0.3918682336807251,1.0,0.0,0.8952628876570708,0.029334711146855826,1.0,1.0,1.0,1.0,1.0,1.0,0.6879518072289157,0.0135135135135134,0.9953770638107988,0.9628917680126784,0.00048398971557561676,0.005030575121779748,1.0,1.0,0.0,1.0,1.0,1.0
289
+ 287,0.875,0.3918098211288452,1.0,0.0,0.8965662706053051,0.028969659815488977,1.0,1.0,1.0,1.0,1.0,1.0,0.7048192771084338,0.010135135135135,0.9969024245128664,0.9576483992381644,0.0035500526428228207,0.004674999478718848,1.0,1.0,0.0,1.0,1.0,1.0
290
+ 288,0.8780487804878049,0.3915132284164428,1.0,0.0,0.8969320536401602,0.02886721119898394,1.0,1.0,1.0,1.0,1.0,1.0,0.5713675213675213,0.0,0.9921681966867152,0.7984101416937238,0.00396728515625,0.0014046203366491206,1.0,1.0,0.0,1.0,1.0,1.0
291
+ 289,0.8810975609756098,0.3914130926132202,1.0,0.0,0.8970677792373044,0.028829197781824065,1.0,1.0,1.0,1.0,1.0,1.0,0.5497835497835498,0.0,0.98999518999519,0.7202364864864865,5.245208740234375e-05,1.2710984931274538e-05,1.0,1.0,0.0,1.0,1.0,1.0
292
+ 290,0.8841463414634146,0.3915079832077026,1.0,0.0,0.8969365925340977,0.028865940100490813,1.0,1.0,1.0,1.0,1.0,1.0,0.6103896103896104,0.0,0.9911014911014911,0.7380865074672414,0.0019598007202148438,-0.0002023287603786575,1.0,1.0,0.0,1.0,1.0,1.0
293
+ 291,0.8871951219512195,0.3916090726852417,1.0,0.0,0.8969955386733086,0.02884943065786193,1.0,1.0,1.0,1.0,1.0,1.0,0.5670995670995671,0.0,0.9960451071562184,0.6905424214811781,0.000698566436767023,-0.0004298350858503511,1.0,1.0,0.0,1.0,1.0,1.0
294
+ 292,0.8902439024390244,0.3914381265640259,1.0,0.0,0.896783124863397,0.02890892360907585,1.0,1.0,1.0,1.0,1.0,1.0,0.5774891774891775,0.0,0.9864900860456416,0.7097355769230769,0.0037717819213867188,0.00015314335639417948,1.0,1.0,0.0,1.0,1.0,1.0
295
+ 293,0.8932926829268293,0.391231894493103,1.0,0.0,0.8970502156138911,0.028834116322222512,1.0,1.0,1.0,1.0,1.0,1.0,0.498989898989899,0.0,0.985897493453049,0.7024714554126319,0.0002646446228027344,0.00029039828819854563,1.0,1.0,0.0,1.0,1.0,1.0
296
+ 294,0.8963414634146342,0.3914116621017456,1.0,0.0,0.8968868098115803,0.028879883780255994,1.0,1.0,1.0,1.0,1.0,1.0,0.5324675324675325,0.0033783783783783,0.9957287157287156,0.7229163187901052,0.003926753997802734,-0.00023902442412671726,1.0,1.0,0.0,1.0,1.0,1.0
297
+ 295,0.899390243902439,0.3916245698928833,1.0,0.0,0.8969648738785612,0.028858018764635184,1.0,1.0,1.0,1.0,1.0,1.0,0.5070707070707071,0.0,0.9953749844120214,0.7371287128712871,0.0003147125244140625,0.00026531619954441726,1.0,1.0,0.0,1.0,1.0,1.0
298
+ 296,0.902439024390244,0.391443133354187,1.0,0.0,0.8969815383664738,0.028853352160301552,1.0,1.0,1.0,1.0,1.0,1.0,0.5064935064935066,0.0,0.9930543530543532,0.7191898581750067,0.002028942108154852,-0.00021662523812113893,1.0,1.0,0.0,1.0,1.0,1.0
299
+ 297,0.9054878048780488,0.3914216756820678,1.0,0.0,0.8968875326646946,0.028879681288447298,1.0,1.0,1.0,1.0,1.0,1.0,0.49004329004329,0.0,0.9848901715568382,0.7145945945945946,0.016360282897948664,-0.00015075776352454356,1.0,1.0,0.0,1.0,1.0,1.0
300
+ 298,0.9085365853658536,0.3930791616439819,1.0,0.0,0.8969277096360353,0.028868427936654006,1.0,1.0,1.0,1.0,1.0,1.0,0.5238095238095237,0.0033783783783783,0.9979423868312756,0.7328643076065756,0.0013351440429681949,-0.00015273861302837755,1.0,1.0,0.0,1.0,1.0,1.0
301
+ 299,0.9115853658536586,0.391288161277771,1.0,0.0,0.8968329974446408,0.028894955149750136,1.0,1.0,1.0,1.0,1.0,1.0,0.5760233918128654,0.0,0.986809616634178,0.730034176618479,0.01632213592529297,0.0002052558558006401,1.0,1.0,0.0,1.0,1.0,1.0
302
+ 300,0.9146341463414634,0.3914469480514526,1.0,0.0,0.89700099530568,0.028847902351073942,1.0,1.0,1.0,1.0,1.0,1.0,0.5272300469483568,0.0,0.9775288355648292,0.6857672091316951,0.0018572807312011719,0.00024163787810824178,1.0,1.0,0.0,1.0,1.0,1.0
303
+ 301,0.9176829268292684,0.3914738893508911,1.0,0.0,0.8969192717261606,0.02887079136193931,1.0,1.0,1.0,1.0,1.0,1.0,0.5799999999999998,0.0,0.948874074074074,0.7471160184574819,2.384185791015625e-05,-0.0007756491639211369,1.0,1.0,0.0,1.0,1.0,1.0
304
+ 302,0.9207317073170732,0.3914493322372436,1.0,0.0,0.896724055655933,0.028925467267466056,1.0,1.0,1.0,1.0,1.0,1.0,0.5877777777777777,0.0,0.9542484224965706,0.7111051841314999,0.003974437713623047,-0.0005158643022382114,1.0,1.0,0.0,1.0,1.0,1.0
305
+ 303,0.923780487804878,0.3918713331222534,1.0,0.0,0.8967350879070884,0.028922377792163133,1.0,1.0,1.0,1.0,1.0,1.0,0.6298412698412699,0.0067567567567567,0.932366059180874,0.627514681972603,0.003945827484130859,-0.0003622976091700175,1.0,1.0,0.0,1.0,1.0,1.0
306
+ 304,0.926829268292683,0.3910547494888305,1.0,0.0,0.896594703006145,0.028961697028383058,1.0,1.0,1.0,1.0,1.0,1.0,0.5310789049919484,0.0033783783783783,0.9124680622651636,0.5898517029218042,0.0042319297790532895,0.0010555330579930036,1.0,1.0,0.0,1.0,1.0,1.0
307
+ 305,0.929878048780488,0.3914481401443481,1.0,0.0,0.8971119561853949,0.028816824486363832,1.0,1.0,1.0,1.0,1.0,1.0,0.6315619967793881,0.0,0.9237196874813622,0.6238425925925926,0.002372264862061102,0.0008750896065303979,1.0,1.0,0.0,1.0,1.0,1.0
308
+ 306,0.9329268292682928,0.3912919759750366,1.0,0.0,0.896907146139359,0.028874188067730018,1.0,1.0,1.0,1.0,1.0,1.0,0.6231884057971014,0.0033783783783783,0.9225442834138486,0.6115222090728847,0.004014968872070868,-0.0003271555948505117,1.0,1.0,0.0,1.0,1.0,1.0
309
+ 307,0.9359756097560976,0.3918496370315552,1.0,0.0,0.8969951477975392,0.028849540045848884,1.0,1.0,1.0,1.0,1.0,1.0,0.5227053140096618,0.0,0.8942880658436214,0.6036036036036037,0.002276897430419922,0.00031404789549226847,1.0,1.0,0.0,1.0,1.0,1.0
310
+ 308,0.9390243902439024,0.3915196657180786,1.0,0.0,0.8970192753840884,0.02884278327818079,1.0,1.0,1.0,1.0,1.0,1.0,0.6064412238325283,0.0,0.914556964824565,0.5485966735966736,0.0022530555725097656,-0.00046864352644563484,1.0,1.0,0.0,1.0,1.0,1.0
311
+ 309,0.9420731707317072,0.3916243314743042,1.0,0.0,0.8968278251665435,0.028896404398493447,1.0,1.0,1.0,1.0,1.0,1.0,0.5896940418679548,0.0,0.9061391599044342,0.5474324324324324,0.0031256675720220395,-0.00011833349580912117,1.0,1.0,0.0,1.0,1.0,1.0
312
+ 310,0.945121951219512,0.3912070989608764,1.0,0.0,0.896977022982665,0.028854616627761703,1.0,1.0,1.0,1.0,1.0,1.0,0.5813204508856682,0.0,0.9118569370285616,0.6245668745668745,0.0021600723266601562,0.00035968844998846006,1.0,1.0,0.0,1.0,1.0,1.0
313
+ 311,0.948170731707317,0.3914083242416382,1.0,0.0,0.8969562469702679,0.0288604355534946,1.0,1.0,1.0,1.0,1.0,1.0,0.5961904761904762,0.0034722222222222,0.9295921855921856,0.629770750864501,0.003256797790527899,-0.0003266130522786709,1.0,1.0,0.0,1.0,1.0,1.0
314
+ 312,0.951219512195122,0.3915327787399292,1.0,0.0,0.896860407315617,0.02888727793298957,1.0,1.0,1.0,1.0,1.0,1.0,0.5961904761904762,0.0,0.9849244444444444,0.6009290540540541,0.005414485931395929,-0.0002436741439214643,1.0,1.0,0.0,1.0,1.0,1.0
315
+ 313,0.9542682926829268,0.3919497728347778,1.0,0.0,0.8968692474923968,0.028884802967886748,1.0,1.0,1.0,1.0,1.0,1.0,0.5204761904761905,0.0,0.9914751322751324,0.545045045045045,0.001068115234375,0.00035755188188789366,1.0,1.0,0.0,1.0,1.0,1.0
316
+ 314,0.9573170731707316,0.3914259672164917,1.0,0.0,0.8969880712073491,0.02885152274480078,1.0,1.0,1.0,1.0,1.0,1.0,0.5705790297339592,0.0,0.9899067720663964,0.563063063063063,0.001354217529296875,0.04682875475803986,1.0,1.0,1.0,1.0,1.0,1.0
317
+ 315,0.9603658536585366,0.3918143510818481,1.0,1.0,0.9135890584838219,0.02420192749208276,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8470884360327218,1.0,0.9675457968368336,0.00011920928955078125,0.033578289536896865,1.0,1.0,1.0,1.0,1.0,1.0
318
+ 316,0.9634146341463414,0.3914140462875366,1.0,1.0,0.9089769158310053,0.025493693791111095,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8449900793650794,1.0,0.96369136994137,0.0018835067749017886,-0.018569566722703885,1.0,1.0,0.0,1.0,1.0,1.0
319
+ 317,0.9664634146341464,0.3916260004043579,1.0,1.0,0.9069589512567355,0.02605888416435315,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8588368153585545,1.0,0.9703759294552132,0.0010633468627929688,-0.006698548922085164,1.0,1.0,0.0,1.0,1.0,1.0
320
+ 318,0.9695121951219512,0.3915203809738159,1.0,1.0,0.9065852554156536,0.02616354868331961,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8490544543176122,1.0,0.9664848760243496,0.001780986785889227,-0.003016714384664436,1.0,1.0,0.0,1.0,1.0,1.0
321
+ 319,0.972560975609756,0.391447901725769,1.0,1.0,0.9058818588262141,0.026360555602819594,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8338293650793651,1.0,0.9610771485771484,0.002665519714356024,-0.0012962962448814438,1.0,1.0,0.0,1.0,1.0,1.0
322
+ 320,0.975609756097561,0.3912538290023803,1.0,1.0,0.9061224237742421,0.026293178307807755,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8368506493506493,1.0,0.9625197437697438,0.005884170532227118,0.0013180230863809456,1.0,1.0,0.0,1.0,1.0,1.0
323
+ 321,0.9786585365853658,0.3920363187789917,1.0,1.0,0.9063524478488666,0.0262287532941815,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8478084415584416,1.0,0.9646479798506824,0.001304149627686102,-0.0008127108667336722,1.0,1.0,0.0,1.0,1.0,1.0
324
+ 322,0.9817073170731708,0.3913842439651489,1.0,1.0,0.9058322513730124,0.026374449394481123,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8575985418090681,1.0,0.9687294095188832,0.007798671722412109,-0.0008841850387101072,1.0,1.0,0.0,1.0,1.0,1.0
325
+ 323,0.9847560975609756,0.3912564516067505,1.0,1.0,0.9060367562022127,0.02631717179805251,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8553082191780822,1.0,0.9668750136115164,0.00010251998901367188,0.001589135167945413,1.0,1.0,0.0,1.0,1.0,1.0
326
+ 324,0.9878048780487804,0.3913944959640503,1.0,1.0,0.9063996386876098,0.02621553587768658,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8449900793650794,1.0,0.964069584837814,0.0032687187194818668,0.0006944354437097428,1.0,1.0,0.0,1.0,1.0,1.0
327
+ 325,0.9908536585365854,0.3915833234786987,1.0,1.0,0.9062846985246259,0.026247728253681536,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8418401451489688,1.0,0.9668090606671922,0.0006031990051269531,-0.00028014814184455783,1.0,1.0,0.0,1.0,1.0,1.0
328
+ 326,0.9939024390243902,0.391454815864563,1.0,1.0,0.9062996141549017,0.026243550691871037,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8497431506849316,1.0,0.9673925915238364,0.0017261505126947574,-1.138857619705641e-05,1.0,1.0,0.0,1.0,1.0,1.0
329
+ 327,0.9969512195121952,0.3914107084274292,1.0,1.0,0.9062806331637525,0.02624886711130124,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8506268037518038,1.0,0.9642797296407938,0.0033211708068842105,-0.001442379025393542,1.0,1.0,0.0,1.0,1.0,1.0
330
+ 328,1.0,0.3917869329452514,1.0,1.0,0.905784625720522,0.02638778859441039,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8449900793650794,1.0,0.9640404913842414,0.007524490356444202,-0.002778429662183002,1.0,1.0,0.0,1.0,1.0,1.0
artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.keyframes.csv ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_index,time_norm,door_angle,right_gripper_open,left_gripper_open,pregrasp_progress,pregrasp_distance,p_pre,p_ext,y_pre_raw,y_ext_raw,y_pre,y_ext,three_view_visibility,three_view_whole_tray_visibility,full_view_visibility,full_view_whole_tray_visibility,door_speed_abs,pregrasp_speed,y_pre_progress_seed,phase_score,approach_active,y_retrieve,y_ready,phase_switch,keyframe_ordinal
2
+ 61,0.1859756097560975,1.5707963705062866,1.0,1.0,0.0003966207773271613,0.27996834683588046,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008864560822093304,0.0,0.0,0.0,0.0,0.0,0.0,0
3
+ 91,0.2774390243902439,1.5704001188278198,0.0,1.0,0.005002393682502104,0.27867836459827655,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0020718574523947986,0.010448094188048596,0.0,0.0,0.0,0.0,0.0,0.0,1
4
+ 93,0.2835365853658536,1.569938063621521,0.0,1.0,0.006840924530867487,0.2781634299639764,0.0,0.0007311503092447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.002665519714357689,0.006444191656841958,0.0,0.0,0.0,0.0,0.0,0.0,2
5
+ 130,0.3963414634146341,0.728131890296936,1.0,1.0,0.01907851101545255,0.27473593387861606,0.44620877071596826,0.0007311503092447,0.0,0.0,0.0,0.0,0.7,0.7673611111111112,0.9417283950617285,0.8622844789512951,0.08178234100341797,0.007885939925640906,0.0,0.44620877071596826,0.0,0.0,0.0,0.0,3
6
+ 132,0.4024390243902439,0.7292441129684448,1.0,1.0,0.020499772720911857,0.27433786558532053,0.4447570287929474,0.0007315476735432,0.0,0.0,0.0,0.0,0.7,0.7638888888888888,0.9417283950617285,0.8602290234132547,0.014355182647705078,0.005093607297941838,0.0,0.4447570287929474,0.0,0.0,0.0,0.0,4
7
+ 175,0.5335365853658537,0.7309871912002563,1.0,1.0,0.005424323805194087,0.2785601884693985,0.7222230970999384,0.0007311503092447,0.0,0.0,0.0,0.0,0.83,0.8596476124885216,0.9669794238683128,0.9169154294499549,0.013387203216552734,0.011233225893156895,0.0,0.7222230970999384,0.0,0.0,0.0,1.0,5
8
+ 234,0.7134146341463414,0.5661109685897827,1.0,0.0,0.8869339516211069,0.03166747458623281,0.0,1.0,0.0,1.0,0.0,1.0,0.964102564102564,0.3174825174825174,0.9764583729028172,0.574679636950962,0.057735443115234375,-0.020575684207202113,1.0,0.0,0.0,0.0,1.0,1.0,6
9
+ 236,0.7195121951219512,0.5650361776351929,1.0,0.0,0.9045016076100404,0.026747135417500293,1.0,1.0,1.0,1.0,1.0,1.0,0.7743589743589743,0.4888927058284666,0.9095702578171714,0.7931544024948072,0.0016927719116210938,0.0641049075699722,1.0,1.0,1.0,1.0,1.0,1.0,7
10
+ 266,0.8109756097560976,0.3912373781204223,1.0,0.0,0.8969682359413229,0.028857077627018207,1.0,0.8934814612070715,1.0,1.0,1.0,1.0,0.2611832611832612,0.0543372714031397,1.0,0.7411566783889578,0.005085468292236328,0.00031369128170408156,1.0,1.0,0.0,1.0,1.0,1.0,8
11
+ 295,0.899390243902439,0.3916245698928833,1.0,0.0,0.8969648738785612,0.028858018764635184,1.0,1.0,1.0,1.0,1.0,1.0,0.5070707070707071,0.0,0.9953749844120214,0.7371287128712871,0.0003147125244140625,0.00026531619954441726,1.0,1.0,0.0,1.0,1.0,1.0,9
12
+ 315,0.9603658536585366,0.3918143510818481,1.0,1.0,0.9135890584838219,0.02420192749208276,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8470884360327218,1.0,0.9675457968368336,0.00011920928955078125,0.033578289536896865,1.0,1.0,1.0,1.0,1.0,1.0,10
13
+ 317,0.9664634146341464,0.3916260004043579,1.0,1.0,0.9069589512567355,0.02605888416435315,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8588368153585545,1.0,0.9703759294552132,0.0010633468627929688,-0.006698548922085164,1.0,1.0,0.0,1.0,1.0,1.0,11
14
+ 322,0.9817073170731708,0.3913842439651489,1.0,1.0,0.9058322513730124,0.026374449394481123,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8575985418090681,1.0,0.9687294095188832,0.007798671722412109,-0.0008841850387101072,1.0,1.0,0.0,1.0,1.0,1.0,12
15
+ 328,1.0,0.3917869329452514,1.0,1.0,0.905784625720522,0.02638778859441039,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.8449900793650794,1.0,0.9640404913842414,0.007524490356444202,-0.002778429662183002,1.0,1.0,0.0,1.0,1.0,1.0,13
artifacts/results/metric_iter22_ep0_pregrasp_repair/episode0.metrics.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "episode_name": "episode0",
3
+ "description": "take tray out of oven",
4
+ "num_dense_frames": 329,
5
+ "num_keyframes": 14,
6
+ "phase_switch_rises": 1,
7
+ "phase_switch_falls": 0,
8
+ "ppre_cross_frame": 138,
9
+ "pext_cross_frame": 232,
10
+ "phase_cross_frame": 143,
11
+ "retrieve_cross_frame": 235,
12
+ "ready_cross_frame": 234,
13
+ "ordering_ok": true,
14
+ "dense_boundary_error_to_retrieve_frames": 92.0,
15
+ "dense_boundary_error_frames": 91.0,
16
+ "dense_boundary_error_fraction": 0.2765957446808511,
17
+ "key_boundary_error_to_retrieve_keyframes": 2.0,
18
+ "key_boundary_error_keyframes": 1.0,
19
+ "auroc_vret_ypre_three": 0.5981892258940698,
20
+ "auprc_vret_ypre_three": 0.43447287211488084,
21
+ "auroc_vret_ypre_full": 0.8700316885468538,
22
+ "auprc_vret_ypre_full": 0.8448747258661806,
23
+ "auroc_ppre_ypre": 0.9914893617021276,
24
+ "auprc_ppre_ypre": 0.9591836734693877,
25
+ "auroc_pext_yext": 1.0,
26
+ "auprc_pext_yext": 1.0,
27
+ "auroc_phase_yretrieve": 0.9914893617021276,
28
+ "auprc_phase_yretrieve": 0.9591836734693877,
29
+ "f1_phase_yretrieve": 0.6714285714285714,
30
+ "auroc_phase_yready": 0.9838281601439496,
31
+ "auprc_phase_yready": 0.952126516900153,
32
+ "f1_phase_yready": 0.6761565836298933,
33
+ "baseline_auroc_door_yext": 0.0,
34
+ "baseline_auprc_door_yext": 0.16602997815735956,
35
+ "baseline_auroc_time_yext": 1.0,
36
+ "baseline_auprc_time_yext": 1.0,
37
+ "baseline_auroc_whole_vis_yext": 0.6285104870245289,
38
+ "baseline_auprc_whole_vis_yext": 0.5079253033451323,
39
+ "pre_ready_open_more_increases_pext": 2.0,
40
+ "pre_ready_open_more_trials": 2.0,
41
+ "pre_ready_hold_open_increases_pext": 0.0,
42
+ "pre_ready_hold_open_trials": 2.0,
43
+ "pre_ready_extract_success": 0.0,
44
+ "pre_ready_extract_trials": 2.0,
45
+ "pre_ready_wait_extract_success": 0.0,
46
+ "pre_ready_wait_trials": 2.0,
47
+ "post_ready_extract_success": 2.0,
48
+ "post_ready_extract_trials": 2.0,
49
+ "post_ready_open_more_low_gain": 2.0,
50
+ "post_ready_open_more_trials": 2.0,
51
+ "post_ready_hold_open_low_gain": 2.0,
52
+ "post_ready_hold_open_trials": 2.0
53
+ }
artifacts/results/metric_iter22_ep0_pregrasp_repair/summary.json ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "num_episodes": 1,
3
+ "mean_metrics": {
4
+ "num_dense_frames": 329.0,
5
+ "num_keyframes": 14.0,
6
+ "phase_switch_rises": 1.0,
7
+ "phase_switch_falls": 0.0,
8
+ "ppre_cross_frame": 138.0,
9
+ "pext_cross_frame": 232.0,
10
+ "phase_cross_frame": 143.0,
11
+ "retrieve_cross_frame": 235.0,
12
+ "ready_cross_frame": 234.0,
13
+ "dense_boundary_error_to_retrieve_frames": 92.0,
14
+ "dense_boundary_error_frames": 91.0,
15
+ "dense_boundary_error_fraction": 0.2765957446808511,
16
+ "key_boundary_error_to_retrieve_keyframes": 2.0,
17
+ "key_boundary_error_keyframes": 1.0,
18
+ "auroc_vret_ypre_three": 0.5981892258940698,
19
+ "auprc_vret_ypre_three": 0.43447287211488084,
20
+ "auroc_vret_ypre_full": 0.8700316885468538,
21
+ "auprc_vret_ypre_full": 0.8448747258661806,
22
+ "auroc_ppre_ypre": 0.9914893617021276,
23
+ "auprc_ppre_ypre": 0.9591836734693877,
24
+ "auroc_pext_yext": 1.0,
25
+ "auprc_pext_yext": 1.0,
26
+ "auroc_phase_yretrieve": 0.9914893617021276,
27
+ "auprc_phase_yretrieve": 0.9591836734693877,
28
+ "f1_phase_yretrieve": 0.6714285714285714,
29
+ "auroc_phase_yready": 0.9838281601439496,
30
+ "auprc_phase_yready": 0.952126516900153,
31
+ "f1_phase_yready": 0.6761565836298933,
32
+ "baseline_auroc_door_yext": 0.0,
33
+ "baseline_auprc_door_yext": 0.16602997815735956,
34
+ "baseline_auroc_time_yext": 1.0,
35
+ "baseline_auprc_time_yext": 1.0,
36
+ "baseline_auroc_whole_vis_yext": 0.6285104870245289,
37
+ "baseline_auprc_whole_vis_yext": 0.5079253033451323,
38
+ "pre_ready_open_more_increases_pext": 2.0,
39
+ "pre_ready_open_more_trials": 2.0,
40
+ "pre_ready_hold_open_increases_pext": 0.0,
41
+ "pre_ready_hold_open_trials": 2.0,
42
+ "pre_ready_extract_success": 0.0,
43
+ "pre_ready_extract_trials": 2.0,
44
+ "pre_ready_wait_extract_success": 0.0,
45
+ "pre_ready_wait_trials": 2.0,
46
+ "post_ready_extract_success": 2.0,
47
+ "post_ready_extract_trials": 2.0,
48
+ "post_ready_open_more_low_gain": 2.0,
49
+ "post_ready_open_more_trials": 2.0,
50
+ "post_ready_hold_open_low_gain": 2.0,
51
+ "post_ready_hold_open_trials": 2.0
52
+ },
53
+ "median_metrics": {
54
+ "num_dense_frames": 329.0,
55
+ "num_keyframes": 14.0,
56
+ "phase_switch_rises": 1.0,
57
+ "phase_switch_falls": 0.0,
58
+ "ppre_cross_frame": 138.0,
59
+ "pext_cross_frame": 232.0,
60
+ "phase_cross_frame": 143.0,
61
+ "retrieve_cross_frame": 235.0,
62
+ "ready_cross_frame": 234.0,
63
+ "dense_boundary_error_to_retrieve_frames": 92.0,
64
+ "dense_boundary_error_frames": 91.0,
65
+ "dense_boundary_error_fraction": 0.2765957446808511,
66
+ "key_boundary_error_to_retrieve_keyframes": 2.0,
67
+ "key_boundary_error_keyframes": 1.0,
68
+ "auroc_vret_ypre_three": 0.5981892258940698,
69
+ "auprc_vret_ypre_three": 0.43447287211488084,
70
+ "auroc_vret_ypre_full": 0.8700316885468538,
71
+ "auprc_vret_ypre_full": 0.8448747258661806,
72
+ "auroc_ppre_ypre": 0.9914893617021276,
73
+ "auprc_ppre_ypre": 0.9591836734693877,
74
+ "auroc_pext_yext": 1.0,
75
+ "auprc_pext_yext": 1.0,
76
+ "auroc_phase_yretrieve": 0.9914893617021276,
77
+ "auprc_phase_yretrieve": 0.9591836734693877,
78
+ "f1_phase_yretrieve": 0.6714285714285714,
79
+ "auroc_phase_yready": 0.9838281601439496,
80
+ "auprc_phase_yready": 0.952126516900153,
81
+ "f1_phase_yready": 0.6761565836298933,
82
+ "baseline_auroc_door_yext": 0.0,
83
+ "baseline_auprc_door_yext": 0.16602997815735956,
84
+ "baseline_auroc_time_yext": 1.0,
85
+ "baseline_auprc_time_yext": 1.0,
86
+ "baseline_auroc_whole_vis_yext": 0.6285104870245289,
87
+ "baseline_auprc_whole_vis_yext": 0.5079253033451323,
88
+ "pre_ready_open_more_increases_pext": 2.0,
89
+ "pre_ready_open_more_trials": 2.0,
90
+ "pre_ready_hold_open_increases_pext": 0.0,
91
+ "pre_ready_hold_open_trials": 2.0,
92
+ "pre_ready_extract_success": 0.0,
93
+ "pre_ready_extract_trials": 2.0,
94
+ "pre_ready_wait_extract_success": 0.0,
95
+ "pre_ready_wait_trials": 2.0,
96
+ "post_ready_extract_success": 2.0,
97
+ "post_ready_extract_trials": 2.0,
98
+ "post_ready_open_more_low_gain": 2.0,
99
+ "post_ready_open_more_trials": 2.0,
100
+ "post_ready_hold_open_low_gain": 2.0,
101
+ "post_ready_hold_open_trials": 2.0
102
+ },
103
+ "single_switch_rate": 1.0,
104
+ "reversion_rate": 0.0,
105
+ "ordering_ok_rate": 1.0
106
+ }
artifacts/results/metric_iter22_ep0_pregrasp_repair/templates.json ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "template_mode": "per_episode",
3
+ "template_episode": "episode0",
4
+ "template_frames": {
5
+ "pregrasp": 229,
6
+ "grasp": 234,
7
+ "right_close": 91,
8
+ "right_open": 130,
9
+ "approach": [
10
+ 177,
11
+ 187,
12
+ 197,
13
+ 208,
14
+ 218,
15
+ 229,
16
+ 232
17
+ ],
18
+ "retreat": [
19
+ 239,
20
+ 244,
21
+ 249,
22
+ 254,
23
+ 264,
24
+ 274,
25
+ 284,
26
+ 295,
27
+ 305,
28
+ 310,
29
+ 315
30
+ ]
31
+ },
32
+ "templates": {
33
+ "approach_rel_poses": [
34
+ [
35
+ -0.3625197505146321,
36
+ 0.08372429131714548,
37
+ 0.13691903626392898,
38
+ 0.6416348447407467,
39
+ 0.6410872565393582,
40
+ 0.29868034011062794,
41
+ 0.2968196589661076
42
+ ],
43
+ [
44
+ -0.32979445983162176,
45
+ 0.08659364792515764,
46
+ 0.12045077578809749,
47
+ 0.6287469690798895,
48
+ 0.6287301318727057,
49
+ 0.3243430018231259,
50
+ 0.32276506520462594
51
+ ],
52
+ [
53
+ -0.2910925493361141,
54
+ 0.08985276158129711,
55
+ 0.10101096601604831,
56
+ 0.6124184244028302,
57
+ 0.6122709767290938,
58
+ 0.35430518709849695,
59
+ 0.35289624381998647
60
+ ],
61
+ [
62
+ -0.244818538450706,
63
+ 0.09371070170750202,
64
+ 0.07770067425331129,
65
+ 0.5909841767637374,
66
+ 0.5908549510320831,
67
+ 0.3889344056030255,
68
+ 0.38776043866540033
69
+ ],
70
+ [
71
+ -0.19036243621330934,
72
+ 0.09824358579289771,
73
+ 0.04990667629200307,
74
+ 0.5635900638946065,
75
+ 0.5631538374566398,
76
+ 0.4277702591171187,
77
+ 0.4268917903310006
78
+ ],
79
+ [
80
+ -0.12217129631756263,
81
+ 0.09345070134195246,
82
+ -0.006546997831216039,
83
+ 0.5503450945485194,
84
+ 0.5264249147312487,
85
+ 0.4450459711257041,
86
+ 0.47109571176286236
87
+ ],
88
+ [
89
+ -0.11087643306877748,
90
+ 0.09014108451750254,
91
+ -0.031580235354697894,
92
+ 0.5622041544757288,
93
+ 0.5226343775452266,
94
+ 0.43323659021636735,
95
+ 0.472319651291199
96
+ ]
97
+ ],
98
+ "pregrasp_rel_pose": [
99
+ -0.12217129631756263,
100
+ 0.09345070134195246,
101
+ -0.006546997831216039,
102
+ 0.5503450945485194,
103
+ 0.5264249147312487,
104
+ 0.4450459711257041,
105
+ 0.47109571176286236
106
+ ],
107
+ "grasp_rel_pose": [
108
+ -0.09865615619553114,
109
+ 0.09471180553609355,
110
+ -0.023587008474192483,
111
+ 0.5452601219922814,
112
+ 0.5150377871073674,
113
+ 0.45379910210390734,
114
+ 0.48113808012481835
115
+ ],
116
+ "retreat_rel_poses": [
117
+ [
118
+ 0.2548525929450989,
119
+ 0.23748670518398285,
120
+ 0.292730450630188,
121
+ 0.3300291728725241,
122
+ 0.627796734434498,
123
+ 0.6244628081014154,
124
+ 0.3271058033489361
125
+ ],
126
+ [
127
+ 0.22123366594314575,
128
+ 0.20692090690135956,
129
+ 0.3001290559768677,
130
+ 0.3293369490711715,
131
+ 0.6272174893562581,
132
+ 0.6253236114995244,
133
+ 0.3272701879538016
134
+ ],
135
+ [
136
+ 0.17805954813957214,
137
+ 0.16776257753372192,
138
+ 0.3092261552810669,
139
+ 0.3292203946981642,
140
+ 0.627092205167199,
141
+ 0.6254558193462786,
142
+ 0.3273748859934127
143
+ ],
144
+ [
145
+ 0.132161945104599,
146
+ 0.1261904537677765,
147
+ 0.31862151622772217,
148
+ 0.32922833561062037,
149
+ 0.6270130163004302,
150
+ 0.6255370861132601,
151
+ 0.32736330630941085
152
+ ],
153
+ [
154
+ 0.05666536092758179,
155
+ 0.058310166001319885,
156
+ 0.33417391777038574,
157
+ 0.3290531759368521,
158
+ 0.6267400620289424,
159
+ 0.6259557840834131,
160
+ 0.3272617582705744
161
+ ],
162
+ [
163
+ 0.0558415949344635,
164
+ 0.05751470848917961,
165
+ 0.3844491243362427,
166
+ 0.32944931283048395,
167
+ 0.6271554580797323,
168
+ 0.6255767695203596,
169
+ 0.3267918100454689
170
+ ],
171
+ [
172
+ 0.05576580762863159,
173
+ 0.053012214601039886,
174
+ 0.5137358903884888,
175
+ 0.3352571906446373,
176
+ 0.6275228042160846,
177
+ 0.6205178281888475,
178
+ 0.329811114442256
179
+ ],
180
+ [
181
+ 0.05594903230667114,
182
+ 0.05725332349538803,
183
+ 0.6016567945480347,
184
+ 0.3290406683903203,
185
+ 0.6269357648722236,
186
+ 0.625839814295268,
187
+ 0.3271212498634039
188
+ ],
189
+ [
190
+ 0.11017268896102905,
191
+ 0.09445947408676147,
192
+ 0.6008111238479614,
193
+ 0.3295905054305836,
194
+ 0.6274618621218736,
195
+ 0.6252874250360436,
196
+ 0.3266149819043174
197
+ ],
198
+ [
199
+ 0.1597837209701538,
200
+ 0.1288578361272812,
201
+ 0.6011183261871338,
202
+ 0.3293548308249215,
203
+ 0.627458650421648,
204
+ 0.6253267712318655,
205
+ 0.32678351642036935
206
+ ],
207
+ [
208
+ 0.19115081429481506,
209
+ 0.15017743408679962,
210
+ 0.6012866497039795,
211
+ 0.3296702831570499,
212
+ 0.6273651178974856,
213
+ 0.6251746471824625,
214
+ 0.3269360392628933
215
+ ]
216
+ ],
217
+ "grasp_local_center": [
218
+ -0.09865615619553109,
219
+ 0.09471180553609354,
220
+ -0.02358700847419226
221
+ ],
222
+ "grasp_region_extents": [
223
+ 0.03,
224
+ 0.015,
225
+ 0.004
226
+ ],
227
+ "retriever_home_joints": [
228
+ 1.4340894267661497e-06,
229
+ 0.17521002888679504,
230
+ 6.947189831407741e-06,
231
+ -0.8730043768882751,
232
+ -1.9187582438462414e-05,
233
+ 1.2215814590454102,
234
+ 0.7853902578353882
235
+ ],
236
+ "hold_open_angle": 0.7285879850387573,
237
+ "open_more_delta": 0.12,
238
+ "reference_tray_height": 1.0472617149353027,
239
+ "mask_handle_ids": [
240
+ 192
241
+ ]
242
+ }
243
+ }
artifacts/results/metric_iter22_ep0_pregrasp_repair/templates.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9654a892a8bc231d35df19d719d44ddddb754b3a6748332d18d91e6eb3ba48f6
3
+ size 2351
artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Visualizations
2
+
3
+ - `episode0_visibility_focus.gif`: three-view visibility montage over dense frames 131-171.
4
+ - `episode0_path_quality_focus.gif`: path-quality montage over dense frames 135-223.
5
+ - `episode0_all_metrics.gif`: full episode overlay GIF over dense frames 0-328, sampled every 2 frames.
6
+ - `frames/visibility_focus/`: per-frame PNGs with scene overlays, x-ray projections, and tray-mask views.
7
+ - `frames/path_quality_focus/`: per-frame PNGs with demo wrist trails plus planned pregrasp/grasp/retreat path overlays.
8
+ - `frames/all_metrics/`: per-frame PNGs with the episode-wide metric bars and phase banner.
9
+
10
+ Legend highlights:
11
+ - Visibility: blue = sampled tray surface, magenta = sampled grasp region, green = depth-consistent visible grasp samples.
12
+ - Path quality: cyan/purple = recent left/right demo wrist trails, yellow = pregrasp, orange = grasp, green = retreat / extraction path.
13
+ - All metrics: red banner = reveal phase, green banner = retrieve phase.
artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_all_metrics.gif ADDED

Git LFS Details

  • SHA256: a3a149a3476e0991d4eb639b5f6db7e08d43132fed5606cb2687724f85871673
  • Pointer size: 133 Bytes
  • Size of remote file: 14.5 MB
artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_path_quality_focus.gif ADDED

Git LFS Details

  • SHA256: 87bc1e164619dfe9090dbdbf48d7f7f84a43b8f21ae7d1909a18e76484091937
  • Pointer size: 132 Bytes
  • Size of remote file: 5.01 MB
artifacts/results/metric_iter22_ep0_pregrasp_repair/visualizations/episode0_visibility_focus.gif ADDED

Git LFS Details

  • SHA256: 379bde6a64f795307f22d19746f910c2d5a9e0f709590a4b5e3122fc79341aec
  • Pointer size: 132 Bytes
  • Size of remote file: 3.34 MB
artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.dense.csv ADDED
@@ -0,0 +1,313 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_index,time_norm,door_angle,right_gripper_open,left_gripper_open,pregrasp_progress,pregrasp_distance,p_pre,p_ext,y_pre_raw,y_ext_raw,y_pre,y_ext,three_view_visibility,three_view_whole_tray_visibility,full_view_visibility,full_view_whole_tray_visibility,door_speed_abs,pregrasp_speed,y_pre_progress_seed,phase_score,approach_active,y_retrieve,y_ready,phase_switch
2
+ 0,0.0,1.5707966089248655,1.0,1.0,0.0,0.4203838495762581,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.029834118846104873,0.0,0.0,0.0,0.0,0.0,0.0
3
+ 1,0.0032154340836012,1.5707966089248655,1.0,1.0,0.0,0.41889214363395283,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.030836864845421585,0.0,0.0,0.0,0.0,0.0,0.0
4
+ 2,0.0064308681672025,1.5707966089248655,1.0,1.0,0.0,0.4173001630917159,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.03581839781183538,0.0,0.0,0.0,0.0,0.0,0.0
5
+ 3,0.0096463022508038,1.5707966089248655,1.0,1.0,0.0,0.4153103038527693,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.046036826189782,0.0,0.0,0.0,0.0,0.0,0.0
6
+ 4,0.0128617363344051,1.5707966089248655,1.0,1.0,0.0,0.4126964804727377,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05855835061947978,0.0,0.0,0.0,0.0,0.0,0.0
7
+ 5,0.0160771704180064,1.5707966089248655,1.0,1.0,0.0,0.4094544687908213,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06989860223346411,0.0,0.0,0.0,0.0,0.0,0.0
8
+ 6,0.0192926045016077,1.5707966089248655,1.0,1.0,0.0,0.4057066202493913,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08078924613917626,0.0,0.0,0.0,0.0,0.0,0.0
9
+ 7,0.022508038585209,1.5707966089248655,1.0,1.0,0.0,0.4013755441769037,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08906039040044778,0.0,0.0,0.0,0.0,0.0,0.0
10
+ 8,0.0257234726688102,1.5707966089248655,1.0,1.0,0.0,0.3968005812093465,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09472423788832562,0.0,0.0,0.0,0.0,0.0,0.0
11
+ 9,0.0289389067524115,1.5707966089248655,1.0,1.0,0.0,0.3919031203880711,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.100798973848793,0.0,0.0,0.0,0.0,0.0,0.0
12
+ 10,0.0321543408360128,1.5707966089248655,1.0,1.0,0.0,0.3867206838244672,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1060767525543338,0.0,0.0,0.0,0.0,0.0,0.0
13
+ 11,0.0353697749196141,1.5707966089248655,1.0,1.0,0.0,0.38129544513263774,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1104517338650074,0.0,0.0,0.0,0.0,0.0,0.0
14
+ 12,0.0385852090032154,1.5707966089248655,1.0,1.0,0.0,0.3756755104379665,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.11345011961536422,0.0,0.0,0.0,0.0,0.0,0.0
15
+ 13,0.0418006430868167,1.5707966089248655,1.0,1.0,0.0,0.3699504331711013,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1184708191160555,0.0,0.0,0.0,0.0,0.0,0.0
16
+ 14,0.045016077170418,1.5707966089248655,1.0,1.0,0.0,0.36382842852636094,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12555070858265793,0.0,0.0,0.0,0.0,0.0,0.0
17
+ 15,0.0482315112540192,1.5707966089248655,1.0,1.0,0.0,0.35739536231283553,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12899273100608066,0.0,0.0,0.0,0.0,0.0,0.0
18
+ 16,0.0514469453376205,1.5707966089248655,1.0,1.0,0.0,0.35092915542575287,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.13510069839749728,0.0,0.0,0.0,0.0,0.0,0.0
19
+ 17,0.0546623794212218,1.5707966089248655,1.0,1.0,0.0,0.3438852924730858,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.14247848425468168,0.0,0.0,0.0,0.0,0.0,0.0
20
+ 18,0.0578778135048231,1.5707966089248655,1.0,1.0,0.0,0.3366813070002847,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1443118600491744,0.0,0.0,0.0,0.0,0.0,0.0
21
+ 19,0.0610932475884244,1.5707966089248655,1.0,1.0,0.0,0.32945410646816836,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1448496923155279,0.0,0.0,0.0,0.0,0.0,0.0
22
+ 20,0.0643086816720257,1.5707966089248655,1.0,1.0,0.0,0.3221963377687319,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.14570731257182723,0.0,0.0,0.0,0.0,0.0,0.0
23
+ 21,0.067524115755627,1.5707966089248655,1.0,1.0,0.0,0.31488337521098564,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.14403609321488542,0.0,0.0,0.0,0.0,0.0,0.0
24
+ 22,0.0707395498392283,1.5707966089248655,1.0,1.0,0.0,0.30779272844724337,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.13982093976247334,0.0,0.0,0.0,0.0,0.0,0.0
25
+ 23,0.0739549839228295,1.5707966089248655,1.0,1.0,0.0,0.3009012812347383,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.13534421493782256,0.0,0.0,0.0,0.0,0.0,0.0
26
+ 24,0.0771704180064308,1.5707966089248655,1.0,1.0,0.0,0.2942583069534611,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12645516555488068,0.0,0.0,0.0,0.0,0.0,0.0
27
+ 25,0.0803858520900321,1.5707966089248655,1.0,1.0,0.0,0.28825576467925024,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.007400377180943329,0.0,0.0,0.0,0.0,0.0,0.0
28
+ 26,0.0836012861736334,1.5707966089248655,1.0,1.0,0.0,0.29499834467155545,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.0007727275850288873,0.0,0.0,0.0,0.0,0.0,0.0
29
+ 27,0.0868167202572347,1.5707966089248655,1.0,1.0,0.0,0.2883330374377531,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1273052042355488,0.0,0.0,0.0,0.0,0.0,0.0
30
+ 28,0.090032154340836,1.5707966089248655,1.0,1.0,0.0,0.28226782424800057,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.11545505939212941,0.0,0.0,0.0,0.0,0.0,0.0
31
+ 29,0.0932475884244373,1.5707966089248655,1.0,1.0,0.0,0.2767875314985402,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1025543368160603,0.0,0.0,0.0,0.0,0.0,0.0
32
+ 30,0.0964630225080385,1.5707966089248655,1.0,1.0,0.0,0.27201239056639454,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08211730513808801,0.0,0.0,0.0,0.0,0.0,0.0
33
+ 31,0.0996784565916398,1.5707966089248655,1.0,1.0,0.006305161165773843,0.2685758009847314,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05597278481345502,0.0,0.0,0.0,0.0,0.0,0.0
34
+ 32,0.1028938906752411,1.5707966089248655,1.0,1.0,0.014299329780733783,0.26641511208504903,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.030020317662921014,0.0,0.0,0.0,0.0,0.0,0.0
35
+ 33,0.1061093247588424,1.5707966089248655,1.0,1.0,0.01741218761388086,0.2655737692184393,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.003554782535097889,0.0,0.0,0.0,0.0,0.0,0.0
36
+ 34,0.1093247588424437,1.5707966089248655,1.0,1.0,0.015614552748928756,0.26605963383153924,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.012957401260962342,0.0,0.0,0.0,0.0,0.0,0.0
37
+ 35,0.112540192926045,1.5707966089248655,1.0,1.0,0.012618120630190743,0.2668695093445355,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.02164468217345339,0.0,0.0,0.0,0.0,0.0,0.0
38
+ 36,0.1157556270096463,1.5707966089248655,1.0,1.0,0.00760630686956365,0.2682241020488846,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.03150146004378129,0.0,0.0,0.0,0.0,0.0,0.0
39
+ 37,0.1189710610932476,1.5707966089248655,1.0,1.0,0.0009629973863990449,0.27001965534891365,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.0458316428575134,0.0,0.0,0.0,0.0,0.0,0.0
40
+ 38,0.1221864951768488,1.5707966089248655,1.0,1.0,0.0,0.2728072663346359,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.03877826590598321,0.0,0.0,0.0,0.0,0.0,0.0
41
+ 39,0.1254019292604501,1.5707966089248655,1.0,1.0,0.0,0.27389748193951197,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.023739923866781254,0.0,0.0,0.0,0.0,0.0,0.0
42
+ 40,0.1286173633440514,1.5707966089248655,1.0,1.0,0.0,0.27518125872131405,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.004166084245633694,0.0,0.0,0.0,0.0,0.0,0.0
43
+ 41,0.1318327974276527,1.5707966089248655,1.0,1.0,0.0,0.27431409036407534,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.016394312315768933,0.0,0.0,0.0,0.0,0.0,0.0
44
+ 42,0.135048231511254,1.5707966089248655,1.0,1.0,0.0,0.27354182748973715,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007299968377837973,0.0,0.0,0.0,0.0,0.0,0.0
45
+ 43,0.1382636655948553,1.5707966089248655,1.0,1.0,0.0,0.27358409352629154,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0035299951227685256,0.0,0.0,0.0,0.0,0.0,0.0
46
+ 44,0.1414790996784566,1.5707966089248655,1.0,1.0,0.0,0.2731888279774603,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.010007786538447916,0.0,0.0,0.0,0.0,0.0,0.0
47
+ 45,0.1446945337620578,1.5707966089248655,1.0,1.0,0.0,0.27258331487244675,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.012735153414401568,0.0,0.0,0.0,0.0,0.0,0.0
48
+ 46,0.1479099678456591,1.5707966089248655,1.0,1.0,0.0,0.27191531263602015,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.013683796940363036,0.0,0.0,0.0,0.0,0.0,0.0
49
+ 47,0.1511254019292604,1.5707966089248655,1.0,1.0,0.0,0.27121493517841044,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.013643192409392157,0.0,0.0,0.0,0.0,0.0,0.0
50
+ 48,0.1543408360128617,1.5707966089248655,1.0,1.0,0.0,0.27055099339508093,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.013726566849524002,0.0,0.0,0.0,0.0,0.0,0.0
51
+ 49,0.157556270096463,1.5707966089248655,1.0,1.0,0.001619272108033143,0.26984227849345804,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01413895371941476,0.0,0.0,0.0,0.0,0.0,0.0
52
+ 50,0.1607717041800643,1.5707966089248655,1.0,1.0,0.004228346512835879,0.26913709802313945,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01357803418747583,0.0,0.0,0.0,0.0,0.0,0.0
53
+ 51,0.1639871382636656,1.5707966089248655,1.0,1.0,0.006642965393127254,0.26848447507471046,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.026989837459132637,0.0,0.0,0.0,0.0,0.0,0.0
54
+ 52,0.1672025723472668,1.5707966089248655,1.0,1.0,0.0,0.2718360817690527,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.028487202733392114,0.0,0.0,0.0,0.0,0.0,0.0
55
+ 53,0.1704180064308681,1.5707966089248655,1.0,1.0,0.0,0.27133319534804967,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00935316817706755,0.0,0.0,0.0,0.0,0.0,0.0
56
+ 54,0.1736334405144694,1.5707966089248655,1.0,1.0,0.0,0.27090076495134596,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008563564456479655,0.0,0.0,0.0,0.0,0.0,0.0
57
+ 55,0.1768488745980707,1.5707966089248655,1.0,1.0,0.0,0.2704768389024017,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008158701053422313,0.0,0.0,0.0,0.0,0.0,0.0
58
+ 56,0.180064308681672,1.5707966089248655,1.0,1.0,0.0007217138757549257,0.27008489484600373,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0073930458724347226,0.0,0.0,0.0,0.0,0.0,0.0
59
+ 57,0.1832797427652733,1.5707966089248655,1.0,1.0,0.0020069017828643343,0.26973753431515823,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007674318422092874,0.0,0.0,0.0,0.0,0.0,0.0
60
+ 58,0.1864951768488746,1.5707966089248655,1.0,1.0,0.0035611100645090987,0.26931746300379444,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007668496105138201,0.0,0.0,0.0,0.0,0.0,0.0
61
+ 59,0.1897106109324758,1.5707966089248655,1.0,1.0,0.004844143916219457,0.2689706847046444,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0069181838298143505,0.0,0.0,0.0,0.0,0.0,0.0
62
+ 60,0.1929260450160771,1.5707966089248655,1.0,1.0,0.006120746743955574,0.268625644620813,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00707001359391668,0.0,0.0,0.0,0.0,0.0,0.0
63
+ 61,0.1961414790996784,1.5707966089248655,1.0,1.0,0.0074599555493291,0.26826368334525275,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00879710386837984,0.0,0.0,0.0,0.0,0.0,0.0
64
+ 62,0.1993569131832797,1.5707966089248655,1.0,1.0,0.009375547577089804,0.267745934233975,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.009292471081517317,0.0,0.0,0.0,0.0,0.0,0.0
65
+ 63,0.202572347266881,1.5707966089248655,1.0,1.0,0.010898035820831486,0.267334436237101,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00674994659141448,0.0,0.0,0.0,0.0,0.0,0.0
66
+ 64,0.2057877813504823,1.5707966089248655,1.0,1.0,0.01187293877240303,0.2670709395748336,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006145424808854383,0.0,0.0,0.0,0.0,0.0,0.0
67
+ 65,0.2090032154340836,1.5707966089248655,1.0,1.0,0.013171762333632486,0.2667198937562156,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007073857204413225,0.0,0.0,0.0,0.0,0.0,0.0
68
+ 66,0.2122186495176848,1.5707966089248655,1.0,1.0,0.014490172488696107,0.26636355385439225,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006617974452802766,0.0,0.0,0.0,0.0,0.0,0.0
69
+ 67,0.2154340836012861,1.5707966089248655,1.0,1.0,0.015620325640900878,0.2660580963109353,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.005878519539421756,0.0,0.0,0.0,0.0,0.0,0.0
70
+ 68,0.2186495176848874,1.5707966089248655,1.0,1.0,0.016665147997344976,0.2657757019004501,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006602457386649663,0.0,0.0,0.0,0.0,0.0,0.0
71
+ 69,0.2218649517684887,1.5707966089248655,1.0,1.0,0.018063147540687274,0.26539785057227033,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007344467166194857,0.0,0.0,0.0,0.0,0.0,0.0
72
+ 70,0.22508038585209,1.5707966089248655,1.0,1.0,0.01938250358297222,0.2650412551838306,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007146078725193683,0.0,0.0,0.0,0.0,0.0,0.0
73
+ 71,0.2282958199356913,1.5707966089248655,1.0,1.0,0.02070710287123223,0.26468324269975096,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007068475326458268,0.0,0.0,0.0,0.0,0.0,0.0
74
+ 72,0.2315112540192926,1.5707966089248655,1.0,1.0,0.021997745782045497,0.26433440765118477,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0066819275463614325,0.0,0.0,0.0,0.0,0.0,0.0
75
+ 73,0.2347266881028939,1.5707966089248655,1.0,1.0,0.023179327786980286,0.2640150499451148,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006583735354432907,0.0,0.0,0.0,0.0,0.0,0.0
76
+ 74,0.2379421221864952,1.5707966089248655,1.0,1.0,0.02443364205466847,0.2636760341157415,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006147868586571237,0.0,0.0,0.0,0.0,0.0,0.0
77
+ 75,0.2411575562700964,1.5707966089248655,1.0,1.0,0.025453881975757264,0.2634002630864577,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006337611721394243,0.0,0.0,0.0,0.0,0.0,0.0
78
+ 76,0.2443729903536977,1.5707966089248655,1.0,1.0,0.02677848586019993,0.26304227294360205,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0070232407172710065,0.0,0.0,0.0,0.0,0.0,0.0
79
+ 77,0.247588424437299,1.5707966089248655,1.0,1.0,0.02805247552785406,0.2626979390147306,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.08658533091181586,0.0,0.0,0.0,0.0,0.0,0.0
80
+ 78,0.2508038585209003,1.5707966089248655,1.0,1.0,0.0,0.27170080603478364,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.08513636237399258,0.0,0.0,0.0,0.0,0.0,0.0
81
+ 79,0.2540192926045016,1.5707966089248655,1.0,1.0,0.0,0.27121157525212986,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00906863056062579,0.0,0.0,0.0,0.0,0.0,0.0
82
+ 80,0.2572347266881029,1.5707966089248655,1.0,1.0,0.0,0.27079394297872106,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00836259289751784,0.0,0.0,0.0,0.0,0.0,0.0
83
+ 81,0.2604501607717042,1.5707966089248655,1.0,1.0,0.0,0.27037531596237807,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007948431132631106,0.0,0.0,0.0,0.0,0.0,0.0
84
+ 82,0.2636655948553054,1.5707966089248655,1.0,1.0,0.001039143823816091,0.26999909986545795,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00755685380637694,0.0,0.0,0.0,0.0,0.0,0.0
85
+ 83,0.2668810289389067,1.5707966089248655,1.0,1.0,0.0024431298856426586,0.2696196305817404,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007521491708858408,0.0,0.0,0.0,0.0,0.0,0.0
86
+ 84,0.270096463022508,1.5707966089248655,1.0,1.0,0.0038219961242987877,0.2692469506945721,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007419898482256548,0.0,0.0,0.0,0.0,0.0,0.0
87
+ 85,0.2733118971061093,1.5707966089248655,1.0,1.0,0.005188394180013822,0.2688776407335147,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006803069530642025,0.0,0.0,0.0,0.0,0.0,0.0
88
+ 86,0.2765273311897106,1.5707966089248655,1.0,1.0,0.006339042056817568,0.2685666437415079,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006476895969524943,0.0,0.0,0.0,0.0,0.0,0.0
89
+ 87,0.2797427652733119,1.5707966089248655,1.0,1.0,0.007584760287909109,0.26822995113656223,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0074205169912794355,0.0,0.0,0.0,0.0,0.0,0.0
90
+ 88,0.2829581993569132,1.5707966089248655,1.0,1.0,0.009084535146794304,0.26782459204237996,0.0,0.0010263919830322,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.008661240406507842,0.0,0.0,0.0,0.0,0.0,0.0
91
+ 89,0.2861736334405145,1.5707966089248655,1.0,1.0,0.01078930461115557,0.26736382709591144,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0078118644678687454,0.0,0.0,0.0,0.0,0.0,0.0
92
+ 90,0.2893890675241157,1.5707966089248655,1.0,1.0,0.011974821905293864,0.2670434055955931,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006853467821563708,0.0,0.0,0.0,0.0,0.0,0.0
93
+ 91,0.292604501607717,1.5707966089248655,1.0,1.0,0.013324997312456954,0.2666784803137551,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006969944110827853,0.0,0.0,0.0,0.0,0.0,0.0
94
+ 92,0.2958199356913183,1.5707966089248655,1.0,1.0,0.014553609858158234,0.2663464111845103,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006728272584622386,0.0,0.0,0.0,0.0,0.0,0.0
95
+ 93,0.2990353697749196,1.5707966089248655,1.0,1.0,0.015814281126337648,0.26600565305529283,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006831799278071982,0.0,0.0,0.0,0.0,0.0,0.0
96
+ 94,0.3022508038585209,1.5707966089248655,1.0,1.0,0.017081284465747526,0.2656632312567031,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.007031510123088336,0.0,0.0,0.0,0.0,0.0,0.0
97
+ 95,0.3054662379421222,1.5707966089248655,1.0,1.0,0.018415935207798717,0.265302502042984,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.002567768096923828,0.01121459589023488,0.0,0.0,0.0,0.0,0.0,0.0
98
+ 96,0.3086816720257235,1.5705398321151731,0.0,1.0,0.021230536606462458,0.2645417716676796,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0008988380432151111,0.0075986409301131985,0.0,0.0,0.0,0.0,0.0,0.0
99
+ 97,0.3118971061093247,1.570886492729187,0.0,1.0,0.021227332240119412,0.2645426379499727,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.005640983581545189,0.0049237630653492515,0.0,0.0,0.0,0.0,0.0,0.0
100
+ 98,0.315112540192926,1.5711039304733276,0.0,1.0,0.02305226441072572,0.2640493953611447,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0006198883056640625,0.00857267253610794,0.0,0.0,0.0,0.0,0.0,0.0
101
+ 99,0.3183279742765273,1.5709484815597534,0.0,1.0,0.024399107781870155,0.2636853706963619,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.004658699035644531,0.004857459167089684,0.0,0.0,0.0,0.0,0.0,0.0
102
+ 100,0.3215434083601286,1.5706380605697632,0.0,1.0,0.024849449804678292,0.2635636494444357,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.022194385528564453,0.0039271202012058914,0.0,0.0,0.0,0.0,0.0,0.0
103
+ 101,0.3247588424437299,1.568729043006897,0.0,1.0,0.025852079998217148,0.2632926586762413,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05697488784790039,0.005715360443480644,0.0,0.0,0.0,0.0,0.0,0.0
104
+ 102,0.3279742765273312,1.5649405717849731,0.0,1.0,0.02696405818425196,0.26299211340008766,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.09707689285278098,0.006810604024000688,0.0,0.0,0.0,0.0,0.0,0.0
105
+ 103,0.3311897106109325,1.5590213537216189,0.0,1.0,0.028371913983511243,0.26261159827384123,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1342320442199707,-0.08658725247955079,0.0,0.0,0.0,0.0,0.0,0.0
106
+ 104,0.3344051446945337,1.551517367362976,0.0,1.0,0.0,0.27165083864804274,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.14599084854125977,-0.0855837997933162,0.0,0.0,0.0,0.0,0.0,0.0
107
+ 105,0.337620578778135,1.544422268867493,0.0,1.0,0.0,0.27116997825317285,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1645970344543457,0.0092428503817793,0.0,0.0,0.0,0.0,0.0,0.0
108
+ 106,0.3408360128617363,1.5350576639175415,0.0,1.0,0.0,0.2707265536098648,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1673865318298362,0.009109662701293209,0.0,0.0,0.0,0.0,0.0,0.0
109
+ 107,0.3440514469453376,1.5276836156845093,0.0,1.0,7.750342546353206e-05,0.27025901198304353,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15044450759887695,0.008351549969313754,0.0,0.0,0.0,0.0,0.0,0.0
110
+ 108,0.3472668810289389,1.5200132131576538,0.0,1.0,0.0014376241751080654,0.26989139861293343,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.17527103424072266,0.007177394089232236,0.0,0.0,0.0,0.0,0.0,0.0
111
+ 109,0.3504823151125402,1.510156512260437,0.0,1.0,0.002733044069845647,0.2695412725741203,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.29818296432495117,0.007628770292679721,0.0,0.0,0.0,0.0,0.0,0.0
112
+ 110,0.3536977491961415,1.4901949167251587,0.0,1.0,0.004260168177710133,0.26912852158366546,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.3951430320739746,0.007669947780417075,0.0,0.0,0.0,0.0,0.0,0.0
113
+ 111,0.3569131832797427,1.4706422090530396,0.0,1.0,0.005570823462003105,0.2687742777960786,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0333333333333333,0.0,0.414278507232666,0.00675024438823113,0.0,0.0,0.0,0.0,0.0,0.0
114
+ 112,0.360128617363344,1.448767066001892,0.0,1.0,0.00675766946551859,0.26845349714484235,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.1555555555555555,0.0371621621621621,0.45035362243652344,0.006338513301852311,0.0,0.0,0.0,0.0,0.0,0.0
115
+ 113,0.3633440514469453,1.4256068468093872,0.0,1.0,0.007915989503754384,0.26814042646589337,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.2666666666666666,0.0405405405405405,0.42422056198120117,0.006841929663966018,0.0,0.0,0.0,0.0,0.0,0.0
116
+ 114,0.3665594855305466,1.406345009803772,0.0,1.0,0.00928909305690584,0.26776930417844574,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.3444444444444444,0.0439189189189189,0.4080486297607422,0.00740686029398141,0.0,0.0,0.0,0.0,0.0,0.0
117
+ 115,0.3697749196141479,1.384801983833313,0.0,1.0,0.010656429992462968,0.2673997404364952,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0439189189189189,0.4366087913513206,0.0067612933141508735,0.0,0.0,0.0,0.0,0.0,0.0
118
+ 116,0.3729903536977492,1.36268413066864,0.0,1.0,0.011790682274029352,0.26709317484703066,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0439189189189189,0.3972625732421875,0.0061095737194982735,0.0,0.0,0.0,0.0,0.0,0.0
119
+ 117,0.3762057877813505,1.3450757265090942,0.0,1.0,0.012916891386055562,0.2667887830645454,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0405405405405405,0.3677392005920388,0.006853195951797564,0.0,0.0,0.0,0.0,0.0,0.0
120
+ 118,0.3794212218649517,1.325910210609436,0.0,1.0,0.014326274602191935,0.2664078552518509,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0439189189189189,0.38450956344604714,0.007758833759142214,0.0,0.0,0.0,0.0,0.0,0.0
121
+ 119,0.382636655948553,1.3066247701644895,0.0,1.0,0.01578755747557825,0.2660128996886312,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0405405405405405,0.38176536560058594,0.007087590316049441,0.0,0.0,0.0,0.0,0.0,0.0
122
+ 120,0.3858520900321543,1.2877336740493774,0.0,1.0,0.016948589486775134,0.26569909622024596,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0439189189189189,0.3752017021179177,0.006152288043893561,0.0,0.0,0.0,0.0,0.0,0.0
123
+ 121,0.3890675241157556,1.2691045999526978,0.0,1.0,0.018063812986859995,0.2653976708842418,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0405405405405405,0.3648233413696289,0.006669206839986508,0.0,0.0,0.0,0.0,0.0,0.0
124
+ 122,0.3922829581993569,1.2512513399124146,0.0,1.0,0.019416097260657517,0.2650321755362473,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.0,0.4,0.0439189189189189,0.3816795349121094,0.007112420525861585,0.0,0.0,0.0,0.0,0.0,0.0
125
+ 123,0.3954983922829582,1.2309366464614868,0.0,1.0,0.02069531501837829,0.26468642883165566,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.0,0.1423611111111111,0.4,0.1771302552552552,0.40856122970581055,0.006466259511902495,0.0,0.0,0.0,0.0,0.0,0.0
126
+ 124,0.3987138263665595,1.2103952169418335,0.0,1.0,0.02180852781140241,0.26438554958505706,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.2326388888888888,0.4,0.2637481231231231,0.4054450988769531,0.006769620370492557,0.0,0.0,0.0,0.0,0.0,0.0
127
+ 125,0.4019292604501607,1.1903921365737915,0.0,1.0,0.023199985649385746,0.2640094667946064,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.0,0.3263888888888888,0.4,0.3559731606606606,0.4365253448486328,0.00750439424097582,0.0,0.0,0.0,0.0,0.0,0.0
128
+ 126,0.405144694533762,1.1667426824569702,0.0,1.0,0.024585055362080332,0.2636351101609595,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.4340277777777778,0.4,0.4588846659159159,0.43770313262939453,0.006984741479079681,0.0,0.0,0.0,0.0,0.0,0.0
129
+ 127,0.4083601286173633,1.146621823310852,0.0,1.0,0.025784247604326516,0.26331099264669844,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.5243055555555556,0.4,0.5451975412912913,0.3930640220642112,0.00641753815276036,0.0,0.0,0.0,0.0,0.0,0.0
130
+ 128,0.4115755627009646,1.127436280250549,0.0,1.0,0.026959459238391492,0.26299335634568344,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.0,0.6111111111111112,0.4,0.6281906906906908,0.42133569717407227,0.006062145214686954,0.0,0.0,0.0,0.0,0.0,0.0
131
+ 129,0.4147909967845659,1.1044882535934448,0.0,1.0,0.028027161802985034,0.26270477812522974,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.1111111111111111,0.6701388888888888,0.4666666666666667,0.6846260322822822,0.45452356338500755,-0.08669210278088257,0.0,0.0,0.0,0.0,0.0,0.0
132
+ 130,0.4180064308681672,1.0819839239120483,0.0,1.0,0.0,0.2716625666237717,0.0,0.0010251998901367,0.0,0.0,0.0,0.0,0.4444444444444444,0.7013888888888888,0.6666666666666667,0.714503566066066,0.45659303665161133,-0.0841518622771048,0.0,0.0,0.0,0.0,0.0,0.0
133
+ 131,0.4212218649517685,1.0588289499282837,0.0,1.0,0.0,0.2711199643529402,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.4611968994140625,0.0093585213698405,0.0,0.0,0.0,0.0,0.0,0.0
134
+ 132,0.4244372990353697,1.035864233970642,0.0,1.0,0.0,0.27072671448678765,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.4461002349853538,0.007789040054331786,0.0,0.0,0.0,0.0,0.0,0.0
135
+ 133,0.427652733118971,1.0142189264297483,0.0,1.0,0.0,0.27034106034750705,0.0,0.0010248025258382,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.41251182556152455,0.007729823116687795,0.0,0.0,0.0,0.0,0.0,0.0
136
+ 134,0.4308681672025723,0.9946130514144896,0.0,1.0,0.0012069982001895463,0.26995373217511887,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.357530117034911,0.007469535264810756,0.0,0.0,0.0,0.0,0.0,0.0
137
+ 135,0.4340836012861736,0.9784659147262572,0.0,1.0,0.0025375644992394752,0.26959410682102597,0.7116493773750608,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.3806805610656727,0.006911195474760268,0.0,0.7116493773750608,0.0,0.0,0.0,1.0
138
+ 136,0.4372990353697749,0.9565449953079224,0.0,1.0,0.003764049183122009,0.26926261262764284,0.7065558053383572,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.43018817901611217,0.0066236079329656805,0.0,0.7065558053383572,0.0,0.0,0.0,1.0
139
+ 137,0.4405144694533762,0.935447096824646,0.0,1.0,0.004988211968532386,0.2689317460277294,0.709740803586083,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.41130542755126953,0.006966225259277814,0.0,0.709740803586083,0.0,0.0,0.0,1.0
140
+ 138,0.4437299035369775,0.9154144525527954,0.0,1.0,0.006341460476042782,0.26856599010171506,0.707086802953687,0.0010248025258382,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7801238738738739,0.4379081726074219,0.007558345148501178,0.0,0.707086802953687,0.0,0.0,0.0,1.0
141
+ 139,0.4469453376205787,0.8916562795639038,0.0,1.0,0.007784699872226186,0.2681759115128793,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.4575800895690918,0.007724557558035361,0.0,0.0,0.0,0.0,0.0,1.0
142
+ 140,0.45016077170418,0.8696564435958862,0.0,1.0,0.009199444963317371,0.2677935343459115,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.477297306060791,0.007494898983462783,0.0,0.0,0.0,0.0,0.0,1.0
143
+ 141,0.4533762057877814,0.8439265489578247,0.0,1.0,0.010557713226914567,0.267426421614533,0.7079443684068463,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.5397844314575195,0.008059047536829733,0.0,0.7079443684068463,0.0,0.0,0.0,1.0
144
+ 142,0.4565916398713826,0.8156780004501343,0.0,1.0,0.012181185904729497,0.26698762959222855,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.5407905578613281,0.007809310973421191,0.0,0.0,0.0,0.0,0.0,1.0
145
+ 143,0.4598070739549839,0.7898474931716919,0.0,1.0,0.013447055404113173,0.2666454905171909,0.7137208400467014,0.0010259946187337,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.47156572341918945,0.0069036401968303185,0.0,0.7137208400467014,0.0,0.0,0.0,1.0
146
+ 144,0.4630225080385852,0.7685214281082153,0.0,1.0,0.014735337172912422,0.2662972655725455,0.7139899904106973,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.3824496269226074,0.007097202105845746,0.0,0.7139899904106973,0.0,0.0,0.0,1.0
147
+ 145,0.4662379421221865,0.7516025304794312,0.0,1.0,0.016072821993829867,0.2659357703066063,0.7142575768653133,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.3328418731689453,0.006640781648633021,0.0,0.7142575768653133,0.0,0.0,0.0,1.0
148
+ 146,0.4694533762057878,0.7352372407913208,0.0,1.0,0.01719233876280346,0.2656331874076822,0.7144947765710666,0.0010259946187337,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7801238738738739,0.20832300186157227,0.006545425211032518,0.0,0.7144947765710666,0.0,0.0,0.0,1.0
149
+ 147,0.472668810289389,0.7307702302932739,0.0,1.0,0.018494571025394757,0.26528122778550306,0.7147352333929506,0.0010240077972412,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.05270242691040039,0.009239903254346093,0.0,0.7147352333929506,0.0,0.0,0.0,1.0
150
+ 148,0.4758842443729904,0.7299669981002808,0.0,1.0,0.020610981258044614,0.2647091970822476,0.7150712122365241,0.0010259946187337,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7634665915915916,0.07445573806762695,0.012581097629018045,0.0,0.7150712122365241,1.0,0.0,0.0,1.0
151
+ 149,0.4790996784565916,0.7233246564865112,1.0,1.0,0.023149487547852288,0.26402311802260126,0.7154452749838629,0.0010240077972412,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.043487548828125,0.008812120038229065,0.0,0.7154452749838629,0.0,0.0,0.0,1.0
152
+ 150,0.4823151125401929,0.7256182432174683,1.0,1.0,0.023871453845512036,0.2638279850784247,0.7156435894528343,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.04121541976928711,0.004389247435850341,0.0,0.7156435894528343,0.0,0.0,0.0,1.0
153
+ 151,0.4855305466237942,0.7274461984634399,1.0,1.0,0.02477345115475227,0.2635841932790162,0.7158666640531521,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.024998188018798828,0.005642328265169638,0.0,0.7158666640531521,0.0,0.0,0.0,1.0
154
+ 152,0.4887459807073955,0.7281180620193481,1.0,1.0,0.025959040799099276,0.26326375225190773,0.7161247443499053,0.0010251998901367,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.024404525756835938,0.004496126339393891,0.0,0.7161247443499053,0.0,0.0,0.0,1.0
155
+ 153,0.4919614147909968,0.7250057458877563,1.0,1.0,0.02643695847070293,0.26313458064507683,0.7163253677935957,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7634665915915916,0.028285980224609375,0.0035139175134552003,0.0,0.7163253677935957,0.0,0.0,0.0,1.0
156
+ 154,0.495176848874598,0.7252894639968872,1.0,1.0,0.027259144126335677,0.2629123605005622,0.7165649146650218,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.008091926574707031,0.005307218604197472,0.0,0.7165649146650218,0.0,0.0,0.0,1.0
157
+ 155,0.4983922829581994,0.725814938545227,1.0,1.0,0.028400559755517585,0.2626038587846571,0.8572848790424619,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.014758110046386719,-0.08767895112721857,0.0,0.8572848790424619,0.0,0.0,0.0,1.0
158
+ 156,0.5016077170418006,0.7267652750015259,1.0,1.0,0.0,0.27168025561328407,0.7102969519023542,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.015680789947509766,-0.08593242178642047,0.0,0.7102969519023542,0.0,0.0,0.0,1.0
159
+ 157,0.5048231511254019,0.727383017539978,1.0,1.0,0.0,0.27119710096329913,0.7105915758515081,0.0010251998901367,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.010285377502441406,0.008664192016029637,0.0,0.7105915758515081,0.0,0.0,0.0,1.0
160
+ 158,0.5080385852090032,0.7257367372512817,1.0,1.0,0.0,0.2708138364116811,0.7108435248467139,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.021467208862304688,0.008345280073998596,0.0,0.7108435248467139,0.0,0.0,0.0,1.0
161
+ 159,0.5112540192926045,0.7252362966537476,1.0,1.0,0.0,0.27036257295589927,0.7111394889727812,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.010366439819335938,0.00869670780343279,0.0,0.7111394889727812,0.0,0.0,0.0,1.0
162
+ 160,0.5144694533762058,0.7267733812332153,1.0,1.0,0.0012423932071891075,0.26994416563133783,0.7114323798981004,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.01960277557373047,0.0076834466652453415,0.0,0.7114323798981004,0.0,0.0,0.0,1.0
163
+ 161,0.5176848874598071,0.7271965742111206,1.0,1.0,0.0025371152651334494,0.26959422828937474,0.7116963099701472,0.0010259946187337,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7808980855855856,0.0004172325134277344,0.006951403116449151,0.0,0.7116963099701472,0.0,0.0,0.0,1.0
164
+ 162,0.5209003215434084,0.7268151044845581,1.0,1.0,0.0038143205989009665,0.2692490253196929,0.8533173991224634,0.0010251998901367,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.008966922760009766,0.007133358485720276,0.0,0.8533173991224634,0.0,0.0,0.0,1.0
165
+ 163,0.5241157556270096,0.7262998819351196,1.0,1.0,0.005176363309795873,0.2688808924408027,0.8534416550178265,0.0010251998901367,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.0008416175842285156,0.007520117965110207,0.0,0.8534416550178265,0.0,0.0,0.0,1.0
166
+ 164,0.5273311897106109,0.726899266242981,1.0,1.0,0.006596664660044382,0.2684970135231819,0.7124561107724398,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.015294551849365234,0.007282547034921927,0.0,0.7124561107724398,0.0,0.0,0.0,1.0
167
+ 165,0.5305466237942122,0.7278293371200562,1.0,1.0,0.00787080942692242,0.2681526377373105,0.7127349136572647,0.0010259946187337,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.00957489013671875,0.0066246878592579606,0.0,0.7127349136572647,0.0,0.0,0.0,1.0
168
+ 166,0.5337620578778135,0.7259417772293091,1.0,1.0,0.009047711625808863,0.2678345447372561,0.855292081304197,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.013468265533447266,0.006938428947568243,0.0,0.855292081304197,0.0,0.0,0.0,1.0
169
+ 167,0.5369774919614148,0.7264825105667114,1.0,1.0,0.010437936311776252,0.2674587948425537,0.713193059548658,0.0010248025258382,0.0,0.0,0.0,0.0,0.6666666666666666,0.7708333333333334,0.8,0.7808980855855856,0.01241445541381836,0.007048062586592629,0.0,0.713193059548658,0.0,0.0,0.0,1.0
170
+ 168,0.5401929260450161,0.7247003316879272,1.0,1.0,0.011655390592877568,0.26712973847859683,0.8567417893283482,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.014011859893798828,0.006966266166548163,0.0,0.8567417893283482,0.0,0.0,0.0,1.0
171
+ 169,0.5434083601286174,0.7278836965560913,1.0,1.0,0.013015351989598467,0.2667621682258989,0.8568536145129102,0.0010251998901367,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7808980855855856,0.03302812576293945,0.007562664398670926,0.0,0.8568536145129102,0.0,0.0,0.0,1.0
172
+ 170,0.5466237942122186,0.7280031442642212,1.0,1.0,0.01445347624922766,0.26637347203872974,0.8569910942777254,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.004842281341552734,0.006938096057975129,0.0,0.8569910942777254,0.0,0.0,0.0,1.0
173
+ 171,0.5498392282958199,0.727399468421936,1.0,1.0,0.015582367105905104,0.26606835862010136,0.8571109200641032,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.0074291229248046875,0.006144178026914471,0.0,0.8571109200641032,0.0,0.0,0.0,1.0
174
+ 172,0.5530546623794212,0.7272602319717407,1.0,1.0,0.016726752344925044,0.2657590542360383,0.8572249617896095,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7808980855855856,0.01899242401123047,0.006635214660322686,0.0,0.8572249617896095,0.0,0.0,0.0,1.0
175
+ 173,0.5562700964630225,0.725500226020813,1.0,1.0,0.018037309139387614,0.2654048371540691,0.8573676939388775,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.04044055938720703,0.006729857873445377,0.0,0.8573676939388775,0.0,0.0,0.0,1.0
176
+ 174,0.5594855305466238,0.72321617603302,1.0,1.0,0.0192167111260646,0.26508606844869376,0.8574790462907931,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.015406608581542969,0.006350904365743371,0.0,0.8574790462907931,0.0,0.0,0.0,1.0
177
+ 175,0.5627009646302251,0.7270408868789673,1.0,1.0,0.02038705999174162,0.26476974671749476,0.8576059723145535,0.0010251998901367,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.014255046844482422,0.0071621323007986515,0.0,0.8576059723145535,0.0,0.0,0.0,1.0
178
+ 176,0.5659163987138264,0.7246416807174683,1.0,1.0,0.021866605703885877,0.2643698552186139,0.857729591589341,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.01544952392578125,0.0077858127112706565,0.0,0.857729591589341,0.0,0.0,0.0,1.0
179
+ 177,0.5691318327974276,0.7285858392715454,1.0,1.0,0.023267708293048917,0.2639911654463677,0.8578670160620075,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7634665915915916,0.02605438232421875,0.006896899009594115,0.0,0.8578670160620075,0.0,0.0,0.0,1.0
180
+ 178,0.572347266881029,0.7272471189498901,1.0,1.0,0.024418367826450682,0.2636801653176545,0.8579895354946621,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.0005316734313964844,0.006689837117052622,0.0,0.8579895354946621,0.0,0.0,0.0,1.0
181
+ 179,0.5755627009646302,0.7285326719284058,1.0,1.0,0.025742859925856343,0.26332218173466243,0.8581309322243551,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.0041866302490234375,0.006140341702043917,0.0,0.8581309322243551,0.0,0.0,0.0,1.0
182
+ 180,0.5787781350482315,0.7268284559249878,1.0,1.0,0.026690212910065125,0.2630661311474501,0.8582433750645082,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.033893585205078125,0.00637173220273346,0.0,0.8582433750645082,0.0,0.0,0.0,1.0
183
+ 181,0.5819935691318328,0.725143313407898,1.0,1.0,0.028100317051605983,0.2626850085143891,0.858372343396548,0.0010240077972412,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7801238738738739,0.020596981048583984,-0.08586575292310827,0.0,0.858372343396548,0.0,0.0,0.0,1.0
184
+ 182,0.5852090032154341,0.7288881540298462,1.0,1.0,0.0,0.2716527064397609,0.8524461860958548,0.0010248025258382,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7801238738738739,0.00072479248046875,-0.085204560330851,0.0,0.8524461860958548,0.0,0.0,0.0,1.0
185
+ 183,0.5884244372990354,0.7252157926559448,1.0,1.0,0.0,0.2712054645474742,0.7105878926356938,0.0010259946187337,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.03679513931274414,0.009098842766211424,0.0,0.7105878926356938,0.0,0.0,0.0,1.0
186
+ 184,0.5916398713826366,0.7252086400985718,1.0,1.0,0.0,0.2707428221631398,0.8527576022797827,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.019605159759521484,0.008341614876373749,0.0,0.8527576022797827,0.0,0.0,0.0,1.0
187
+ 185,0.594855305466238,0.727176308631897,1.0,1.0,0.0,0.2703713030598368,0.711151782369138,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7801238738738739,0.028412342071533203,0.0073585627631816974,0.0,0.711151782369138,0.0,0.0,0.0,1.0
188
+ 186,0.5980707395498392,0.7280498743057251,1.0,1.0,0.0010099459453268844,0.2700069658868216,0.8530278023988125,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.01720428466796875,0.0069811092626342885,0.0,0.8530278023988125,0.0,0.0,0.0,1.0
189
+ 187,0.6012861736334405,0.7254558801651001,1.0,1.0,0.002244864534569402,0.2696731921335734,0.8531659467557996,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.004601478576660156,0.007195686201257878,0.0,0.8531659467557996,0.0,0.0,0.0,1.0
190
+ 188,0.6045016077170418,0.7275897264480591,1.0,1.0,0.003672254634317307,0.2692873972666958,0.7119098170852656,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.00018596649169921875,0.007641963103193761,0.0,0.7119098170852656,0.0,0.0,0.0,1.0
191
+ 189,0.6077170418006431,0.72547447681427,1.0,1.0,0.0050722902958700855,0.268908995823254,0.8534476068996345,0.0010259946187337,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.008454322814941406,0.007110488643407575,0.0,0.8534476068996345,0.0,0.0,0.0,1.0
192
+ 190,0.6109324758842444,0.7284351587295532,1.0,1.0,0.006303041657171438,0.26857634840235506,0.8535696968755953,0.0010240077972412,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.021448135375976562,0.006914370037230944,0.0,0.8535696968755953,0.0,0.0,0.0,1.0
193
+ 191,0.6141479099678456,0.7276192903518677,1.0,1.0,0.007630515789610048,0.2682175588195309,0.85371068176825,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.027141571044921875,0.006491705942804349,0.0,0.85371068176825,0.0,0.0,0.0,1.0
194
+ 192,0.617363344051447,0.725721001625061,1.0,1.0,0.00870488738335995,0.2679271778080746,0.8564591867884412,0.0010240077972412,0.0,0.0,0.0,0.0,0.6888888888888889,0.7708333333333334,0.8133333333333334,0.7801238738738739,0.0034856796264648438,0.006603711590797423,0.0,0.8564591867884412,0.0,0.0,0.0,1.0
195
+ 193,0.6205787781350482,0.7272707223892212,1.0,1.0,0.010073802035762136,0.26755718766045117,0.8565889100923463,0.0010255972544352,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.0139617919921875,0.007716760291979208,0.0,0.8565889100923463,0.0,0.0,0.0,1.0
196
+ 194,0.6237942122186495,0.7271171808242798,1.0,1.0,0.011559987201257393,0.2671555017788767,0.8567219523020104,0.0010251998901367,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7808980855855856,0.005054473876953125,0.007411637147290984,0.0,0.8567219523020104,0.0,0.0,0.0,1.0
197
+ 195,0.6270096463022508,0.7267652750015259,1.0,1.0,0.01281601034622426,0.26681602394572207,0.8568449596432575,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.004355907440185547,0.0068946507815970115,0.0,0.8568449596432575,0.0,0.0,0.0,1.0
198
+ 196,0.6302250803858521,0.7266815900802612,1.0,1.0,0.01411091713556245,0.266466036700717,0.85697712797481,0.0010248025258382,0.0,0.0,0.0,0.0,0.6777777777777778,0.7708333333333334,0.8066666666666666,0.7801238738738739,0.0013780593872070312,0.007296491477670752,0.0,0.85697712797481,0.0,0.0,0.0,1.0
199
+ 197,0.6334405144694534,0.7269030809402466,1.0,1.0,0.015515615719172593,0.266086374797955,0.8571265163494177,0.0010259946187337,0.0,0.0,0.0,0.0,0.6777777777777778,0.7955280172413793,0.8066666666666666,0.8045082056733458,0.015633106231689453,0.007360584975535933,0.0,0.8571265163494177,0.0,0.0,0.0,1.0
200
+ 198,0.6366559485530546,0.7282449007034302,1.0,1.0,0.016834236252079804,0.2657299782031634,0.8572366030727321,0.0010251998901367,0.0,0.0,0.0,0.0,0.6777777777777778,0.8286411411411412,0.8066666666666666,0.8361670369694019,0.006546974182128906,0.007072546584234174,0.0,0.8572366030727321,0.0,0.0,0.0,1.0
201
+ 199,0.639871382636656,0.7262483835220337,1.0,1.0,0.01813236523381556,0.2653791201395316,0.8573564291166681,0.0010259946187337,0.0,0.0,0.0,0.0,0.6777777777777778,0.8318730529595015,0.8066666666666666,0.8392570067146586,0.018284320831298828,0.007601165379678698,0.0,0.8573564291166681,0.0,0.0,0.0,1.0
202
+ 200,0.6430868167202572,0.7264164686203003,1.0,1.0,0.01964656764492312,0.26496986166519554,0.8575054772945228,0.0010248025258382,0.0,0.0,0.0,0.0,0.8074074074074074,0.8606099656357389,0.8844444444444445,0.8667318252530881,0.025086402893066406,0.008158396292377579,0.0,0.8575054772945228,0.0,0.0,0.0,1.0
203
+ 201,0.6463022508038585,0.7287570238113403,1.0,1.0,0.021150968526553515,0.2645632805102938,0.8576466376664953,0.0010248025258382,0.0,0.0,0.0,0.0,0.8148148148148148,0.8549423758865249,0.8888888888888888,0.8608230903776117,0.002791881561279297,0.007722335421090354,0.0,0.8576466376664953,0.0,0.0,0.0,1.0
204
+ 202,0.6495176848874598,0.7261372804641724,1.0,1.0,0.022503834360806052,0.2641976281230865,0.857771008428262,0.0010255972544352,0.0,0.0,0.0,0.0,0.7887654320987655,0.8700457317073171,0.8732592592592593,0.8757531826796309,0.005517005920410156,0.00688973000783244,0.0,0.857771008428262,0.0,0.0,0.0,1.0
205
+ 203,0.6527331189710611,0.7282053232192993,1.0,1.0,0.023700077989258106,0.2638743075095106,0.8579021377623207,0.0010248025258382,0.0,0.0,0.0,0.0,0.8138271604938272,0.8612938596491229,0.8882962962962964,0.8673856833807492,0.009279251098632812,0.006525484058310105,0.0,0.8579021377623207,0.0,0.0,0.0,1.0
206
+ 204,0.6559485530546624,0.7252093553543091,1.0,1.0,0.024918177386275442,0.2635450797172555,0.8580215444949701,0.0010248025258382,0.0,0.0,0.0,0.0,0.8281481481481482,0.8679108796296297,0.8968888888888888,0.873265843968969,0.01819610595703125,0.006546783899628594,0.0,0.8580215444949701,0.0,0.0,0.0,1.0
207
+ 205,0.6591639871382636,0.7263857126235962,1.0,1.0,0.02612230163311513,0.2632196291195477,0.858149530526146,0.0010255972544352,0.0,0.0,0.0,0.0,0.8037037037037037,0.863370811287478,0.8822222222222222,0.8689098324514991,0.006866455078125,0.006586385791297333,0.0,0.858149530526146,0.0,0.0,0.0,1.0
208
+ 206,0.662379421221865,0.7258960008621216,1.0,1.0,0.027355052936311908,0.26288644113812576,0.8582856654473495,0.0010248025258382,0.0,0.0,0.0,0.0,0.8222222222222222,0.8346994535519126,0.8933333333333333,0.8419592748486191,0.0037336349487304688,0.008416803881783341,0.0,0.8582856654473495,0.0,0.0,0.0,1.0
209
+ 207,0.6655948553054662,0.7267590761184692,1.0,1.0,0.029236408228264565,0.2623779487313694,0.8584307474155517,0.0010251998901367,0.0,0.0,0.0,0.0,0.8222222222222222,0.8346994535519126,0.8933333333333333,0.8419592748486191,0.016078948974609375,-0.08620634514762249,0.0,0.8584307474155517,0.0,0.0,0.0,1.0
210
+ 208,0.6688102893890675,0.7242881059646606,1.0,1.0,0.0,0.271507075652888,0.8539452687457768,0.0010259946187337,0.0,0.0,0.0,0.0,0.7962962962962963,0.8440915300546449,0.8777777777777778,0.8509388615049476,0.020570755004882812,-0.07766196083802468,0.0,0.8539452687457768,0.0,0.0,0.0,1.0
211
+ 209,0.6720257234726688,0.724702000617981,1.0,1.0,0.0005024965044460039,0.27014414481517185,0.8530004366874328,0.0010259946187337,0.0,0.0,0.0,0.0,0.768888888888889,0.8596476124885216,0.8613333333333333,0.865811737615715,0.04540443420410156,0.018177857276230336,0.0,0.8530004366874328,0.0,0.0,0.0,1.0
212
+ 210,0.6752411575562701,0.7288285493850708,1.0,1.0,0.0021853992918792198,0.269689289925265,0.8531443890595475,0.0010255972544352,0.0,0.0,0.0,0.0,0.768888888888889,0.8596476124885216,0.8613333333333333,0.865811737615715,0.015499591827392578,0.035476237184979276,0.0,0.8531443890595475,0.0,0.0,0.0,1.0
213
+ 211,0.6784565916398714,0.7262519598007202,1.0,1.0,0.01362823368217625,0.2665965210966739,0.8544639865006065,0.0010259946187337,0.0,0.0,0.0,0.0,0.654320987654321,0.8723958333333333,0.7925925925925925,0.8780000703828829,0.03539323806762695,0.08603891315792533,0.0,0.8544639865006065,0.0,0.0,0.0,1.0
214
+ 212,0.6816720257234726,0.7252892255783081,1.0,1.0,0.03401865610211141,0.26108539860947244,0.8567389521194418,0.0010251998901367,0.0,0.0,0.0,0.0,0.6481481481481481,0.8725,0.7888888888888889,0.877668918918919,0.011544227600097656,0.13493279736931763,0.0,0.8567389521194418,1.0,0.0,0.0,1.0
215
+ 213,0.684887459807074,0.72740638256073,1.0,1.0,0.06355157925490529,0.25310324135974216,0.8599738132264658,0.0010248025258382,0.0,0.0,0.0,0.0,0.7466666666666666,0.8645833333333334,0.848,0.8705306869369369,0.03981351852416992,0.18483870118342516,0.0,0.8599738132264658,1.0,0.0,0.0,1.0
216
+ 214,0.6881028938906752,0.7292705774307251,1.0,1.0,0.10240652404056072,0.24260152849112993,0.8658786021466848,0.0010248025258382,0.0,0.0,0.0,0.0,0.7325925925925926,0.875,0.8395555555555556,0.8800675675675675,0.016727447509765625,0.2256854766608249,0.0,0.8658786021466848,1.0,0.0,0.0,1.0
217
+ 215,0.6913183279742765,0.7257336378097534,1.0,1.0,0.14705221251766698,0.23053469369365967,0.8700700918910287,0.0010251998901367,0.0,0.0,0.0,0.0,0.8311111111111111,0.88125,0.8986666666666666,0.8864653716216216,0.01936197280883789,0.2474806368642979,0.0,0.8700700918910287,1.0,0.0,0.0,1.0
218
+ 216,0.6945337620578779,0.7273343801498413,1.0,1.0,0.19397107728479968,0.21785346480470014,0.8744548988198597,0.0010251998901367,0.0,0.0,0.0,0.0,0.6833333333333333,0.8585199004975125,0.81,0.8647335535162028,0.012023448944091797,0.2551111696556463,0.0,0.8744548988198597,1.0,0.0,0.0,1.0
219
+ 217,0.6977491961414791,0.7269359827041626,1.0,1.0,0.24143996154751202,0.20502357672809504,0.8789219124090115,0.0010259946187337,0.0,0.0,0.0,0.0,0.7466666666666666,0.85625,0.848,0.8620777027027027,0.009303092956542969,0.2576718987138124,0.0,0.8789219124090115,1.0,0.0,0.0,1.0
220
+ 218,0.7009646302250804,0.726404070854187,1.0,1.0,0.28930626215688593,0.1920862749333189,0.8837525407664515,0.0010248025258382,0.0,0.0,0.0,0.0,0.8099999999999999,0.8840725806451613,0.886,0.8887723408892764,0.06026506423950195,0.19121796364588745,0.0,0.8837525407664515,1.0,0.0,0.0,1.0
221
+ 219,0.7041800643086816,0.7209094762802124,1.0,1.0,0.31218807181221186,0.1859017803635063,0.886587265464466,0.0010248025258382,0.0,0.0,0.0,0.0,0.7466666666666666,0.8574186991869919,0.848,0.8636807157767524,0.05483865737915039,0.04945181265058246,0.0,0.886587265464466,1.0,0.0,0.0,1.0
222
+ 220,0.707395498392283,0.720920205116272,1.0,1.0,0.30760277737525266,0.18714109366826065,0.8876708976459665,0.0010255972544352,0.0,0.0,0.0,0.0,0.8099999999999999,0.8622899159663866,0.886,0.8678727572109926,0.014154911041259766,-0.035531873736399655,0.0,0.8876708976459665,0.0,0.0,0.0,1.0
223
+ 221,0.7106109324758842,0.7194939851760864,1.0,1.0,0.2990417503117967,0.18945496773714626,0.8883500626479859,0.0010255972544352,0.0,0.0,0.0,0.0,0.7466666666666666,0.8879237288135593,0.848,0.8924673614292258,0.026302337646484375,-0.05015954712565662,0.0,0.8883500626479859,0.0,0.0,0.0,1.0
224
+ 222,0.7138263665594855,0.7182899713516235,1.0,1.0,0.28904441052499974,0.1921570483808263,1.0,0.0010240077972412,1.0,0.0,1.0,0.0,0.8240740740740741,0.8890350877192983,0.8944444444444445,0.8939085467045993,0.007431507110595703,-0.06740815397609762,0.0,1.0,0.0,0.0,0.0,1.0
225
+ 223,0.7170418006430869,0.7187508344650269,1.0,1.0,0.27410162808682004,0.19619578313475602,1.0,0.0010240077972412,1.0,0.0,1.0,0.0,0.8522222222222222,0.8928409090909091,0.9113333333333332,0.8971851965601966,0.0021719932556152344,-0.08323703189297704,0.0,1.0,0.0,0.0,0.0,1.0
226
+ 224,0.7202572347266881,0.718072772026062,1.0,1.0,0.25824781325122115,0.20048075157012402,1.0,0.0010251998901367,1.0,0.0,1.0,0.0,0.8592592592592593,0.885,0.9155555555555556,0.8900506756756758,0.02162933349609375,-0.0888144455386311,0.0,1.0,0.0,0.0,0.0,1.0
227
+ 225,0.7234726688102894,0.7165879011154175,1.0,1.0,0.24124146163064308,0.20507722768861913,0.8900182244114121,0.0010255972544352,0.0,0.0,1.0,0.0,0.8311111111111111,0.8923948220064725,0.8986666666666666,0.8971207250940261,0.014538764953613281,-0.09350225490714542,0.0,0.8900182244114121,0.0,0.0,0.0,1.0
228
+ 226,0.7266881028938906,0.7166188955307007,1.0,1.0,0.22365321941716332,0.20983097706083856,0.8901179868367626,0.0010251998901367,0.0,0.0,1.0,0.0,0.8099999999999999,0.8799757281553398,0.886,0.8852470644187878,0.006735324859619141,-0.09353117657074889,0.0,0.8901179868367626,0.0,0.0,0.0,1.0
229
+ 227,0.729903536977492,0.7172614336013794,1.0,1.0,0.20663616721560107,0.21443034534569402,0.8902346654509699,0.0010259946187337,0.0,0.0,1.0,0.0,0.8451851851851852,0.8931518151815181,0.9071111111111112,0.8978444719471947,0.015287399291992188,-0.08007305461758901,0.0,0.8902346654509699,0.0,0.0,0.0,1.0
230
+ 228,0.7331189710610932,0.7181476354598999,1.0,1.0,0.19402725203529536,0.21783828252259746,0.8904562029982045,0.0010259946187337,0.0,0.0,1.0,0.0,0.8592592592592593,0.9003712871287128,0.9155555555555556,0.9047468724913031,0.18268823623657227,0.13091616557819458,0.0,0.8904562029982045,1.0,1.0,0.0,1.0
231
+ 229,0.7363344051446945,0.6989926099777222,1.0,1.0,0.25507341196732614,0.20133872878787457,0.0,0.0010255972544352,0.0,0.0,1.0,0.0,0.8592592592592593,0.8971052631578947,0.9155555555555556,0.9012766714082504,0.21086692810058594,0.4300708476150228,0.0,0.0,1.0,1.0,0.0,1.0
232
+ 230,0.7395498392282959,0.6970609426498413,1.0,1.0,0.3531477613407634,0.17483119776109518,1.0,0.0010255972544352,1.0,0.0,1.0,0.0,0.8662962962962963,0.8880263157894737,0.91680658436214,0.8929440789473684,0.3241896629333496,0.6668300846196281,0.0,1.0,1.0,1.0,0.0,1.0
233
+ 231,0.7427652733118971,0.6665736436843872,1.0,1.0,0.5017916980832033,0.13465572032591175,1.0,0.0010240077972412,1.0,0.0,1.0,0.0,0.8662962962962963,0.9002890173410405,0.9108641975308642,0.904668215903765,0.641322135925293,0.7264083854889738,0.0,1.0,1.0,1.0,0.0,1.0
234
+ 232,0.7459807073954984,0.632928729057312,1.0,1.0,0.6219092272129484,0.1021903592121978,1.0,0.0010248025258382,1.0,0.0,1.0,0.0,0.8733333333333334,0.8680882352941177,0.9085185185185184,0.8729903616852146,0.5564665794372559,0.6857915298623685,1.0,1.0,1.0,1.0,0.0,1.0
235
+ 233,0.7491961414790996,0.6109269857406616,1.0,1.0,0.7555254664181075,0.0660765673396749,1.0,0.0010251998901367,1.0,0.0,1.0,0.0,0.8803703703703704,0.8497942386831275,0.90961316872428,0.855883661439217,0.32346487045288086,0.8329679869175927,1.0,1.0,1.0,1.0,0.0,1.0
236
+ 234,0.752411575562701,0.6005822420120239,1.0,1.0,0.9300963321361988,0.01889356052043853,0.0,0.0010255972544352,0.0,0.0,1.0,0.0,0.8240740740740741,0.7479938271604938,0.8553497942386832,0.7573589214214215,0.21266460418701172,0.39102736898797813,1.0,0.0,1.0,1.0,0.0,1.0
237
+ 235,0.7556270096463023,0.5896605253219604,1.0,1.0,0.900200405221647,0.026973830440877093,0.0,0.1312051430631415,0.0,0.0,1.0,0.0,0.8099999999999999,0.6929324894514768,0.8416666666666667,0.7043437820732125,0.19653081893920898,-0.14631948189120855,1.0,0.0,0.0,1.0,0.0,1.0
238
+ 236,0.7588424437299035,0.580929160118103,1.0,1.0,0.875960064646186,0.033525508709559386,1.0,0.1262225533815222,1.0,0.0,1.0,0.0,0.8662962962962963,0.4759493670886076,0.8811522633744856,0.4954242216900444,0.14760494232177734,-0.09193911716855882,1.0,1.0,0.0,1.0,0.0,1.0
239
+ 237,0.7620578778135049,0.5749000310897827,1.0,1.0,0.8661841513618604,0.036167742157732975,1.0,1.0,1.0,1.0,1.0,1.0,0.8662962962962963,0.4575342465753425,0.8811522633744856,0.4795261014439097,0.10993242263793945,-0.0469882420212088,1.0,1.0,0.0,1.0,0.0,1.0
240
+ 238,0.7652733118971061,0.5699359178543091,1.0,0.0,0.8585750263520959,0.038224332911680266,1.0,1.0,1.0,1.0,1.0,1.0,0.9666666666666668,0.3821794871794872,0.9737037037037036,0.4197496534996535,0.0502324104309082,-0.019563483341889926,1.0,1.0,0.0,1.0,1.0,1.0
241
+ 239,0.7684887459807074,0.5698767900466919,1.0,0.0,0.8589459134746872,0.03812409049192197,1.0,1.0,1.0,1.0,1.0,1.0,0.9666666666666668,0.3352564102564103,0.974074074074074,0.375680006930007,0.0006890296936035156,0.0013052226360461133,1.0,1.0,0.0,1.0,1.0,1.0
242
+ 240,0.7717041800643086,0.5700048208236694,1.0,0.0,0.8590579511740282,0.038093810648075654,1.0,1.0,1.0,1.0,1.0,1.0,0.9666666666666668,0.3508974358974359,0.9744444444444444,0.3881769750519751,0.015075206756591797,0.00031890376035063894,1.0,1.0,0.0,1.0,1.0,1.0
243
+ 241,0.77491961414791,0.5683692693710327,1.0,0.0,0.8590638949783278,0.038092200115886904,1.0,1.0,1.0,1.0,1.0,1.0,0.9753086419753086,0.3978205128205129,0.98079561042524,0.4385083160083161,0.0821828842163086,0.00012080935548580696,1.0,1.0,0.0,1.0,1.0,1.0
244
+ 242,0.7781350482315113,0.5617865324020386,1.0,0.0,0.8591026401656363,0.038081729712527074,1.0,1.0,1.0,1.0,1.0,1.0,0.9777777777777776,0.3872854418308963,0.9837037037037036,0.4576648167557258,0.17501354217529297,0.00010529565621905657,1.0,1.0,0.0,1.0,1.0,1.0
245
+ 243,0.7813504823151125,0.5508679151535034,1.0,0.0,0.8591028677637206,0.038081670550265,1.0,1.0,1.0,1.0,1.0,1.0,0.9814814814814816,0.3923076923076923,0.986721536351166,0.4414205168005846,0.25955677032470703,0.0002430614223852129,1.0,1.0,0.0,1.0,1.0,1.0
246
+ 244,0.7845659163987139,0.5358308553695679,1.0,0.0,0.8591925660845953,0.03805742357028855,1.0,1.0,1.0,1.0,1.0,1.0,0.9777777777777776,0.4538461538461539,0.9892894375857338,0.5443440256784852,0.32786130905151367,2.5805334066472674e-05,1.0,1.0,0.0,1.0,1.0,1.0
247
+ 245,0.7877813504823151,0.518081784248352,1.0,0.0,0.8591124107452897,0.03807909001685835,1.0,1.0,1.0,1.0,1.0,1.0,0.9790123456790124,0.4626550868486353,0.9947564548087182,0.5497390580262468,0.3584122657775879,-0.00022343550445801108,1.0,1.0,0.0,1.0,1.0,1.0
248
+ 246,0.7909967845659164,0.4999896287918091,1.0,0.0,0.8591099049987749,0.038079767120734354,1.0,1.0,1.0,1.0,1.0,1.0,0.9839506172839506,0.4471079308288611,0.9978244170096022,0.6284040378983217,0.2740263938903814,-5.249008501351238e-05,1.0,1.0,0.0,1.0,1.0,1.0
249
+ 247,0.7942122186495176,0.4906791448593139,1.0,0.0,0.859092988510817,0.0380843390253597,1.0,1.0,1.0,1.0,1.0,1.0,0.9814814814814816,0.4845070422535211,0.998435299497028,0.6958924335502283,0.10443210601806696,4.1186946394614066e-05,1.0,1.0,0.0,1.0,1.0,1.0
250
+ 248,0.797427652733119,0.4895464181900024,1.0,0.0,0.8591251395397628,0.03807564842609489,1.0,1.0,1.0,1.0,1.0,1.0,0.9901234567901236,0.5434511434511434,0.9996780978509372,0.7731807209332603,0.001151561737061102,0.000148423479440149,1.0,1.0,0.0,1.0,1.0,1.0
251
+ 249,0.8006430868167203,0.49079430103302,1.0,0.0,0.8591479019196937,0.03806949667741569,1.0,1.0,1.0,1.0,1.0,1.0,0.9901234567901236,0.5121806738245094,0.9998089722095208,0.7679547979178671,0.002093315124512274,-3.51867977790854e-05,1.0,1.0,0.0,1.0,1.0,1.0
252
+ 250,0.8038585209003215,0.4897557497024536,1.0,0.0,0.8591121332856062,0.0380791671058728,1.0,1.0,1.0,1.0,1.0,1.0,0.982716049382716,0.5587894027083216,0.9999103795153178,0.8710903250539893,0.2296924591064453,-0.0002317837994363775,1.0,1.0,0.0,1.0,1.0,1.0
253
+ 251,0.8070739549839229,0.4678250551223755,1.0,0.0,0.8590621405220339,0.038092675057359325,1.0,1.0,1.0,1.0,1.0,1.0,0.9851851851851852,0.5708652113652115,0.9997251638469744,0.8731731183843244,0.41527032852172907,9.794357996480152e-05,1.0,1.0,0.0,1.0,1.0,1.0
254
+ 252,0.8102893890675241,0.4482287168502807,1.0,0.0,0.8591483560908209,0.03806937274787632,1.0,1.0,1.0,1.0,1.0,1.0,0.9901234567901236,0.6262173104278368,0.9998731900624904,0.9283186503565328,0.3678202629089361,2.6562892892073586e-05,1.0,1.0,0.0,1.0,1.0,1.0
255
+ 253,0.8135048231511254,0.4310430288314819,1.0,0.0,0.8590719822490738,0.03809001876807012,1.0,1.0,1.0,1.0,1.0,1.0,0.9850617283950616,0.5570962393747203,0.9996772595640908,0.95611528532662,0.32250881195068304,-0.0002255993974834697,1.0,1.0,0.0,1.0,1.0,1.0
256
+ 254,0.8167202572347267,0.4159778356552124,1.0,0.0,0.8590648932016264,0.03809193268762467,1.0,1.0,1.0,1.0,1.0,1.0,0.9876543209876544,0.6901510333863274,0.9997748649426748,0.9655221923027422,0.2497053146362299,8.611092530454167e-05,1.0,1.0,0.0,1.0,1.0,1.0
257
+ 255,0.819935691318328,0.4060724973678589,1.0,0.0,0.8591038395322872,0.038081407675539664,1.0,1.0,1.0,1.0,1.0,1.0,0.9753086419753086,0.6013698376899472,0.9995886805873088,0.9633472814603522,0.1228189468383789,0.00023242332168799118,1.0,1.0,0.0,1.0,1.0,1.0
258
+ 256,0.8231511254019293,0.4036959409713745,1.0,0.0,0.8591508952470457,0.03806869035545587,1.0,1.0,1.0,1.0,1.0,1.0,0.9864197530864196,0.7281089185137161,0.9998032820200172,0.9837961976144212,0.11640310287475586,4.822111417841779e-05,1.0,1.0,0.0,1.0,1.0,1.0
259
+ 257,0.8263665594855305,0.3944321870803833,1.0,0.0,0.8591216706626132,0.03807658556412182,1.0,1.0,1.0,1.0,1.0,1.0,0.991358024691358,0.7464752983868426,0.9998952056766416,0.9887204280328274,0.09926795959472712,-5.9137644703929904e-05,1.0,1.0,0.0,1.0,1.0,1.0
260
+ 258,0.8295819935691319,0.3937691450119018,1.0,0.0,0.8591290038825387,0.03807460411992626,1.0,1.0,1.0,1.0,1.0,1.0,0.9873251028806584,0.7161701474201474,0.999802452426516,0.986006944921944,0.016307830810546875,0.00012177964182132073,1.0,1.0,0.0,1.0,1.0,1.0
261
+ 259,0.8327974276527331,0.3928014039993286,1.0,0.0,0.8591667371298695,0.03806440759993969,1.0,1.0,1.0,1.0,1.0,1.0,0.9873388203017832,0.6807791585881473,0.9998406150259388,0.9857599857368236,0.021142959594726007,-0.039549728508102705,1.0,1.0,0.0,1.0,1.0,1.0
262
+ 260,0.8360128617363344,0.3916548490524292,1.0,0.0,0.8444961231143526,0.04202957697073653,1.0,1.0,1.0,1.0,1.0,1.0,0.98880658436214,0.6734407484407484,0.9998331275155662,0.9865090745105408,0.006992816925049383,-0.0360416970108373,1.0,1.0,0.0,1.0,1.0,1.0
263
+ 261,0.8392282958199357,0.3921021223068237,1.0,0.0,0.8458317827585606,0.04166857730102342,1.0,1.0,1.0,1.0,1.0,1.0,0.9967626886145404,0.709050159099011,0.9999631683667614,0.9891461319416448,0.004332065582275946,-0.0002818196796300354,1.0,1.0,0.0,1.0,1.0,1.0
264
+ 262,0.842443729903537,0.3912216424942016,1.0,0.0,0.8443918611218083,0.042057758938699535,1.0,1.0,1.0,1.0,1.0,1.0,0.9951440329218108,0.6786773809245719,0.999942847465664,0.9883722217749727,0.004265308380127508,-0.003934879581911216,1.0,1.0,0.0,1.0,1.0,1.0
265
+ 263,0.8456591639871383,0.3925286531448364,1.0,0.0,0.8443759386785528,0.04206206525921454,1.0,1.0,1.0,1.0,1.0,1.0,0.9910973936899864,0.6729776448877571,0.9998831303945312,0.988525174569192,0.014271736145020086,-0.000730958646056809,1.0,1.0,0.0,1.0,1.0,1.0
266
+ 264,0.8488745980707395,0.3926488161087036,1.0,0.0,0.8441214103105348,0.042130854803305216,1.0,1.0,1.0,1.0,1.0,1.0,0.9637421124828532,0.4933869046228596,0.9998408432921058,0.9779534151388092,0.0013661384582519531,0.00025337631203756206,1.0,1.0,0.0,1.0,1.0,1.0
267
+ 265,0.8520900321543409,0.3926652669906616,1.0,0.0,0.8444696894841389,0.042036727628010785,1.0,1.0,1.0,1.0,1.0,1.0,0.9305596707818932,0.407919479548693,0.998011091805111,0.9774209158263568,0.0015616416931146793,0.00046044346492239707,1.0,1.0,0.0,1.0,1.0,1.0
268
+ 266,0.8553054662379421,0.3928049802780151,1.0,0.0,0.8442917656090296,0.04208481045681298,1.0,1.0,1.0,1.0,1.0,1.0,0.878196159122085,0.2979046462192529,0.993200037426544,0.9665519544628716,0.0014257431030273438,0.001405747702789631,1.0,1.0,0.0,1.0,1.0,1.0
269
+ 267,0.8585209003215434,0.3925226926803589,1.0,0.0,0.8449897839493221,0.04189615285773182,1.0,0.9084700425465898,1.0,1.0,1.0,1.0,0.7576131687242799,0.2873885743450961,0.9705903978052126,0.9765548547795018,0.002644062042235773,0.001662695811665213,1.0,1.0,0.0,1.0,1.0,1.0
270
+ 268,0.8617363344051447,0.3925405740737915,1.0,0.0,0.8449069579613016,0.041918540875646455,1.0,1.0,1.0,1.0,1.0,1.0,0.5925925925925926,0.2344536951382464,0.9400345475791292,0.9746027123205412,0.0012445449829101562,-0.00280648362671318,1.0,1.0,0.0,1.0,1.0,1.0
271
+ 269,0.864951768488746,0.3926471471786499,1.0,0.0,0.8439514116207569,0.04217680122040314,1.0,1.0,1.0,1.0,1.0,1.0,0.6023703703703703,0.1917167372458594,0.9318237000457248,0.9659052029017524,0.0034999847412109375,0.047719915327030654,1.0,1.0,1.0,1.0,1.0,1.0
272
+ 270,0.8681672025723473,0.3928905725479126,1.0,0.0,0.8625626822347028,0.03714654934294339,1.0,1.0,1.0,1.0,1.0,1.0,0.5887640449438203,0.2289522724305333,0.9151296989873768,0.961931366872086,0.000374317169188898,0.10050694162431456,1.0,1.0,1.0,1.0,1.0,1.0
273
+ 271,0.8713826366559485,0.3926845788955688,1.0,0.0,0.8811376599878488,0.032126107057971684,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.3278495887191539,1.0,0.9597195089353566,0.0019264221191411801,0.07411134596055365,1.0,1.0,1.0,1.0,1.0,1.0
274
+ 272,0.8745980707395499,0.3926979303359985,1.0,0.0,0.8899829032524859,0.029735414746888025,1.0,1.0,1.0,1.0,1.0,1.0,0.4565432098765433,0.1069330199764982,0.8957278626225678,0.9561591778258952,0.0007343292236328125,0.02108037706811075,1.0,1.0,1.0,1.0,1.0,1.0
275
+ 273,0.8778135048231511,0.3926111459732055,1.0,0.0,0.8889371195124847,0.03001806935116061,1.0,1.0,1.0,1.0,1.0,1.0,0.442716049382716,0.1037994516255386,0.9100640024386528,0.961752196155228,0.0016474723815917969,-0.04826820417068729,1.0,1.0,0.0,1.0,1.0,1.0
276
+ 274,0.8810289389067524,0.3925331830978393,1.0,0.0,0.8721243165656887,0.034562235163956755,1.0,1.0,1.0,1.0,1.0,1.0,0.4201234567901234,0.0943987465726596,0.8995634234190872,0.9469459498537952,0.0005960464477539062,-0.09216563362504648,1.0,1.0,0.0,1.0,1.0,1.0
277
+ 275,0.8842443729903537,0.3926707506179809,1.0,0.0,0.8548370593686109,0.03923463271366526,1.0,1.0,1.0,1.0,1.0,1.0,0.4050617283950617,0.0885668276972625,0.938353062904174,0.9420448679193368,0.0010251998901361636,-0.052706511086785465,1.0,1.0,0.0,1.0,1.0,1.0
278
+ 276,0.887459807073955,0.3924306631088257,1.0,0.0,0.8526235878006102,0.0398328862726353,1.0,1.0,1.0,1.0,1.0,1.0,0.4029629629629629,0.0982286634460547,0.9769948280241832,0.928762095428762,0.0008344650268549136,-0.013536391513472162,1.0,1.0,0.0,1.0,1.0,1.0
279
+ 277,0.8906752411575563,0.3925873041152954,1.0,0.0,0.8498287697856157,0.040588271865012474,1.0,1.0,1.0,1.0,1.0,1.0,0.4888888888888888,0.217391304347826,1.0,0.9586630367684726,0.003292560577392023,-0.016674137021616894,1.0,1.0,0.0,1.0,1.0,1.0
280
+ 278,0.8938906752411575,0.3927599191665649,1.0,0.0,0.8464543831199601,0.04150029997479699,1.0,1.0,1.0,1.0,1.0,1.0,0.6533333333333333,0.1560990338164251,1.0,0.9453900695408848,0.0010800361633300781,-0.01417482832936641,1.0,1.0,0.0,1.0,1.0,1.0
281
+ 279,0.8971061093247589,0.3924793004989624,1.0,0.0,0.8445842737578608,0.042005754697949114,1.0,1.0,1.0,1.0,1.0,1.0,0.8790123456790123,0.2367149758454106,1.0,0.9365648256952605,0.0022196769714349918,-0.00411579438857515,1.0,1.0,0.0,1.0,1.0,1.0
282
+ 280,0.9003215434083601,0.3925379514694214,1.0,0.0,0.8449315956962757,0.041911879413654506,1.0,1.0,1.0,1.0,1.0,1.0,0.9351851851851852,0.3754528985507246,1.0,0.9624315080162738,0.00041961669921875,0.010993171726528458,1.0,1.0,1.0,1.0,1.0,1.0
283
+ 281,0.9035369774919614,0.3925212621688843,1.0,0.0,0.8486516007033659,0.04090643752529627,1.0,1.0,1.0,1.0,1.0,1.0,0.9861728395061728,0.5295893719806763,1.0,0.9781362097924864,0.00035762786865234375,0.020441300758818684,1.0,1.0,1.0,1.0,1.0,1.0
284
+ 282,0.9067524115755627,0.3925737142562866,1.0,0.0,0.8524946132568703,0.03986774933777264,1.0,1.0,1.0,1.0,1.0,1.0,0.9901234567901236,0.5357789855072465,1.0,0.9730248812102456,0.001175403594970148,0.020631034841076673,1.0,1.0,1.0,1.0,1.0,1.0
285
+ 283,0.909967845659164,0.3926388025283813,1.0,0.0,0.8562848148415116,0.0388433340411886,1.0,1.0,1.0,1.0,1.0,1.0,0.9975308641975308,0.5855978260869565,1.0,0.9776551914233074,0.002479553222655695,0.017346800444162785,1.0,1.0,1.0,1.0,1.0,1.0
286
+ 284,0.9131832797427653,0.3928216695785522,1.0,0.0,0.8589126900247541,0.03813306929335636,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.6040157004830917,1.0,0.981981695759078,0.0004410743713378906,0.01328387749852819,1.0,1.0,1.0,1.0,1.0,1.0
287
+ 285,0.9163987138263664,0.3925946950912475,1.0,0.0,0.8611996723670057,0.03751494629133578,1.0,1.0,1.0,1.0,1.0,1.0,0.9987654320987654,0.6408514492753623,1.0,0.9833827257306396,0.0023341178894037418,0.017258098792206147,1.0,1.0,1.0,1.0,1.0,1.0
288
+ 286,0.919614147909968,0.3925882577896118,1.0,0.0,0.8652979668784461,0.036407259414135744,1.0,1.0,1.0,1.0,1.0,1.0,0.9987654320987654,0.6439210950080515,1.0,0.9739785623169512,4.291534423828125e-05,0.009273963734673235,1.0,1.0,0.0,1.0,1.0,1.0
289
+ 287,0.9228295819935692,0.3925904035568237,1.0,0.0,0.8646309113784556,0.03658754991786846,1.0,1.0,1.0,1.0,1.0,1.0,0.9987654320987654,0.6445848021934979,1.0,0.979344250054434,0.002899169921875,0.004008625780188499,1.0,1.0,0.0,1.0,1.0,1.0
290
+ 288,0.9260450160771704,0.3928781747817993,1.0,0.0,0.8667811132493689,0.036006396836116894,1.0,1.0,1.0,1.0,1.0,1.0,0.9987654320987654,0.6206913435174304,0.9999944873434956,0.9788516558246334,0.0008678436279296875,0.021722821434747158,1.0,1.0,1.0,1.0,1.0,1.0
291
+ 289,0.9292604501607716,0.3925036191940307,1.0,0.0,0.8726680748985933,0.03441526777439374,1.0,1.0,1.0,1.0,1.0,1.0,0.9987654320987654,0.6356247551899725,0.9999903978052126,0.9725165953903848,0.0029134750366210938,-0.027433592338347024,1.0,1.0,0.0,1.0,1.0,1.0
292
+ 290,0.932475884244373,0.3925868272781372,1.0,0.0,0.8566310442787085,0.038749756069951596,1.0,1.0,1.0,1.0,1.0,1.0,0.9987654320987654,0.6475714845280063,0.9999871293332656,0.9785762071445708,0.002620220184326727,-0.0503305159066688,1.0,1.0,0.0,1.0,1.0,1.0
293
+ 291,0.9356913183279744,0.3927656412124634,1.0,0.0,0.8540464565338376,0.03944831936506062,1.0,1.0,1.0,1.0,1.0,1.0,0.9950617283950616,0.6983450842146495,0.999931148707006,0.9862420899895196,9.059906005914886e-05,-0.010442807563420808,1.0,1.0,0.0,1.0,1.0,1.0
294
+ 292,0.9389067524115756,0.3925777673721313,1.0,0.0,0.8527673234509853,0.03979403682629368,1.0,1.0,1.0,1.0,1.0,1.0,0.9975308641975308,0.6505581668625147,0.9999283036122544,0.9815154683197832,1.9073486328125e-05,0.02227283324643746,1.0,1.0,1.0,1.0,1.0,1.0
295
+ 293,0.9421221864951768,0.3927675485610962,1.0,0.0,0.8622870931242872,0.03722103604041688,1.0,1.0,1.0,1.0,1.0,1.0,0.9975308641975308,0.7222385428907168,0.9999390336838896,0.9828695133553936,0.00039577484130803864,0.041009544747133,1.0,1.0,1.0,1.0,1.0,1.0
296
+ 294,0.945337620578778,0.3925381898880005,1.0,0.0,0.867940320644268,0.03569308235158038,1.0,1.0,1.0,1.0,1.0,1.0,0.9962962962962963,0.65951821386604,0.9998600823045268,0.9775598271030088,0.0008225440979009457,0.03245284246394517,1.0,1.0,1.0,1.0,1.0,1.0
297
+ 295,0.9485530546623794,0.3926852941513061,1.0,0.0,0.8742942250709524,0.03397575179402236,1.0,1.0,1.0,1.0,1.0,1.0,0.9962962962962963,0.6834116725421073,0.9998655692729768,0.9748145225341172,8.106231689508636e-05,0.014529197054488005,1.0,1.0,1.0,1.0,1.0,1.0
298
+ 296,0.9517684887459807,0.392530083656311,1.0,0.0,0.8733159348192989,0.034240162646131576,1.0,1.0,1.0,1.0,1.0,1.0,0.9938271604938272,0.638611437524481,0.999772061329374,0.9804654831094314,0.0012373924255371094,0.0027408709537095344,1.0,1.0,0.0,1.0,1.0,1.0
299
+ 297,0.954983922829582,0.3925615549087524,1.0,0.0,0.8753083052779357,0.03370166469865141,1.0,1.0,1.0,1.0,1.0,1.0,0.9938271604938272,0.6147179788484136,0.999772953029658,0.9721409121536444,0.0003266334533691406,-3.423840079138002,1.0,1.0,0.0,1.0,1.0,1.0
300
+ 298,0.9581993569131833,0.3925627470016479,1.0,1.0,0.0,0.3766241705599318,0.4517677302241453,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7698785742264003,0.991561347355586,0.9765941148586812,0.0023674964904790707,-3.4404222977818075,0.0,0.4517677302241453,0.0,1.0,1.0,1.0
301
+ 299,0.9614147909967846,0.3927983045578003,1.0,1.0,0.0,0.37774389447683215,0.4523209829414418,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7749951037994516,0.991740893156531,0.9777523208004786,0.0021862983703618832,-0.0172224895740003,0.0,0.4523209829414418,0.0,1.0,1.0,1.0
302
+ 300,0.964630225080386,0.3927813768386841,1.0,1.0,0.0,0.37834641951733183,0.45296247556029184,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7749951037994516,0.991740893156531,0.9777523208004786,0.0009846687316900082,-0.011939154717193201,0.0,0.45296247556029184,0.0,1.0,1.0,1.0
303
+ 301,0.9678456591639872,0.3926998376846313,1.0,1.0,0.0,0.3789378099485515,0.45328402616429214,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.777222875048962,0.991740893156531,0.977972594851959,0.0013375282287597656,-0.01613151232049581,0.0,0.45328402616429214,0.0,1.0,1.0,1.0
304
+ 302,0.9710610932475884,0.3926476240158081,1.0,1.0,0.0,0.3799595707493814,0.4538895146996784,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7631496881496882,0.9912427983539096,0.9759097129864474,0.0008821487426757812,-0.01571514259359641,0.0,0.4538895146996784,0.0,1.0,1.0,1.0
305
+ 303,0.9742765273311896,0.3926116228103637,1.0,1.0,0.0,0.3805093242079111,0.4554191728382966,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7580561330561331,0.991103795153178,0.9753916422979838,0.00030517578125,-0.011688865900427725,0.0,0.4554191728382966,0.0,1.0,1.0,1.0
306
+ 304,0.977491961414791,0.3926781415939331,1.0,1.0,0.0,0.3811284573394242,0.4563351354361921,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7746034077555817,0.991561347355586,0.9777135912969216,0.0008916854858392886,-0.018894973759875366,0.0,0.4563351354361921,0.0,1.0,1.0,1.0
307
+ 305,0.9807073954983924,0.3925224542617798,1.0,1.0,0.0,0.38239882158389865,0.4567235788016699,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.991561347355586,0.9781928689034394,0.001990795135498047,-0.018222851795383632,0.0,0.4567235788016699,0.0,1.0,1.0,1.0
308
+ 306,0.9839228295819936,0.3928772211074829,1.0,1.0,0.0,0.38295074251896255,0.4576669836444091,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.9914252400548696,0.9781928689034394,0.000717639923095148,-0.014853622764205432,0.0,0.4576669836444091,0.0,1.0,1.0,1.0
309
+ 307,0.9871382636655948,0.3925942182540893,1.0,1.0,0.0,0.3838841838603192,0.4562945992231467,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.9914252400548696,0.9781928689034394,0.001506805419921875,-0.0158717226604832,0.0,0.4562945992231467,0.0,1.0,1.0,1.0
310
+ 308,0.990353697749196,0.3927265405654907,1.0,1.0,0.0,0.38453791478501087,0.0,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.9914252400548696,0.9781928689034394,0.0014996528625488281,-0.014976659698534567,0.0,0.0,0.0,1.0,1.0,1.0
311
+ 309,0.9935691318327974,0.3927441835403442,1.0,1.0,0.0,0.38538184983017265,0.45882970986282867,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.991561347355586,0.9781928689034394,0.002892017364501953,-0.00681303135188549,0.0,0.45882970986282867,0.0,1.0,1.0,1.0
312
+ 310,0.9967845659163987,0.3924373388290405,1.0,1.0,0.0,0.3852192179201994,0.46009433972064445,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.991740893156531,0.9781928689034394,4.291534423828125e-05,-1.8860716621826867e-06,0.0,0.46009433972064445,0.0,1.0,1.0,1.0
313
+ 311,1.0,0.392748475074768,1.0,1.0,0.0,0.38538203843733887,0.4600183715704433,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7746034077555817,0.9915208047553726,0.9780496561900632,0.006222724914549671,-0.0032564103427890068,0.0,0.4600183715704433,0.0,1.0,1.0,1.0
artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.keyframes.csv ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_index,time_norm,door_angle,right_gripper_open,left_gripper_open,pregrasp_progress,pregrasp_distance,p_pre,p_ext,y_pre_raw,y_ext_raw,y_pre,y_ext,three_view_visibility,three_view_whole_tray_visibility,full_view_visibility,full_view_whole_tray_visibility,door_speed_abs,pregrasp_speed,y_pre_progress_seed,phase_score,approach_active,y_retrieve,y_ready,phase_switch,keyframe_ordinal
2
+ 61,0.1961414790996784,1.5707966089248655,1.0,1.0,0.0074599555493291,0.26826368334525275,0.0,0.0010240077972412,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00879710386837984,0.0,0.0,0.0,0.0,0.0,0.0,0
3
+ 96,0.3086816720257235,1.5705398321151731,0.0,1.0,0.021230536606462458,0.2645417716676796,0.0,0.0010255972544352,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0008988380432151111,0.0075986409301131985,0.0,0.0,0.0,0.0,0.0,0.0,1
4
+ 98,0.315112540192926,1.5711039304733276,0.0,1.0,0.02305226441072572,0.2640493953611447,0.0,0.0010259946187337,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0006198883056640625,0.00857267253610794,0.0,0.0,0.0,0.0,0.0,0.0,2
5
+ 149,0.4790996784565916,0.7233246564865112,1.0,1.0,0.023149487547852288,0.26402311802260126,0.7154452749838629,0.0010240077972412,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.043487548828125,0.008812120038229065,0.0,0.7154452749838629,0.0,0.0,0.0,1.0,3
6
+ 151,0.4855305466237942,0.7274461984634399,1.0,1.0,0.02477345115475227,0.2635841932790162,0.7158666640531521,0.0010255972544352,0.0,0.0,0.0,0.0,0.6888888888888889,0.7534722222222222,0.8133333333333334,0.7642994557057057,0.024998188018798828,0.005642328265169638,0.0,0.7158666640531521,0.0,0.0,0.0,1.0,4
7
+ 208,0.6688102893890675,0.7242881059646606,1.0,1.0,0.0,0.271507075652888,0.8539452687457768,0.0010259946187337,0.0,0.0,0.0,0.0,0.7962962962962963,0.8440915300546449,0.8777777777777778,0.8509388615049476,0.020570755004882812,-0.07766196083802468,0.0,0.8539452687457768,0.0,0.0,0.0,1.0,5
8
+ 238,0.7652733118971061,0.5699359178543091,1.0,0.0,0.8585750263520959,0.038224332911680266,1.0,1.0,1.0,1.0,1.0,1.0,0.9666666666666668,0.3821794871794872,0.9737037037037036,0.4197496534996535,0.0502324104309082,-0.019563483341889926,1.0,1.0,0.0,1.0,1.0,1.0,6
9
+ 240,0.7717041800643086,0.5700048208236694,1.0,0.0,0.8590579511740282,0.038093810648075654,1.0,1.0,1.0,1.0,1.0,1.0,0.9666666666666668,0.3508974358974359,0.9744444444444444,0.3881769750519751,0.015075206756591797,0.00031890376035063894,1.0,1.0,0.0,1.0,1.0,1.0,7
10
+ 263,0.8456591639871383,0.3925286531448364,1.0,0.0,0.8443759386785528,0.04206206525921454,1.0,1.0,1.0,1.0,1.0,1.0,0.9910973936899864,0.6729776448877571,0.9998831303945312,0.988525174569192,0.014271736145020086,-0.000730958646056809,1.0,1.0,0.0,1.0,1.0,1.0,8
11
+ 282,0.9067524115755627,0.3925737142562866,1.0,0.0,0.8524946132568703,0.03986774933777264,1.0,1.0,1.0,1.0,1.0,1.0,0.9901234567901236,0.5357789855072465,1.0,0.9730248812102456,0.001175403594970148,0.020631034841076673,1.0,1.0,1.0,1.0,1.0,1.0,9
12
+ 298,0.9581993569131833,0.3925627470016479,1.0,1.0,0.0,0.3766241705599318,0.4517677302241453,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7698785742264003,0.991561347355586,0.9765941148586812,0.0023674964904790707,-3.4404222977818075,0.0,0.4517677302241453,0.0,1.0,1.0,1.0,10
13
+ 300,0.964630225080386,0.3927813768386841,1.0,1.0,0.0,0.37834641951733183,0.45296247556029184,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7749951037994516,0.991740893156531,0.9777523208004786,0.0009846687316900082,-0.011939154717193201,0.0,0.45296247556029184,0.0,1.0,1.0,1.0,11
14
+ 305,0.9807073954983924,0.3925224542617798,1.0,1.0,0.0,0.38239882158389865,0.4567235788016699,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7794506462984724,0.991561347355586,0.9781928689034394,0.001990795135498047,-0.018222851795383632,0.0,0.4567235788016699,0.0,1.0,1.0,1.0,12
15
+ 311,1.0,0.392748475074768,1.0,1.0,0.0,0.38538203843733887,0.4600183715704433,1.0,0.0,1.0,1.0,1.0,0.971851851851852,0.7746034077555817,0.9915208047553726,0.9780496561900632,0.006222724914549671,-0.0032564103427890068,0.0,0.4600183715704433,0.0,1.0,1.0,1.0,13
artifacts/results/metric_iter22_ep1_pregrasp_repair/episode1.metrics.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "episode_name": "episode1",
3
+ "description": "take tray out of oven",
4
+ "num_dense_frames": 312,
5
+ "num_keyframes": 14,
6
+ "phase_switch_rises": 1,
7
+ "phase_switch_falls": 0,
8
+ "ppre_cross_frame": 135,
9
+ "pext_cross_frame": 237,
10
+ "phase_cross_frame": 135,
11
+ "retrieve_cross_frame": 228,
12
+ "ready_cross_frame": 238,
13
+ "ordering_ok": true,
14
+ "dense_boundary_error_to_retrieve_frames": 93.0,
15
+ "dense_boundary_error_frames": 103.0,
16
+ "dense_boundary_error_fraction": 0.3301282051282051,
17
+ "key_boundary_error_to_retrieve_keyframes": 3.0,
18
+ "key_boundary_error_keyframes": 3.0,
19
+ "auroc_vret_ypre_three": 0.9526776776776777,
20
+ "auprc_vret_ypre_three": 0.9382002220396171,
21
+ "auroc_vret_ypre_full": 0.9968218218218219,
22
+ "auprc_vret_ypre_full": 0.9927785989555453,
23
+ "auroc_ppre_ypre": 0.9147147147147148,
24
+ "auprc_ppre_ypre": 0.8943537824287375,
25
+ "auroc_pext_yext": 1.0,
26
+ "auprc_pext_yext": 1.0,
27
+ "auroc_phase_yretrieve": 0.900375939849624,
28
+ "auprc_phase_yretrieve": 0.8455552074868606,
29
+ "f1_phase_yretrieve": 0.6436781609195402,
30
+ "auroc_phase_yready": 0.9035600726777198,
31
+ "auprc_phase_yready": 0.7799738121388438,
32
+ "f1_phase_yready": 0.5896414342629482,
33
+ "baseline_auroc_door_yext": 0.0,
34
+ "baseline_auprc_door_yext": 0.1327805535676393,
35
+ "baseline_auroc_time_yext": 1.0,
36
+ "baseline_auprc_time_yext": 1.0,
37
+ "baseline_auroc_whole_vis_yext": 0.9203938115330521,
38
+ "baseline_auprc_whole_vis_yext": 0.888952798412559,
39
+ "pre_ready_open_more_increases_pext": 2.0,
40
+ "pre_ready_open_more_trials": 2.0,
41
+ "pre_ready_hold_open_increases_pext": 0.0,
42
+ "pre_ready_hold_open_trials": 2.0,
43
+ "pre_ready_extract_success": 0.0,
44
+ "pre_ready_extract_trials": 2.0,
45
+ "pre_ready_wait_extract_success": 0.0,
46
+ "pre_ready_wait_trials": 2.0,
47
+ "post_ready_extract_success": 2.0,
48
+ "post_ready_extract_trials": 2.0,
49
+ "post_ready_open_more_low_gain": 1.0,
50
+ "post_ready_open_more_trials": 2.0,
51
+ "post_ready_hold_open_low_gain": 1.0,
52
+ "post_ready_hold_open_trials": 2.0
53
+ }
artifacts/results/metric_iter22_ep1_pregrasp_repair/summary.json ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "num_episodes": 1,
3
+ "mean_metrics": {
4
+ "num_dense_frames": 312.0,
5
+ "num_keyframes": 14.0,
6
+ "phase_switch_rises": 1.0,
7
+ "phase_switch_falls": 0.0,
8
+ "ppre_cross_frame": 135.0,
9
+ "pext_cross_frame": 237.0,
10
+ "phase_cross_frame": 135.0,
11
+ "retrieve_cross_frame": 228.0,
12
+ "ready_cross_frame": 238.0,
13
+ "dense_boundary_error_to_retrieve_frames": 93.0,
14
+ "dense_boundary_error_frames": 103.0,
15
+ "dense_boundary_error_fraction": 0.3301282051282051,
16
+ "key_boundary_error_to_retrieve_keyframes": 3.0,
17
+ "key_boundary_error_keyframes": 3.0,
18
+ "auroc_vret_ypre_three": 0.9526776776776777,
19
+ "auprc_vret_ypre_three": 0.9382002220396171,
20
+ "auroc_vret_ypre_full": 0.9968218218218219,
21
+ "auprc_vret_ypre_full": 0.9927785989555453,
22
+ "auroc_ppre_ypre": 0.9147147147147148,
23
+ "auprc_ppre_ypre": 0.8943537824287375,
24
+ "auroc_pext_yext": 1.0,
25
+ "auprc_pext_yext": 1.0,
26
+ "auroc_phase_yretrieve": 0.900375939849624,
27
+ "auprc_phase_yretrieve": 0.8455552074868606,
28
+ "f1_phase_yretrieve": 0.6436781609195402,
29
+ "auroc_phase_yready": 0.9035600726777198,
30
+ "auprc_phase_yready": 0.7799738121388438,
31
+ "f1_phase_yready": 0.5896414342629482,
32
+ "baseline_auroc_door_yext": 0.0,
33
+ "baseline_auprc_door_yext": 0.1327805535676393,
34
+ "baseline_auroc_time_yext": 1.0,
35
+ "baseline_auprc_time_yext": 1.0,
36
+ "baseline_auroc_whole_vis_yext": 0.9203938115330521,
37
+ "baseline_auprc_whole_vis_yext": 0.888952798412559,
38
+ "pre_ready_open_more_increases_pext": 2.0,
39
+ "pre_ready_open_more_trials": 2.0,
40
+ "pre_ready_hold_open_increases_pext": 0.0,
41
+ "pre_ready_hold_open_trials": 2.0,
42
+ "pre_ready_extract_success": 0.0,
43
+ "pre_ready_extract_trials": 2.0,
44
+ "pre_ready_wait_extract_success": 0.0,
45
+ "pre_ready_wait_trials": 2.0,
46
+ "post_ready_extract_success": 2.0,
47
+ "post_ready_extract_trials": 2.0,
48
+ "post_ready_open_more_low_gain": 1.0,
49
+ "post_ready_open_more_trials": 2.0,
50
+ "post_ready_hold_open_low_gain": 1.0,
51
+ "post_ready_hold_open_trials": 2.0
52
+ },
53
+ "median_metrics": {
54
+ "num_dense_frames": 312.0,
55
+ "num_keyframes": 14.0,
56
+ "phase_switch_rises": 1.0,
57
+ "phase_switch_falls": 0.0,
58
+ "ppre_cross_frame": 135.0,
59
+ "pext_cross_frame": 237.0,
60
+ "phase_cross_frame": 135.0,
61
+ "retrieve_cross_frame": 228.0,
62
+ "ready_cross_frame": 238.0,
63
+ "dense_boundary_error_to_retrieve_frames": 93.0,
64
+ "dense_boundary_error_frames": 103.0,
65
+ "dense_boundary_error_fraction": 0.3301282051282051,
66
+ "key_boundary_error_to_retrieve_keyframes": 3.0,
67
+ "key_boundary_error_keyframes": 3.0,
68
+ "auroc_vret_ypre_three": 0.9526776776776777,
69
+ "auprc_vret_ypre_three": 0.9382002220396171,
70
+ "auroc_vret_ypre_full": 0.9968218218218219,
71
+ "auprc_vret_ypre_full": 0.9927785989555453,
72
+ "auroc_ppre_ypre": 0.9147147147147148,
73
+ "auprc_ppre_ypre": 0.8943537824287375,
74
+ "auroc_pext_yext": 1.0,
75
+ "auprc_pext_yext": 1.0,
76
+ "auroc_phase_yretrieve": 0.900375939849624,
77
+ "auprc_phase_yretrieve": 0.8455552074868606,
78
+ "f1_phase_yretrieve": 0.6436781609195402,
79
+ "auroc_phase_yready": 0.9035600726777198,
80
+ "auprc_phase_yready": 0.7799738121388438,
81
+ "f1_phase_yready": 0.5896414342629482,
82
+ "baseline_auroc_door_yext": 0.0,
83
+ "baseline_auprc_door_yext": 0.1327805535676393,
84
+ "baseline_auroc_time_yext": 1.0,
85
+ "baseline_auprc_time_yext": 1.0,
86
+ "baseline_auroc_whole_vis_yext": 0.9203938115330521,
87
+ "baseline_auprc_whole_vis_yext": 0.888952798412559,
88
+ "pre_ready_open_more_increases_pext": 2.0,
89
+ "pre_ready_open_more_trials": 2.0,
90
+ "pre_ready_hold_open_increases_pext": 0.0,
91
+ "pre_ready_hold_open_trials": 2.0,
92
+ "pre_ready_extract_success": 0.0,
93
+ "pre_ready_extract_trials": 2.0,
94
+ "pre_ready_wait_extract_success": 0.0,
95
+ "pre_ready_wait_trials": 2.0,
96
+ "post_ready_extract_success": 2.0,
97
+ "post_ready_extract_trials": 2.0,
98
+ "post_ready_open_more_low_gain": 1.0,
99
+ "post_ready_open_more_trials": 2.0,
100
+ "post_ready_hold_open_low_gain": 1.0,
101
+ "post_ready_hold_open_trials": 2.0
102
+ },
103
+ "single_switch_rate": 1.0,
104
+ "reversion_rate": 0.0,
105
+ "ordering_ok_rate": 1.0
106
+ }
artifacts/results/metric_iter22_ep1_pregrasp_repair/templates.json ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "template_mode": "per_episode",
3
+ "template_episode": "episode1",
4
+ "template_frames": {
5
+ "pregrasp": 233,
6
+ "grasp": 238,
7
+ "right_close": 96,
8
+ "right_open": 149,
9
+ "approach": [
10
+ 208,
11
+ 213,
12
+ 218,
13
+ 223,
14
+ 228,
15
+ 233,
16
+ 236
17
+ ],
18
+ "retreat": [
19
+ 243,
20
+ 248,
21
+ 253,
22
+ 258,
23
+ 268,
24
+ 278,
25
+ 288,
26
+ 293,
27
+ 298
28
+ ]
29
+ },
30
+ "templates": {
31
+ "approach_rel_poses": [
32
+ [
33
+ -0.36245508353905986,
34
+ 0.0836113657065195,
35
+ 0.13725238901315362,
36
+ 0.6415420900574104,
37
+ 0.6402432100023456,
38
+ 0.30041430863400326,
39
+ 0.29709194182713144
40
+ ],
41
+ [
42
+ -0.34738865009656433,
43
+ 0.08507865136091547,
44
+ 0.1298340574841772,
45
+ 0.6356541773702851,
46
+ 0.6351472860878979,
47
+ 0.31179297602371386,
48
+ 0.30873424149122125
49
+ ],
50
+ [
51
+ -0.289833896953664,
52
+ 0.09006675142633891,
53
+ 0.1007337562722821,
54
+ 0.6116820288651007,
55
+ 0.6120308334529039,
56
+ 0.35606267862709184,
57
+ 0.35282109256012206
58
+ ],
59
+ [
60
+ -0.22959350407648904,
61
+ 0.09517184245706051,
62
+ 0.07070743658999779,
63
+ 0.5834227929504305,
64
+ 0.5835597005266273,
65
+ 0.4008544326202859,
66
+ 0.397984477631805
67
+ ],
68
+ [
69
+ -0.17165833273980532,
70
+ 0.10009537980103722,
71
+ 0.04194181672817909,
72
+ 0.5531857251933899,
73
+ 0.5530388872528774,
74
+ 0.44172133174187284,
75
+ 0.4393356435716874
76
+ ],
77
+ [
78
+ -0.1231460174213749,
79
+ 0.09969612051577048,
80
+ 0.01265825170527135,
81
+ 0.5311584890422428,
82
+ 0.5227175780787313,
83
+ 0.46572774144064183,
84
+ 0.4772155319543421
85
+ ],
86
+ [
87
+ -0.09027581380427976,
88
+ 0.10692156426404792,
89
+ 0.0018343185084412905,
90
+ 0.505481557848821,
91
+ 0.5048378746297203,
92
+ 0.49555117097958495,
93
+ 0.49402039629436145
94
+ ]
95
+ ],
96
+ "pregrasp_rel_pose": [
97
+ -0.1231460174213749,
98
+ 0.09969612051577048,
99
+ 0.01265825170527135,
100
+ 0.5311584890422428,
101
+ 0.5227175780787313,
102
+ 0.46572774144064183,
103
+ 0.4772155319543421
104
+ ],
105
+ "grasp_rel_pose": [
106
+ -0.10036508073821429,
107
+ 0.08741720728235974,
108
+ -0.02078270392085768,
109
+ 0.5514328324227972,
110
+ 0.5030620556550104,
111
+ 0.4473662127869575,
112
+ 0.49265999547657746
113
+ ],
114
+ "retreat_rel_poses": [
115
+ [
116
+ 0.1402307152748108,
117
+ 0.06349289417266846,
118
+ 0.2952132225036621,
119
+ 0.16023066264463862,
120
+ 0.6891299324690295,
121
+ 0.6887792187473888,
122
+ 0.1581431590219048
123
+ ],
124
+ [
125
+ 0.114012211561203,
126
+ -0.015882685780525208,
127
+ 0.30751562118530273,
128
+ 0.16025755264957176,
129
+ 0.6891621502401655,
130
+ 0.688718632107023,
131
+ 0.1582393544089225
132
+ ],
133
+ [
134
+ 0.08392333984375,
135
+ -0.1057267040014267,
136
+ 0.3217874765396118,
137
+ 0.160221448632837,
138
+ 0.6889863825807692,
139
+ 0.6888883329455286,
140
+ 0.15830261131071563
141
+ ],
142
+ [
143
+ 0.06033626198768616,
144
+ -0.17559631168842316,
145
+ 0.33280396461486816,
146
+ 0.16034800946895866,
147
+ 0.6887454833038534,
148
+ 0.6890855277947168,
149
+ 0.1583644861443395
150
+ ],
151
+ [
152
+ 0.05752289295196533,
153
+ -0.18496546149253845,
154
+ 0.38399529457092285,
155
+ 0.1613262847578106,
156
+ 0.6887548377197392,
157
+ 0.6892198731455383,
158
+ 0.1567372636776133
159
+ ],
160
+ [
161
+ 0.05758163332939148,
162
+ -0.1864495724439621,
163
+ 0.5771888494491577,
164
+ 0.1604210189327871,
165
+ 0.6892041738984471,
166
+ 0.6888083990813172,
167
+ 0.1574982308489793
168
+ ],
169
+ [
170
+ 0.07197123765945435,
171
+ -0.1565917730331421,
172
+ 0.6011577844619751,
173
+ 0.1603302270475677,
174
+ 0.6887327645907958,
175
+ 0.6892655108761903,
176
+ 0.15765295046582292
177
+ ],
178
+ [
179
+ 0.11050841212272644,
180
+ -0.07776785641908646,
181
+ 0.60198974609375,
182
+ 0.1599628978766199,
183
+ 0.6889541929620641,
184
+ 0.6891167348186555,
185
+ 0.1577089632702597
186
+ ],
187
+ [
188
+ 0.08477449417114258,
189
+ -0.06145069748163223,
190
+ 0.4819430112838745,
191
+ 0.15302119788446777,
192
+ 0.8682446871188412,
193
+ 0.46903469053007496,
194
+ 0.05236540238807523
195
+ ]
196
+ ],
197
+ "grasp_local_center": [
198
+ -0.10036508073821429,
199
+ 0.08741720728235974,
200
+ -0.02078270392085768
201
+ ],
202
+ "grasp_region_extents": [
203
+ 0.03,
204
+ 0.015,
205
+ 0.004
206
+ ],
207
+ "retriever_home_joints": [
208
+ 1.9109265849692747e-06,
209
+ 0.17527583241462708,
210
+ 4.563004040392116e-06,
211
+ -0.8731929659843445,
212
+ 1.0853158528334461e-05,
213
+ 1.221557378768921,
214
+ 0.7853907346725464
215
+ ],
216
+ "hold_open_angle": 0.7280260324478149,
217
+ "open_more_delta": 0.12,
218
+ "reference_tray_height": 1.0471735000610352,
219
+ "mask_handle_ids": [
220
+ 226
221
+ ]
222
+ }
223
+ }
artifacts/results/metric_iter22_ep1_pregrasp_repair/templates.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0e45e3e2905677398379a48aebb36080e3f78bed249db66d295f60525f19e9e8
3
+ size 2179
artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Visualizations
2
+
3
+ - `episode1_visibility_focus.gif`: three-view visibility montage over dense frames 123-163.
4
+ - `episode1_path_quality_focus.gif`: path-quality montage over dense frames 127-215.
5
+ - `episode1_all_metrics.gif`: full episode overlay GIF over dense frames 0-311, sampled every 2 frames.
6
+ - `frames/visibility_focus/`: per-frame PNGs with scene overlays, x-ray projections, and tray-mask views.
7
+ - `frames/path_quality_focus/`: per-frame PNGs with demo wrist trails plus planned pregrasp/grasp/retreat path overlays.
8
+ - `frames/all_metrics/`: per-frame PNGs with the episode-wide metric bars and phase banner.
9
+
10
+ Legend highlights:
11
+ - Visibility: blue = sampled tray surface, magenta = sampled grasp region, green = depth-consistent visible grasp samples.
12
+ - Path quality: cyan/purple = recent left/right demo wrist trails, yellow = pregrasp, orange = grasp, green = retreat / extraction path.
13
+ - All metrics: red banner = reveal phase, green banner = retrieve phase.
artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_all_metrics.gif ADDED

Git LFS Details

  • SHA256: f4849fd806705d5d3b5c97861cc93464a7878af0bbfed0b0fc1b57cc528353cd
  • Pointer size: 133 Bytes
  • Size of remote file: 12.9 MB
artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_path_quality_focus.gif ADDED

Git LFS Details

  • SHA256: 3952c3a76c99d1463c936eb79349fb28399cd455d11456a5aa10da268bbc1531
  • Pointer size: 132 Bytes
  • Size of remote file: 4.66 MB
artifacts/results/metric_iter22_ep1_pregrasp_repair/visualizations/episode1_visibility_focus.gif ADDED

Git LFS Details

  • SHA256: a43d18d8a47d507828c38396c510fd233f0b60c3a282f8c264efd3840367503f
  • Pointer size: 132 Bytes
  • Size of remote file: 2.98 MB
code/rr_label_study/oven_study.py CHANGED
@@ -11,11 +11,12 @@ import numpy as np
11
  import pandas as pd
12
  from natsort import natsorted
13
  from PIL import Image
14
- from pyrep.const import ConfigurationPathAlgorithms as Algos
15
  from pyrep.errors import ConfigurationPathError
16
  from pyrep.objects.joint import Joint
17
  from pyrep.objects.object import Object
18
  from pyrep.objects.shape import Shape
 
19
  from rlbench.action_modes.action_mode import BimanualJointPositionActionMode
20
  from rlbench.action_modes.gripper_action_modes import BimanualDiscrete
21
  from rlbench.backend.const import DEPTH_SCALE
@@ -62,10 +63,14 @@ DEFAULT_PLAN_MAX_TIME_MS = 10
62
  DEFAULT_PLAN_TRIALS_PER_GOAL = 4
63
  DEFAULT_PLAN_ATTEMPTS = 2
64
  DEFAULT_PLAN_MIN_SUCCESSES = 2
 
 
65
  DEFAULT_READY_PERSISTENCE = 3
66
  DEFAULT_RETRIEVE_PERSISTENCE = 3
67
  DEFAULT_PREGRASP_PERSISTENCE = 3
68
- DEFAULT_MASK_HANDLE_COUNT = 2
 
 
69
 
70
 
71
  @dataclass
@@ -105,6 +110,7 @@ class MotionTemplates:
105
  retreat_rel_poses: List[np.ndarray]
106
  grasp_local_center: np.ndarray
107
  grasp_region_extents: np.ndarray
 
108
  hold_open_angle: float
109
  open_more_delta: float
110
  reference_tray_height: float
@@ -119,6 +125,7 @@ class MotionTemplates:
119
  "retreat_rel_poses": [pose.tolist() for pose in self.retreat_rel_poses],
120
  "grasp_local_center": self.grasp_local_center.tolist(),
121
  "grasp_region_extents": self.grasp_region_extents.tolist(),
 
122
  "hold_open_angle": float(self.hold_open_angle),
123
  "open_more_delta": float(self.open_more_delta),
124
  "reference_tray_height": float(self.reference_tray_height),
@@ -136,6 +143,9 @@ class MotionTemplates:
136
  ],
137
  grasp_local_center=np.asarray(payload["grasp_local_center"], dtype=np.float64),
138
  grasp_region_extents=np.asarray(payload["grasp_region_extents"], dtype=np.float64),
 
 
 
139
  hold_open_angle=float(payload["hold_open_angle"]),
140
  open_more_delta=float(payload["open_more_delta"]),
141
  reference_tray_height=float(payload["reference_tray_height"]),
@@ -563,6 +573,101 @@ def _local_to_world(reference_pose: Sequence[float], point_local: Sequence[float
563
  return (reference @ point)[:3]
564
 
565
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
  def _first_transition(demo: Demo, side: str, open_to_closed: bool) -> int:
567
  values = [getattr(demo[i], side).gripper_open for i in range(len(demo))]
568
  for i in range(1, len(values)):
@@ -687,6 +792,7 @@ def _derive_templates(dataset_root: Path, template_episode_dir: Path) -> Tuple[M
687
  retreat_rel_poses=retreat_rel_poses,
688
  grasp_local_center=grasp_local_center,
689
  grasp_region_extents=np.array([0.03, 0.015, 0.004], dtype=np.float64),
 
690
  hold_open_angle=float(states[right_open].door_angle),
691
  open_more_delta=max(
692
  0.12,
@@ -733,22 +839,59 @@ def _project_points(points_world: np.ndarray, extrinsics: np.ndarray, intrinsics
733
 
734
 
735
  def _sample_grasp_points(templates: MotionTemplates, tray_pose: np.ndarray) -> np.ndarray:
736
- center = templates.grasp_local_center
737
- extents = templates.grasp_region_extents
738
- xs = np.linspace(center[0] - extents[0], center[0] + extents[0], 9)
739
- ys = np.linspace(center[1] - extents[1], center[1] + extents[1], 5)
740
- zs = np.linspace(center[2] - extents[2], center[2] + extents[2], 3)
741
- points_local = np.array([[x, y, z] for x in xs for y in ys for z in zs], dtype=np.float64)
 
 
 
 
 
 
 
 
 
 
 
742
  return np.array([_local_to_world(tray_pose, point) for point in points_local], dtype=np.float64)
743
 
744
 
745
  def _sample_full_tray_points(tray_pose: np.ndarray) -> np.ndarray:
746
- tray = Shape("tray")
747
- bbox = np.asarray(tray.get_bounding_box(), dtype=np.float64)
748
- xs = np.linspace(bbox[0], bbox[1], 10)
749
- ys = np.linspace(bbox[2], bbox[3], 12)
750
- zs = np.linspace(bbox[4], bbox[5], 3)
751
- points_local = np.array([[x, y, z] for x in xs for y in ys for z in zs], dtype=np.float64)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  return np.array([_local_to_world(tray_pose, point) for point in points_local], dtype=np.float64)
753
 
754
 
@@ -761,37 +904,95 @@ def _infer_tray_mask_handle_ids(
761
  max_handles: int = DEFAULT_MASK_HANDLE_COUNT,
762
  ) -> List[int]:
763
  counts: Dict[int, int] = {}
 
764
  unique_frames = sorted({int(frame_index) for frame_index in reference_frames})
765
  for frame_index in unique_frames:
766
  cache.step_to(frame_index)
767
  grasp_points = _sample_grasp_points(templates, Shape("tray").get_pose())
 
768
  for camera_name in FULL_CAMERA_SET:
769
  mask = _load_mask(episode_dir, frame_index, camera_name)
770
- extrinsics = demo[frame_index].misc[f"{camera_name}_camera_extrinsics"]
771
- intrinsics = demo[frame_index].misc[f"{camera_name}_camera_intrinsics"]
772
- uv, camera_xyz = _project_points(grasp_points, extrinsics, intrinsics)
773
- height, width = mask.shape
774
- for (u, v), (_, _, camera_depth) in zip(uv, camera_xyz):
775
- if camera_depth <= 0 or not (0 <= u < width and 0 <= v < height):
776
- continue
777
- px = min(max(int(round(float(u))), 0), width - 1)
778
- py = min(max(int(round(float(v))), 0), height - 1)
779
- handle = int(mask[py, px])
780
- if handle == 0:
781
- continue
782
- counts[handle] = counts.get(handle, 0) + 1
783
- if not counts:
 
 
 
 
784
  return []
785
- ranked = sorted(counts.items(), key=lambda item: item[1], reverse=True)
786
  top_count = ranked[0][1]
787
  selected = [
788
  handle
789
  for handle, count in ranked
790
- if count >= max(4, int(math.ceil(top_count * 0.5)))
791
  ][:max_handles]
792
  return selected if selected else [ranked[0][0]]
793
 
794
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
795
  def _mask_visibility_ratio(
796
  points_world: np.ndarray,
797
  mask: np.ndarray,
@@ -963,6 +1164,43 @@ def _pregrasp_candidates(tray_pose: np.ndarray, templates: MotionTemplates) -> L
963
  return _dedupe_pose_list(candidates)
964
 
965
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
966
  def _extract_sequence_poses(
967
  tray_pose: np.ndarray, task_base_pose: np.ndarray, templates: MotionTemplates
968
  ) -> List[np.ndarray]:
@@ -1002,6 +1240,100 @@ def _extraction_progress_score(current_height: float, templates: MotionTemplates
1002
  return float(min(1.0, 0.8 + margin / 0.12))
1003
 
1004
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1005
  def _pregrasp_score_and_success(task, templates: MotionTemplates) -> Tuple[float, bool]:
1006
  tray = Shape("tray")
1007
  if any(
@@ -1009,68 +1341,37 @@ def _pregrasp_score_and_success(task, templates: MotionTemplates) -> Tuple[float
1009
  for grasped in task._scene.robot.left_gripper.get_grasped_objects()
1010
  ):
1011
  return 1.0, True
1012
- tray_pose = Shape("tray").get_pose()
1013
- current_pose = np.asarray(task._scene.robot.left_gripper.get_pose(), dtype=np.float64)
1014
- progress, distance_to_pregrasp = _pregrasp_progress_and_distance(
1015
- current_pose, tray_pose, templates
1016
- )
1017
- best = progress
1018
- success = False
1019
- late_approach_poses = [
1020
- _apply_relative_pose(tray_pose, rel_pose)
1021
- for rel_pose in templates.approach_rel_poses[-min(1, len(templates.approach_rel_poses)) :]
1022
- ]
1023
- corridor_targets = _dedupe_pose_list(late_approach_poses)
1024
- if not corridor_targets:
1025
- corridor_targets = [_apply_relative_pose(tray_pose, templates.pregrasp_rel_pose)]
1026
-
1027
- snapshot = _capture_snapshot(task)
1028
- try:
1029
- for start_index, start_pose in enumerate(corridor_targets):
1030
- start_distance = float(np.linalg.norm(current_pose[:3] - start_pose[:3]))
1031
- if start_index > 0 and start_distance > 0.08:
1032
- continue
1033
-
1034
- _restore_snapshot(task, snapshot)
1035
- stage_scores: List[float] = []
1036
- reliable_stage_count = 0
1037
- stage_success = True
1038
-
1039
- for target_pose in corridor_targets[start_index:]:
1040
- live_pose = np.asarray(task._scene.robot.left_gripper.get_pose(), dtype=np.float64)
1041
- proximity = math.exp(-float(np.linalg.norm(live_pose[:3] - target_pose[:3])) / 0.09)
1042
- path, length, reliability = _stable_plan(
1043
- task._scene,
1044
- "left",
1045
- target_pose,
1046
- ignore_collisions=False,
1047
- )
1048
- if path is None or not np.isfinite(length):
1049
- stage_scores.append(0.25 * proximity)
1050
- stage_success = False
1051
- break
1052
-
1053
- planner_score = reliability * math.exp(-length / DEFAULT_PATH_SCALE)
1054
- stage_scores.append(0.7 * planner_score + 0.3 * proximity)
1055
- if not _plan_is_reliable(reliability):
1056
- stage_success = False
1057
- break
1058
-
1059
- path.set_to_end(disable_dynamics=True)
1060
- task._pyrep.step()
1061
- reliable_stage_count += 1
1062
-
1063
- if stage_scores:
1064
- normalized_stage_score = float(np.mean(stage_scores))
1065
- best = max(best, 0.35 * progress + 0.65 * normalized_stage_score)
1066
- else:
1067
- best = max(best, 0.75 * progress)
1068
-
1069
- if stage_success and reliable_stage_count == len(corridor_targets[start_index:]):
1070
- success = True
1071
- finally:
1072
- _restore_snapshot(task, snapshot)
1073
- return best, success
1074
 
1075
 
1076
  def _extract_score_and_success(task, templates: MotionTemplates) -> Tuple[float, bool]:
@@ -1171,15 +1472,15 @@ def _frame_metrics(
1171
  full_tray_points = _sample_full_tray_points(frame_state.tray_pose)
1172
  camera_values: Dict[str, Dict[str, float]] = {}
1173
  for camera_name in FULL_CAMERA_SET:
1174
- mask = _load_mask(episode_dir, frame_state.frame_index, camera_name)
1175
- extrinsics = demo[frame_state.frame_index].misc[f"{camera_name}_camera_extrinsics"]
1176
- intrinsics = demo[frame_state.frame_index].misc[f"{camera_name}_camera_intrinsics"]
1177
  camera_values[camera_name] = {
1178
- "grasp_visibility": _mask_visibility_ratio(
1179
- grasp_points, mask, templates.mask_handle_ids, extrinsics, intrinsics
1180
  ),
1181
- "tray_visibility": _mask_visibility_ratio(
1182
- full_tray_points, mask, templates.mask_handle_ids, extrinsics, intrinsics
1183
  ),
1184
  }
1185
 
@@ -1213,6 +1514,39 @@ def _compute_frame_row_isolated(
1213
  return rows[0]
1214
 
1215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1216
  def _compute_frame_rows_sequential(
1217
  episode_dir: Path,
1218
  demo: Demo,
@@ -1230,38 +1564,37 @@ def _compute_frame_rows_sequential(
1230
  cache.step_to(frame_index)
1231
  frame_snapshot = cache.snapshot()
1232
  state = cache.current_state()
1233
- visibility = _frame_metrics(episode_dir, demo, state, templates)
1234
- pregrasp_progress, pregrasp_distance = _pregrasp_progress_and_distance(
1235
- np.asarray(state.left_gripper_pose, dtype=np.float64),
1236
- np.asarray(state.tray_pose, dtype=np.float64),
1237
- templates,
1238
- )
1239
- p_pre, y_pre = _pregrasp_score_and_success(task, templates)
1240
- p_ext, y_ext = _extract_score_and_success(task, templates)
1241
- rows.append(
1242
- {
1243
- "frame_index": frame_index,
1244
- "time_norm": frame_index / max(1, len(demo) - 1),
1245
- "door_angle": state.door_angle,
1246
- "right_gripper_open": state.right_gripper_open,
1247
- "left_gripper_open": state.left_gripper_open,
1248
- "pregrasp_progress": pregrasp_progress,
1249
- "pregrasp_distance": pregrasp_distance,
1250
- "p_pre": p_pre,
1251
- "p_ext": p_ext,
1252
- "y_pre_raw": float(bool(y_pre)),
1253
- "y_ext_raw": float(bool(y_ext)),
1254
- "y_pre": float(bool(y_pre)),
1255
- "y_ext": float(bool(y_ext)),
1256
- **visibility,
1257
- }
1258
- )
1259
  cache.restore(frame_snapshot)
1260
  return rows
1261
  finally:
1262
  env.shutdown()
1263
 
1264
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1265
  def _safe_auc(y_true: np.ndarray, y_score: np.ndarray) -> float:
1266
  if len(np.unique(y_true)) < 2:
1267
  return float("nan")
@@ -1334,22 +1667,23 @@ def _annotate_phase_columns(frame_df: pd.DataFrame) -> pd.DataFrame:
1334
  pregrasp_speed = -np.gradient(pregrasp_distance, DEMO_DT)
1335
  frame_df["pregrasp_speed"] = pregrasp_speed
1336
 
1337
- y_pre_seed = pregrasp_progress >= DEFAULT_PREGRASP_LABEL_PROGRESS_TAU
 
 
 
 
 
1338
  y_pre_binary = _monotone_after_first(
1339
  _persistent_rise_mask(y_pre_seed, DEFAULT_PREGRASP_PERSISTENCE)
1340
  )
1341
  y_ext_binary = _monotone_after_first(
1342
  _persistent_rise_mask(y_ext_raw, DEFAULT_READY_PERSISTENCE)
1343
  )
1344
- frame_df["y_pre_progress_seed"] = y_pre_seed.astype(float)
1345
  frame_df["y_pre"] = y_pre_binary.astype(float)
1346
  frame_df["y_ext"] = y_ext_binary.astype(float)
1347
 
1348
- frame_df["phase_score"] = np.clip(
1349
- 0.7 * pregrasp_progress + 0.3 * frame_df["p_pre"].to_numpy(dtype=float),
1350
- 0.0,
1351
- 1.0,
1352
- )
1353
  approach_active = (
1354
  (pregrasp_progress >= DEFAULT_APPROACH_PROGRESS_TAU)
1355
  & (pregrasp_speed >= DEFAULT_APPROACH_SPEED_TAU)
@@ -1373,7 +1707,7 @@ def _annotate_phase_columns(frame_df: pd.DataFrame) -> pd.DataFrame:
1373
  frame_df["y_ready"] = _monotone_after_first(ready_seed).astype(float)
1374
 
1375
  phase_seed = _persistent_rise_mask(
1376
- frame_df["phase_score"].to_numpy(dtype=float) >= DEFAULT_PHASE_SCORE_TAU,
1377
  DEFAULT_RETRIEVE_PERSISTENCE,
1378
  )
1379
  frame_df["phase_switch"] = _monotone_after_first(phase_seed).astype(float)
@@ -1698,7 +2032,8 @@ def run_study(
1698
  episode_offset: int = 0,
1699
  template_episode_index: int = 0,
1700
  episode_indices: Optional[Sequence[int]] = None,
1701
- independent_replay: bool = False,
 
1702
  ) -> Dict[str, object]:
1703
  dataset_path = Path(dataset_root)
1704
  result_path = Path(result_dir)
@@ -1740,27 +2075,58 @@ def run_study(
1740
  )
1741
 
1742
  template_episode_dir = all_episode_dirs[template_episode_index]
1743
- templates, template_frames = _derive_templates(dataset_path, template_episode_dir)
1744
- with result_path.joinpath("templates.json").open("w", encoding="utf-8") as handle:
1745
- json.dump(
1746
- {
1747
- "templates": templates.to_json(),
1748
- "template_episode": template_episode_dir.name,
1749
- "template_frames": template_frames,
1750
- "episode_offset": episode_offset,
1751
- "selected_episode_indices": selected_episode_indices,
1752
- },
1753
- handle,
1754
- indent=2,
1755
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
1756
 
1757
  episode_metrics: List[Dict[str, object]] = []
1758
  for episode_dir in episode_dirs:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1759
  artifacts = _analyze_episode(
1760
  dataset_path,
1761
  episode_dir,
1762
- templates,
1763
- template_frames,
1764
  checkpoint_stride=checkpoint_stride,
1765
  max_frames=max_frames,
1766
  independent_replay=independent_replay,
@@ -1808,7 +2174,20 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
1808
  parser.add_argument("--episode-offset", type=int, default=0)
1809
  parser.add_argument("--template-episode-index", type=int, default=0)
1810
  parser.add_argument("--episode-indices", type=_parse_episode_indices)
1811
- parser.add_argument("--independent-replay", action="store_true")
 
 
 
 
 
 
 
 
 
 
 
 
 
1812
  args = parser.parse_args(argv)
1813
 
1814
  summary = run_study(
@@ -1821,6 +2200,7 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
1821
  template_episode_index=args.template_episode_index,
1822
  episode_indices=args.episode_indices,
1823
  independent_replay=args.independent_replay,
 
1824
  )
1825
  print(json.dumps(summary, indent=2))
1826
  return 0
 
11
  import pandas as pd
12
  from natsort import natsorted
13
  from PIL import Image
14
+ from pyrep.const import ConfigurationPathAlgorithms as Algos, ObjectType
15
  from pyrep.errors import ConfigurationPathError
16
  from pyrep.objects.joint import Joint
17
  from pyrep.objects.object import Object
18
  from pyrep.objects.shape import Shape
19
+ from pyrep.objects.vision_sensor import VisionSensor
20
  from rlbench.action_modes.action_mode import BimanualJointPositionActionMode
21
  from rlbench.action_modes.gripper_action_modes import BimanualDiscrete
22
  from rlbench.backend.const import DEPTH_SCALE
 
63
  DEFAULT_PLAN_TRIALS_PER_GOAL = 4
64
  DEFAULT_PLAN_ATTEMPTS = 2
65
  DEFAULT_PLAN_MIN_SUCCESSES = 2
66
+ DEFAULT_PREGRASP_ASSIST_PATH_SCALE = 3.0
67
+ DEFAULT_DOOR_ASSIST_MIN_OPEN_DELTA = 0.01
68
  DEFAULT_READY_PERSISTENCE = 3
69
  DEFAULT_RETRIEVE_PERSISTENCE = 3
70
  DEFAULT_PREGRASP_PERSISTENCE = 3
71
+ DEFAULT_MASK_HANDLE_COUNT = 8
72
+ DEFAULT_VISIBILITY_POINT_TOLERANCE = 0.03
73
+ DEFAULT_GRASP_SECONDARY_FACE_RATIO = 0.35
74
 
75
 
76
  @dataclass
 
110
  retreat_rel_poses: List[np.ndarray]
111
  grasp_local_center: np.ndarray
112
  grasp_region_extents: np.ndarray
113
+ retriever_home_joints: np.ndarray
114
  hold_open_angle: float
115
  open_more_delta: float
116
  reference_tray_height: float
 
125
  "retreat_rel_poses": [pose.tolist() for pose in self.retreat_rel_poses],
126
  "grasp_local_center": self.grasp_local_center.tolist(),
127
  "grasp_region_extents": self.grasp_region_extents.tolist(),
128
+ "retriever_home_joints": self.retriever_home_joints.tolist(),
129
  "hold_open_angle": float(self.hold_open_angle),
130
  "open_more_delta": float(self.open_more_delta),
131
  "reference_tray_height": float(self.reference_tray_height),
 
143
  ],
144
  grasp_local_center=np.asarray(payload["grasp_local_center"], dtype=np.float64),
145
  grasp_region_extents=np.asarray(payload["grasp_region_extents"], dtype=np.float64),
146
+ retriever_home_joints=np.asarray(
147
+ payload.get("retriever_home_joints", [0.0] * 7), dtype=np.float64
148
+ ),
149
  hold_open_angle=float(payload["hold_open_angle"]),
150
  open_more_delta=float(payload["open_more_delta"]),
151
  reference_tray_height=float(payload["reference_tray_height"]),
 
573
  return (reference @ point)[:3]
574
 
575
 
576
+ def _tray_bbox_local() -> np.ndarray:
577
+ return np.asarray(Shape("tray").get_bounding_box(), dtype=np.float64)
578
+
579
+
580
+ def _dedupe_points(points: Iterable[np.ndarray], precision: int = 5) -> List[np.ndarray]:
581
+ unique: List[np.ndarray] = []
582
+ seen = set()
583
+ for point in points:
584
+ array = np.asarray(point, dtype=np.float64)
585
+ key = tuple(np.round(array, precision))
586
+ if key in seen:
587
+ continue
588
+ seen.add(key)
589
+ unique.append(array)
590
+ return unique
591
+
592
+
593
+ def _sample_box_face_points_local(
594
+ bbox: np.ndarray,
595
+ axis: int,
596
+ face_index: int,
597
+ center: np.ndarray,
598
+ extents: np.ndarray,
599
+ primary_samples: int,
600
+ secondary_samples: int,
601
+ ) -> List[np.ndarray]:
602
+ center = np.asarray(center, dtype=np.float64)
603
+ extents = np.asarray(extents, dtype=np.float64)
604
+ tangent_axes = [idx for idx in range(3) if idx != axis]
605
+ tangent_ranges: List[np.ndarray] = []
606
+ for tangent_idx, tangent_axis in enumerate(tangent_axes):
607
+ lo = max(bbox[tangent_axis * 2], center[tangent_axis] - extents[tangent_axis])
608
+ hi = min(bbox[tangent_axis * 2 + 1], center[tangent_axis] + extents[tangent_axis])
609
+ if hi < lo:
610
+ lo = hi = float(np.clip(center[tangent_axis], bbox[tangent_axis * 2], bbox[tangent_axis * 2 + 1]))
611
+ tangent_ranges.append(
612
+ np.linspace(lo, hi, primary_samples if tangent_idx == 0 else secondary_samples)
613
+ )
614
+
615
+ face_value = bbox[axis * 2 + face_index]
616
+ points: List[np.ndarray] = []
617
+ for first in tangent_ranges[0]:
618
+ for second in tangent_ranges[1]:
619
+ point = center.copy()
620
+ point[axis] = face_value
621
+ point[tangent_axes[0]] = first
622
+ point[tangent_axes[1]] = second
623
+ points.append(point)
624
+ return points
625
+
626
+
627
+ def _grasp_surface_specs(
628
+ templates: MotionTemplates, bbox: np.ndarray
629
+ ) -> Tuple[np.ndarray, List[Tuple[int, int]]]:
630
+ center = np.asarray(templates.grasp_local_center, dtype=np.float64).copy()
631
+ mins = np.asarray([bbox[0], bbox[2], bbox[4]], dtype=np.float64)
632
+ maxs = np.asarray([bbox[1], bbox[3], bbox[5]], dtype=np.float64)
633
+ center = np.clip(center, mins, maxs)
634
+
635
+ approach = (
636
+ np.asarray(templates.grasp_rel_pose[:3], dtype=np.float64)
637
+ - np.asarray(templates.pregrasp_rel_pose[:3], dtype=np.float64)
638
+ )
639
+ if np.linalg.norm(approach) < 1e-6:
640
+ approach = center - 0.5 * (mins + maxs)
641
+
642
+ ranked_axes = np.argsort(-np.abs(approach))
643
+ primary_mag = float(abs(approach[ranked_axes[0]])) if len(ranked_axes) else 0.0
644
+ specs: List[Tuple[int, int]] = []
645
+ for rank, axis in enumerate(ranked_axes.tolist()):
646
+ magnitude = float(abs(approach[axis]))
647
+ if magnitude < 1e-6:
648
+ continue
649
+ if rank > 0 and magnitude < max(1e-6, primary_mag * DEFAULT_GRASP_SECONDARY_FACE_RATIO):
650
+ continue
651
+ move_positive = float(approach[axis]) >= 0.0
652
+ face_index = 0 if move_positive else 1
653
+ spec = (int(axis), int(face_index))
654
+ if spec not in specs:
655
+ specs.append(spec)
656
+ if len(specs) >= 2:
657
+ break
658
+
659
+ if specs:
660
+ return center, specs
661
+
662
+ # Fallback to the face closest to the demonstrated grasp center.
663
+ face_distances = []
664
+ for axis in range(3):
665
+ face_distances.append((abs(center[axis] - bbox[axis * 2]), axis, 0))
666
+ face_distances.append((abs(center[axis] - bbox[axis * 2 + 1]), axis, 1))
667
+ _, axis, face_index = min(face_distances, key=lambda item: item[0])
668
+ return center, [(int(axis), int(face_index))]
669
+
670
+
671
  def _first_transition(demo: Demo, side: str, open_to_closed: bool) -> int:
672
  values = [getattr(demo[i], side).gripper_open for i in range(len(demo))]
673
  for i in range(1, len(values)):
 
792
  retreat_rel_poses=retreat_rel_poses,
793
  grasp_local_center=grasp_local_center,
794
  grasp_region_extents=np.array([0.03, 0.015, 0.004], dtype=np.float64),
795
+ retriever_home_joints=np.asarray(demo[0].left.joint_positions, dtype=np.float64),
796
  hold_open_angle=float(states[right_open].door_angle),
797
  open_more_delta=max(
798
  0.12,
 
839
 
840
 
841
  def _sample_grasp_points(templates: MotionTemplates, tray_pose: np.ndarray) -> np.ndarray:
842
+ bbox = _tray_bbox_local()
843
+ center, face_specs = _grasp_surface_specs(templates, bbox)
844
+ extents = np.asarray(templates.grasp_region_extents, dtype=np.float64)
845
+ points_local: List[np.ndarray] = []
846
+ for axis, face_index in face_specs:
847
+ points_local.extend(
848
+ _sample_box_face_points_local(
849
+ bbox=bbox,
850
+ axis=axis,
851
+ face_index=face_index,
852
+ center=center,
853
+ extents=extents,
854
+ primary_samples=9,
855
+ secondary_samples=5,
856
+ )
857
+ )
858
+ points_local = _dedupe_points(points_local)
859
  return np.array([_local_to_world(tray_pose, point) for point in points_local], dtype=np.float64)
860
 
861
 
862
  def _sample_full_tray_points(tray_pose: np.ndarray) -> np.ndarray:
863
+ bbox = _tray_bbox_local()
864
+ center = np.asarray(
865
+ [
866
+ 0.5 * (bbox[0] + bbox[1]),
867
+ 0.5 * (bbox[2] + bbox[3]),
868
+ 0.5 * (bbox[4] + bbox[5]),
869
+ ],
870
+ dtype=np.float64,
871
+ )
872
+ extents = np.asarray(
873
+ [
874
+ 0.5 * (bbox[1] - bbox[0]),
875
+ 0.5 * (bbox[3] - bbox[2]),
876
+ 0.5 * (bbox[5] - bbox[4]),
877
+ ],
878
+ dtype=np.float64,
879
+ )
880
+ points_local: List[np.ndarray] = []
881
+ for axis in range(3):
882
+ for face_index in [0, 1]:
883
+ points_local.extend(
884
+ _sample_box_face_points_local(
885
+ bbox=bbox,
886
+ axis=axis,
887
+ face_index=face_index,
888
+ center=center,
889
+ extents=extents,
890
+ primary_samples=8,
891
+ secondary_samples=8,
892
+ )
893
+ )
894
+ points_local = _dedupe_points(points_local)
895
  return np.array([_local_to_world(tray_pose, point) for point in points_local], dtype=np.float64)
896
 
897
 
 
904
  max_handles: int = DEFAULT_MASK_HANDLE_COUNT,
905
  ) -> List[int]:
906
  counts: Dict[int, int] = {}
907
+ fallback_counts: Dict[int, int] = {}
908
  unique_frames = sorted({int(frame_index) for frame_index in reference_frames})
909
  for frame_index in unique_frames:
910
  cache.step_to(frame_index)
911
  grasp_points = _sample_grasp_points(templates, Shape("tray").get_pose())
912
+ tray_points = _sample_full_tray_points(Shape("tray").get_pose())
913
  for camera_name in FULL_CAMERA_SET:
914
  mask = _load_mask(episode_dir, frame_index, camera_name)
915
+ point_cloud, extrinsics, intrinsics = _camera_point_cloud(
916
+ episode_dir, demo, frame_index, camera_name
917
+ )
918
+ for points_world in [grasp_points, tray_points]:
919
+ projected, visible = _visibility_projection_details(
920
+ points_world, point_cloud, extrinsics, intrinsics
921
+ )
922
+ for px, py in visible:
923
+ handle = int(mask[py, px])
924
+ if handle != 0:
925
+ counts[handle] = counts.get(handle, 0) + 1
926
+ for px, py in projected:
927
+ handle = int(mask[py, px])
928
+ if handle != 0:
929
+ fallback_counts[handle] = fallback_counts.get(handle, 0) + 1
930
+
931
+ ranked_source = counts if counts else fallback_counts
932
+ if not ranked_source:
933
  return []
934
+ ranked = sorted(ranked_source.items(), key=lambda item: item[1], reverse=True)
935
  top_count = ranked[0][1]
936
  selected = [
937
  handle
938
  for handle, count in ranked
939
+ if count >= max(2, int(math.ceil(top_count * 0.15)))
940
  ][:max_handles]
941
  return selected if selected else [ranked[0][0]]
942
 
943
 
944
+ def _camera_point_cloud(
945
+ episode_dir: Path,
946
+ demo: Demo,
947
+ frame_index: int,
948
+ camera_name: str,
949
+ ) -> Tuple[np.ndarray, np.ndarray, np.ndarray]:
950
+ depth = _load_depth_meters(episode_dir, demo, frame_index, camera_name)
951
+ extrinsics = demo[frame_index].misc[f"{camera_name}_camera_extrinsics"]
952
+ intrinsics = demo[frame_index].misc[f"{camera_name}_camera_intrinsics"]
953
+ point_cloud = VisionSensor.pointcloud_from_depth_and_camera_params(
954
+ depth, extrinsics, intrinsics
955
+ )
956
+ return point_cloud, extrinsics, intrinsics
957
+
958
+
959
+ def _visibility_projection_details(
960
+ points_world: np.ndarray,
961
+ point_cloud_world: np.ndarray,
962
+ extrinsics: np.ndarray,
963
+ intrinsics: np.ndarray,
964
+ tolerance: float = DEFAULT_VISIBILITY_POINT_TOLERANCE,
965
+ ) -> Tuple[List[Tuple[int, int]], List[Tuple[int, int]]]:
966
+ uv, camera_xyz = _project_points(points_world, extrinsics, intrinsics)
967
+ height, width = point_cloud_world.shape[:2]
968
+ projected: List[Tuple[int, int]] = []
969
+ visible: List[Tuple[int, int]] = []
970
+ for point_world, (u, v), (_, _, camera_depth) in zip(points_world, uv, camera_xyz):
971
+ if camera_depth <= 0 or not (0 <= u < width and 0 <= v < height):
972
+ continue
973
+ px = min(max(int(round(float(u))), 0), width - 1)
974
+ py = min(max(int(round(float(v))), 0), height - 1)
975
+ projected.append((px, py))
976
+ scene_point = np.asarray(point_cloud_world[py, px], dtype=np.float64)
977
+ if not np.isfinite(scene_point).all():
978
+ continue
979
+ if float(np.linalg.norm(scene_point - point_world)) <= tolerance:
980
+ visible.append((px, py))
981
+ return projected, visible
982
+
983
+
984
+ def _point_visibility_ratio_from_point_cloud(
985
+ points_world: np.ndarray,
986
+ point_cloud_world: np.ndarray,
987
+ extrinsics: np.ndarray,
988
+ intrinsics: np.ndarray,
989
+ ) -> float:
990
+ projected, visible = _visibility_projection_details(
991
+ points_world, point_cloud_world, extrinsics, intrinsics
992
+ )
993
+ return float(len(visible) / len(projected)) if projected else 0.0
994
+
995
+
996
  def _mask_visibility_ratio(
997
  points_world: np.ndarray,
998
  mask: np.ndarray,
 
1164
  return _dedupe_pose_list(candidates)
1165
 
1166
 
1167
+ def _late_pregrasp_goal_poses(
1168
+ tray_pose: np.ndarray, templates: MotionTemplates
1169
+ ) -> List[np.ndarray]:
1170
+ final_goal = _apply_relative_pose(tray_pose, templates.pregrasp_rel_pose)
1171
+ goals = [final_goal]
1172
+ for dx in (-0.02, 0.02):
1173
+ perturbed = final_goal.copy()
1174
+ perturbed[0] += dx
1175
+ goals.append(perturbed)
1176
+ return _dedupe_pose_list(goals)
1177
+
1178
+
1179
+ def _pregrasp_corridor_rel_poses(templates: MotionTemplates) -> List[np.ndarray]:
1180
+ rel_poses = [
1181
+ np.asarray(rel_pose, dtype=np.float64)
1182
+ for rel_pose in templates.approach_rel_poses
1183
+ ]
1184
+ if not rel_poses:
1185
+ return [np.asarray(templates.pregrasp_rel_pose, dtype=np.float64)]
1186
+
1187
+ pregrasp_rel_pose = np.asarray(templates.pregrasp_rel_pose, dtype=np.float64)
1188
+ stop_index = int(
1189
+ np.argmin(
1190
+ [
1191
+ float(np.linalg.norm(rel_pose[:3] - pregrasp_rel_pose[:3]))
1192
+ for rel_pose in rel_poses
1193
+ ]
1194
+ )
1195
+ )
1196
+ corridor = rel_poses[: stop_index + 1]
1197
+ if not corridor:
1198
+ corridor = [pregrasp_rel_pose]
1199
+ elif float(np.linalg.norm(corridor[-1][:3] - pregrasp_rel_pose[:3])) > 1e-6:
1200
+ corridor.append(pregrasp_rel_pose)
1201
+ return _dedupe_pose_list(corridor)
1202
+
1203
+
1204
  def _extract_sequence_poses(
1205
  tray_pose: np.ndarray, task_base_pose: np.ndarray, templates: MotionTemplates
1206
  ) -> List[np.ndarray]:
 
1240
  return float(min(1.0, 0.8 + margin / 0.12))
1241
 
1242
 
1243
+ def _arm_external_collision_names(scene, arm_name: str) -> List[str]:
1244
+ arm = scene.robot.left_arm if arm_name == "left" else scene.robot.right_arm
1245
+ gripper = scene.robot.left_gripper if arm_name == "left" else scene.robot.right_gripper
1246
+ robot_shapes = {
1247
+ shape.get_name() for shape in arm.get_objects_in_tree(object_type=ObjectType.SHAPE)
1248
+ }
1249
+ grasped = {obj.get_name() for obj in gripper.get_grasped_objects()}
1250
+ collisions: List[str] = []
1251
+ for shape in scene.pyrep.get_objects_in_tree(object_type=ObjectType.SHAPE):
1252
+ name = shape.get_name()
1253
+ if not shape.is_collidable() or name in robot_shapes or name in grasped:
1254
+ continue
1255
+ try:
1256
+ if arm.check_arm_collision(shape):
1257
+ collisions.append(name)
1258
+ except Exception:
1259
+ continue
1260
+ return sorted(set(collisions))
1261
+
1262
+
1263
+ def _allowed_door_collision_names(scene) -> set:
1264
+ allowed = set()
1265
+ for shape in scene.pyrep.get_objects_in_tree(object_type=ObjectType.SHAPE):
1266
+ name = shape.get_name()
1267
+ if name.startswith("oven_door") or name.startswith("oven_knob"):
1268
+ allowed.add(name)
1269
+ return allowed
1270
+
1271
+
1272
+ def _execute_path_with_collision_trace(task, path, arm_name: str) -> List[str]:
1273
+ collisions = set()
1274
+ path.set_to_start(disable_dynamics=True)
1275
+ task._pyrep.step()
1276
+ steps = 0
1277
+ while True:
1278
+ done = path.step()
1279
+ task._pyrep.step()
1280
+ collisions.update(_arm_external_collision_names(task._scene, arm_name))
1281
+ steps += 1
1282
+ if done or steps > 400:
1283
+ break
1284
+ return sorted(collisions)
1285
+
1286
+
1287
+ def _door_assisted_pregrasp_score(
1288
+ task,
1289
+ target_pose: np.ndarray,
1290
+ base_snapshot: Optional[SimulatorSnapshot] = None,
1291
+ before_angle: Optional[float] = None,
1292
+ allowed_collisions: Optional[set] = None,
1293
+ ) -> Tuple[float, bool]:
1294
+ snapshot = base_snapshot if base_snapshot is not None else _capture_snapshot(task)
1295
+ try:
1296
+ if before_angle is None:
1297
+ before_angle = float(Joint("oven_door_joint").get_joint_position())
1298
+ path = _plan_path(
1299
+ task._scene,
1300
+ "left",
1301
+ target_pose,
1302
+ ignore_collisions=True,
1303
+ )
1304
+ length = _path_length(path)
1305
+ if path is None or not np.isfinite(length):
1306
+ return 0.0, False
1307
+
1308
+ collision_names = _execute_path_with_collision_trace(task, path, "left")
1309
+ allowed = (
1310
+ _allowed_door_collision_names(task._scene)
1311
+ if allowed_collisions is None
1312
+ else allowed_collisions
1313
+ )
1314
+ bad_collisions = [name for name in collision_names if name not in allowed]
1315
+ door_open_delta = before_angle - float(Joint("oven_door_joint").get_joint_position())
1316
+ if bad_collisions or door_open_delta <= DEFAULT_DOOR_ASSIST_MIN_OPEN_DELTA:
1317
+ return 0.0, False
1318
+
1319
+ base_score = float(
1320
+ math.exp(-float(length) / DEFAULT_PREGRASP_ASSIST_PATH_SCALE)
1321
+ )
1322
+ strict_path = _plan_path(
1323
+ task._scene,
1324
+ "left",
1325
+ target_pose,
1326
+ ignore_collisions=False,
1327
+ )
1328
+ strict_length = _path_length(strict_path)
1329
+ if strict_path is not None and np.isfinite(strict_length):
1330
+ return float(0.5 + 0.5 * base_score), False
1331
+
1332
+ return base_score, False
1333
+ finally:
1334
+ _restore_snapshot(task, snapshot)
1335
+
1336
+
1337
  def _pregrasp_score_and_success(task, templates: MotionTemplates) -> Tuple[float, bool]:
1338
  tray = Shape("tray")
1339
  if any(
 
1341
  for grasped in task._scene.robot.left_gripper.get_grasped_objects()
1342
  ):
1343
  return 1.0, True
1344
+ tray_pose = tray.get_pose()
1345
+ goal_poses = _late_pregrasp_goal_poses(tray_pose, templates)
1346
+ best_score = 0.0
1347
+ best_success = False
1348
+ base_snapshot: Optional[SimulatorSnapshot] = None
1349
+ before_angle = float(Joint("oven_door_joint").get_joint_position())
1350
+ allowed_collisions: Optional[set] = None
1351
+ for target_pose in goal_poses:
1352
+ path = _plan_path(
1353
+ task._scene,
1354
+ "left",
1355
+ target_pose,
1356
+ ignore_collisions=False,
1357
+ )
1358
+ length = _path_length(path)
1359
+ if path is not None and np.isfinite(length):
1360
+ return 1.0, True
1361
+ if base_snapshot is None:
1362
+ base_snapshot = _capture_snapshot(task)
1363
+ allowed_collisions = _allowed_door_collision_names(task._scene)
1364
+ assisted_score, assisted_success = _door_assisted_pregrasp_score(
1365
+ task,
1366
+ target_pose,
1367
+ base_snapshot=base_snapshot,
1368
+ before_angle=before_angle,
1369
+ allowed_collisions=allowed_collisions,
1370
+ )
1371
+ if assisted_score > best_score:
1372
+ best_score = assisted_score
1373
+ best_success = best_success or assisted_success
1374
+ return float(best_score), bool(best_success)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1375
 
1376
 
1377
  def _extract_score_and_success(task, templates: MotionTemplates) -> Tuple[float, bool]:
 
1472
  full_tray_points = _sample_full_tray_points(frame_state.tray_pose)
1473
  camera_values: Dict[str, Dict[str, float]] = {}
1474
  for camera_name in FULL_CAMERA_SET:
1475
+ point_cloud, extrinsics, intrinsics = _camera_point_cloud(
1476
+ episode_dir, demo, frame_state.frame_index, camera_name
1477
+ )
1478
  camera_values[camera_name] = {
1479
+ "grasp_visibility": _point_visibility_ratio_from_point_cloud(
1480
+ grasp_points, point_cloud, extrinsics, intrinsics
1481
  ),
1482
+ "tray_visibility": _point_visibility_ratio_from_point_cloud(
1483
+ full_tray_points, point_cloud, extrinsics, intrinsics
1484
  ),
1485
  }
1486
 
 
1514
  return rows[0]
1515
 
1516
 
1517
+ def _build_frame_row(
1518
+ episode_dir: Path,
1519
+ demo: Demo,
1520
+ templates: MotionTemplates,
1521
+ task,
1522
+ state: ReplayState,
1523
+ ) -> Dict[str, float]:
1524
+ visibility = _frame_metrics(episode_dir, demo, state, templates)
1525
+ pregrasp_progress, pregrasp_distance = _pregrasp_progress_and_distance(
1526
+ np.asarray(state.left_gripper_pose, dtype=np.float64),
1527
+ np.asarray(state.tray_pose, dtype=np.float64),
1528
+ templates,
1529
+ )
1530
+ p_pre, y_pre = _pregrasp_score_and_success(task, templates)
1531
+ p_ext, y_ext = _extract_score_and_success(task, templates)
1532
+ return {
1533
+ "frame_index": int(state.frame_index),
1534
+ "time_norm": float(state.frame_index / max(1, len(demo) - 1)),
1535
+ "door_angle": float(state.door_angle),
1536
+ "right_gripper_open": float(state.right_gripper_open),
1537
+ "left_gripper_open": float(state.left_gripper_open),
1538
+ "pregrasp_progress": float(pregrasp_progress),
1539
+ "pregrasp_distance": float(pregrasp_distance),
1540
+ "p_pre": float(p_pre),
1541
+ "p_ext": float(p_ext),
1542
+ "y_pre_raw": float(bool(y_pre)),
1543
+ "y_ext_raw": float(bool(y_ext)),
1544
+ "y_pre": float(bool(y_pre)),
1545
+ "y_ext": float(bool(y_ext)),
1546
+ **visibility,
1547
+ }
1548
+
1549
+
1550
  def _compute_frame_rows_sequential(
1551
  episode_dir: Path,
1552
  demo: Demo,
 
1564
  cache.step_to(frame_index)
1565
  frame_snapshot = cache.snapshot()
1566
  state = cache.current_state()
1567
+ rows.append(_build_frame_row(episode_dir, demo, templates, task, state))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1568
  cache.restore(frame_snapshot)
1569
  return rows
1570
  finally:
1571
  env.shutdown()
1572
 
1573
 
1574
+ def _compute_frame_rows_independent(
1575
+ episode_dir: Path,
1576
+ demo: Demo,
1577
+ templates: MotionTemplates,
1578
+ checkpoint_stride: int,
1579
+ frame_indices: Sequence[int],
1580
+ ) -> List[Dict[str, float]]:
1581
+ env = _launch_replay_env()
1582
+ try:
1583
+ task = env.get_task(BimanualTakeTrayOutOfOven)
1584
+ cache = ReplayCache(task, demo, checkpoint_stride=checkpoint_stride)
1585
+ cache.reset()
1586
+ initial_snapshot = cache.snapshot()
1587
+ rows: List[Dict[str, float]] = []
1588
+ for frame_index in sorted({int(index) for index in frame_indices}):
1589
+ cache.restore_to_index(initial_snapshot, 0)
1590
+ cache.step_to(frame_index)
1591
+ state = cache.current_state()
1592
+ rows.append(_build_frame_row(episode_dir, demo, templates, task, state))
1593
+ return rows
1594
+ finally:
1595
+ env.shutdown()
1596
+
1597
+
1598
  def _safe_auc(y_true: np.ndarray, y_score: np.ndarray) -> float:
1599
  if len(np.unique(y_true)) < 2:
1600
  return float("nan")
 
1667
  pregrasp_speed = -np.gradient(pregrasp_distance, DEMO_DT)
1668
  frame_df["pregrasp_speed"] = pregrasp_speed
1669
 
1670
+ pregrasp_progress_seed = pregrasp_progress >= DEFAULT_PREGRASP_LABEL_PROGRESS_TAU
1671
+ y_pre_seed = (
1672
+ frame_df["y_pre_raw"].to_numpy(dtype=bool)
1673
+ if "y_pre_raw" in frame_df
1674
+ else pregrasp_progress_seed
1675
+ )
1676
  y_pre_binary = _monotone_after_first(
1677
  _persistent_rise_mask(y_pre_seed, DEFAULT_PREGRASP_PERSISTENCE)
1678
  )
1679
  y_ext_binary = _monotone_after_first(
1680
  _persistent_rise_mask(y_ext_raw, DEFAULT_READY_PERSISTENCE)
1681
  )
1682
+ frame_df["y_pre_progress_seed"] = pregrasp_progress_seed.astype(float)
1683
  frame_df["y_pre"] = y_pre_binary.astype(float)
1684
  frame_df["y_ext"] = y_ext_binary.astype(float)
1685
 
1686
+ frame_df["phase_score"] = np.clip(frame_df["p_pre"].to_numpy(dtype=float), 0.0, 1.0)
 
 
 
 
1687
  approach_active = (
1688
  (pregrasp_progress >= DEFAULT_APPROACH_PROGRESS_TAU)
1689
  & (pregrasp_speed >= DEFAULT_APPROACH_SPEED_TAU)
 
1707
  frame_df["y_ready"] = _monotone_after_first(ready_seed).astype(float)
1708
 
1709
  phase_seed = _persistent_rise_mask(
1710
+ frame_df["p_pre"].to_numpy(dtype=float) >= DEFAULT_PHASE_SCORE_TAU,
1711
  DEFAULT_RETRIEVE_PERSISTENCE,
1712
  )
1713
  frame_df["phase_switch"] = _monotone_after_first(phase_seed).astype(float)
 
2032
  episode_offset: int = 0,
2033
  template_episode_index: int = 0,
2034
  episode_indices: Optional[Sequence[int]] = None,
2035
+ independent_replay: bool = True,
2036
+ per_episode_templates: bool = False,
2037
  ) -> Dict[str, object]:
2038
  dataset_path = Path(dataset_root)
2039
  result_path = Path(result_dir)
 
2075
  )
2076
 
2077
  template_episode_dir = all_episode_dirs[template_episode_index]
2078
+ if not per_episode_templates:
2079
+ templates, template_frames = _derive_templates(dataset_path, template_episode_dir)
2080
+ with result_path.joinpath("templates.json").open("w", encoding="utf-8") as handle:
2081
+ json.dump(
2082
+ {
2083
+ "template_mode": "shared",
2084
+ "templates": templates.to_json(),
2085
+ "template_episode": template_episode_dir.name,
2086
+ "template_frames": template_frames,
2087
+ "episode_offset": episode_offset,
2088
+ "selected_episode_indices": selected_episode_indices,
2089
+ },
2090
+ handle,
2091
+ indent=2,
2092
+ )
2093
+ else:
2094
+ with result_path.joinpath("templates.json").open("w", encoding="utf-8") as handle:
2095
+ json.dump(
2096
+ {
2097
+ "template_mode": "per_episode",
2098
+ "episode_offset": episode_offset,
2099
+ "selected_episode_indices": selected_episode_indices,
2100
+ },
2101
+ handle,
2102
+ indent=2,
2103
+ )
2104
 
2105
  episode_metrics: List[Dict[str, object]] = []
2106
  for episode_dir in episode_dirs:
2107
+ if per_episode_templates:
2108
+ episode_templates, episode_template_frames = _derive_templates(dataset_path, episode_dir)
2109
+ with result_path.joinpath(f"{episode_dir.name}.templates.json").open(
2110
+ "w", encoding="utf-8"
2111
+ ) as handle:
2112
+ json.dump(
2113
+ {
2114
+ "template_mode": "per_episode",
2115
+ "templates": episode_templates.to_json(),
2116
+ "template_episode": episode_dir.name,
2117
+ "template_frames": episode_template_frames,
2118
+ },
2119
+ handle,
2120
+ indent=2,
2121
+ )
2122
+ else:
2123
+ episode_templates = templates
2124
+ episode_template_frames = template_frames
2125
  artifacts = _analyze_episode(
2126
  dataset_path,
2127
  episode_dir,
2128
+ episode_templates,
2129
+ episode_template_frames,
2130
  checkpoint_stride=checkpoint_stride,
2131
  max_frames=max_frames,
2132
  independent_replay=independent_replay,
 
2174
  parser.add_argument("--episode-offset", type=int, default=0)
2175
  parser.add_argument("--template-episode-index", type=int, default=0)
2176
  parser.add_argument("--episode-indices", type=_parse_episode_indices)
2177
+ parser.add_argument(
2178
+ "--independent-replay",
2179
+ dest="independent_replay",
2180
+ action="store_true",
2181
+ help="Replay each frame from the demo start/checkpoint to avoid simulator drift.",
2182
+ )
2183
+ parser.add_argument(
2184
+ "--sequential-replay",
2185
+ dest="independent_replay",
2186
+ action="store_false",
2187
+ help="Reuse the live replay state across frames for speed at the cost of more drift.",
2188
+ )
2189
+ parser.add_argument("--per-episode-templates", action="store_true")
2190
+ parser.set_defaults(independent_replay=True)
2191
  args = parser.parse_args(argv)
2192
 
2193
  summary = run_study(
 
2200
  template_episode_index=args.template_episode_index,
2201
  episode_indices=args.episode_indices,
2202
  independent_replay=args.independent_replay,
2203
+ per_episode_templates=args.per_episode_templates,
2204
  )
2205
  print(json.dumps(summary, indent=2))
2206
  return 0
code/scripts/launch_parallel_oven_label_study.py CHANGED
@@ -105,6 +105,7 @@ def _launch_worker(
105
  template_episode_index: int,
106
  max_frames: Optional[int],
107
  independent_replay: bool,
 
108
  thread_count: int,
109
  ) -> Tuple[subprocess.Popen, subprocess.Popen]:
110
  worker_dir.mkdir(parents=True, exist_ok=True)
@@ -130,8 +131,10 @@ def _launch_worker(
130
  ]
131
  if max_frames is not None:
132
  command.extend(["--max-frames", str(max_frames)])
133
- if independent_replay:
134
- command.append("--independent-replay")
 
 
135
 
136
  env = os.environ.copy()
137
  env["DISPLAY"] = f":{display_num}"
@@ -209,7 +212,20 @@ def main(argv: Optional[List[str]] = None) -> int:
209
  parser.add_argument("--episode-indices")
210
  parser.add_argument("--thread-count", type=int, default=1)
211
  parser.add_argument("--stagger-seconds", type=float, default=0.5)
212
- parser.add_argument("--independent-replay", action="store_true")
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  args = parser.parse_args(argv)
214
 
215
  dataset_root = Path(args.dataset_root)
@@ -250,6 +266,7 @@ def main(argv: Optional[List[str]] = None) -> int:
250
  template_episode_index=args.template_episode_index,
251
  max_frames=args.max_frames,
252
  independent_replay=args.independent_replay,
 
253
  thread_count=args.thread_count,
254
  )
255
  workers.append((xvfb, process))
 
105
  template_episode_index: int,
106
  max_frames: Optional[int],
107
  independent_replay: bool,
108
+ per_episode_templates: bool,
109
  thread_count: int,
110
  ) -> Tuple[subprocess.Popen, subprocess.Popen]:
111
  worker_dir.mkdir(parents=True, exist_ok=True)
 
131
  ]
132
  if max_frames is not None:
133
  command.extend(["--max-frames", str(max_frames)])
134
+ if not independent_replay:
135
+ command.append("--sequential-replay")
136
+ if per_episode_templates:
137
+ command.append("--per-episode-templates")
138
 
139
  env = os.environ.copy()
140
  env["DISPLAY"] = f":{display_num}"
 
212
  parser.add_argument("--episode-indices")
213
  parser.add_argument("--thread-count", type=int, default=1)
214
  parser.add_argument("--stagger-seconds", type=float, default=0.5)
215
+ parser.add_argument(
216
+ "--independent-replay",
217
+ dest="independent_replay",
218
+ action="store_true",
219
+ help="Replay each frame independently to avoid simulator drift.",
220
+ )
221
+ parser.add_argument(
222
+ "--sequential-replay",
223
+ dest="independent_replay",
224
+ action="store_false",
225
+ help="Reuse replay state across frames for speed.",
226
+ )
227
+ parser.add_argument("--per-episode-templates", action="store_true")
228
+ parser.set_defaults(independent_replay=True)
229
  args = parser.parse_args(argv)
230
 
231
  dataset_root = Path(args.dataset_root)
 
266
  template_episode_index=args.template_episode_index,
267
  max_frames=args.max_frames,
268
  independent_replay=args.independent_replay,
269
+ per_episode_templates=args.per_episode_templates,
270
  thread_count=args.thread_count,
271
  )
272
  workers.append((xvfb, process))
code/scripts/recompute_oven_episode_parallel.py ADDED
@@ -0,0 +1,267 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import argparse
3
+ import json
4
+ import math
5
+ import os
6
+ import pickle
7
+ import signal
8
+ import subprocess
9
+ import sys
10
+ import time
11
+ from typing import Dict, List, Optional, Sequence, Tuple
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+
17
+ PROJECT_ROOT = Path(__file__).resolve().parents[1]
18
+ if str(PROJECT_ROOT) not in sys.path:
19
+ sys.path.insert(0, str(PROJECT_ROOT))
20
+
21
+ from rr_label_study.oven_study import (
22
+ _aggregate_summary,
23
+ _annotate_phase_columns,
24
+ _derive_templates,
25
+ _episode_metrics_from_frames,
26
+ _interventional_validity,
27
+ _keyframe_subset,
28
+ _keypoint_discovery,
29
+ _load_demo,
30
+ _load_descriptions,
31
+ )
32
+
33
+
34
+ def _launch_xvfb(display_num: int, log_path: Path) -> subprocess.Popen:
35
+ log_handle = log_path.open("w", encoding="utf-8")
36
+ return subprocess.Popen(
37
+ [
38
+ "Xvfb",
39
+ f":{display_num}",
40
+ "-screen",
41
+ "0",
42
+ "1280x1024x24",
43
+ "+extension",
44
+ "GLX",
45
+ "+render",
46
+ "-noreset",
47
+ ],
48
+ stdout=log_handle,
49
+ stderr=subprocess.STDOUT,
50
+ start_new_session=True,
51
+ )
52
+
53
+
54
+ def _stop_process(process: Optional[subprocess.Popen]) -> None:
55
+ if process is None or process.poll() is not None:
56
+ return
57
+ try:
58
+ os.killpg(process.pid, signal.SIGTERM)
59
+ except ProcessLookupError:
60
+ return
61
+ try:
62
+ process.wait(timeout=10)
63
+ except subprocess.TimeoutExpired:
64
+ try:
65
+ os.killpg(process.pid, signal.SIGKILL)
66
+ except ProcessLookupError:
67
+ pass
68
+
69
+
70
+ def _spawn_frame_batch_job(
71
+ display_num: int,
72
+ episode_dir: Path,
73
+ templates_pkl: Path,
74
+ frame_indices: Sequence[int],
75
+ checkpoint_stride: int,
76
+ output_dir: Path,
77
+ ) -> subprocess.Popen:
78
+ runtime_dir = Path(f"/tmp/rr_label_study_parallel_display_{display_num}")
79
+ runtime_dir.mkdir(parents=True, exist_ok=True)
80
+ env = os.environ.copy()
81
+ env["DISPLAY"] = f":{display_num}"
82
+ env["COPPELIASIM_ROOT"] = "/workspace/coppelia_sim"
83
+ env["LD_LIBRARY_PATH"] = f"/workspace/coppelia_sim:{env.get('LD_LIBRARY_PATH', '')}"
84
+ env["QT_QPA_PLATFORM_PLUGIN_PATH"] = "/workspace/coppelia_sim"
85
+ env["XDG_RUNTIME_DIR"] = str(runtime_dir)
86
+ env["PYTHONUNBUFFERED"] = "1"
87
+ return subprocess.Popen(
88
+ [
89
+ sys.executable,
90
+ str(PROJECT_ROOT.joinpath("scripts", "run_oven_frame_batch.py")),
91
+ "--episode-dir",
92
+ str(episode_dir),
93
+ "--templates-pkl",
94
+ str(templates_pkl),
95
+ "--frame-indices",
96
+ *[str(frame_index) for frame_index in frame_indices],
97
+ "--checkpoint-stride",
98
+ str(checkpoint_stride),
99
+ "--output-dir",
100
+ str(output_dir),
101
+ "--independent-replay",
102
+ ],
103
+ stdout=subprocess.DEVNULL,
104
+ stderr=subprocess.DEVNULL,
105
+ cwd=str(PROJECT_ROOT),
106
+ env=env,
107
+ start_new_session=True,
108
+ )
109
+
110
+
111
+ def _chunk_frame_indices(frame_indices: Sequence[int], num_workers: int) -> List[List[int]]:
112
+ if not frame_indices:
113
+ return []
114
+ worker_count = min(max(1, num_workers), len(frame_indices))
115
+ chunk_size = math.ceil(len(frame_indices) / worker_count)
116
+ chunks: List[List[int]] = []
117
+ for worker_index in range(worker_count):
118
+ start = worker_index * chunk_size
119
+ chunk = list(frame_indices[start : start + chunk_size])
120
+ if chunk:
121
+ chunks.append(chunk)
122
+ return chunks
123
+
124
+
125
+ def _collect_rows(frame_json_dir: Path, num_frames: int) -> pd.DataFrame:
126
+ rows: List[Dict[str, float]] = []
127
+ for frame_index in range(num_frames):
128
+ row_path = frame_json_dir.joinpath(f"frame_{frame_index:04d}.json")
129
+ if not row_path.exists():
130
+ raise RuntimeError(f"missing recomputed frame output: {row_path}")
131
+ with row_path.open("r", encoding="utf-8") as handle:
132
+ rows.append(json.load(handle))
133
+ frame_df = pd.DataFrame(rows).sort_values("frame_index").reset_index(drop=True)
134
+ return frame_df
135
+
136
+
137
+ def main() -> int:
138
+ parser = argparse.ArgumentParser()
139
+ parser.add_argument("--dataset-root", required=True)
140
+ parser.add_argument("--episode-dir", required=True)
141
+ parser.add_argument("--output-dir", required=True)
142
+ parser.add_argument("--checkpoint-stride", type=int, default=16)
143
+ parser.add_argument("--num-workers", type=int, default=8)
144
+ parser.add_argument("--base-display", type=int, default=380)
145
+ parser.add_argument("--template-episode-dir")
146
+ parser.add_argument("--stagger-seconds", type=float, default=0.15)
147
+ parser.add_argument("--keep-frame-json", action="store_true")
148
+ args = parser.parse_args()
149
+
150
+ dataset_root = Path(args.dataset_root)
151
+ episode_dir = Path(args.episode_dir)
152
+ output_dir = Path(args.output_dir)
153
+ output_dir.mkdir(parents=True, exist_ok=True)
154
+
155
+ demo = _load_demo(episode_dir)
156
+ descriptions = _load_descriptions(episode_dir)
157
+ num_frames = len(demo)
158
+ template_episode_dir = (
159
+ Path(args.template_episode_dir) if args.template_episode_dir else episode_dir
160
+ )
161
+ templates, template_frames = _derive_templates(dataset_root, template_episode_dir)
162
+
163
+ templates_pkl = output_dir.joinpath("templates.pkl")
164
+ with templates_pkl.open("wb") as handle:
165
+ pickle.dump(templates, handle)
166
+ with output_dir.joinpath("templates.json").open("w", encoding="utf-8") as handle:
167
+ json.dump(
168
+ {
169
+ "template_mode": "per_episode",
170
+ "template_episode": template_episode_dir.name,
171
+ "template_frames": template_frames,
172
+ "templates": templates.to_json(),
173
+ },
174
+ handle,
175
+ indent=2,
176
+ )
177
+
178
+ frame_json_dir = output_dir.joinpath("frame_rows")
179
+ frame_json_dir.mkdir(parents=True, exist_ok=True)
180
+ frame_indices = list(range(num_frames))
181
+ frame_chunks = _chunk_frame_indices(frame_indices, args.num_workers)
182
+ displays = [args.base_display + index for index in range(len(frame_chunks))]
183
+ xvfb_procs: List[subprocess.Popen] = []
184
+ active: Dict[int, Tuple[List[int], subprocess.Popen]] = {}
185
+
186
+ try:
187
+ for display_num in displays:
188
+ xvfb_procs.append(
189
+ _launch_xvfb(display_num, output_dir.joinpath(f"xvfb_{display_num}.log"))
190
+ )
191
+ time.sleep(1.0)
192
+
193
+ for display_num, frame_chunk in zip(displays, frame_chunks):
194
+ process = _spawn_frame_batch_job(
195
+ display_num=display_num,
196
+ episode_dir=episode_dir,
197
+ templates_pkl=templates_pkl,
198
+ frame_indices=frame_chunk,
199
+ checkpoint_stride=args.checkpoint_stride,
200
+ output_dir=frame_json_dir,
201
+ )
202
+ active[display_num] = (frame_chunk, process)
203
+ if args.stagger_seconds > 0:
204
+ time.sleep(args.stagger_seconds)
205
+
206
+ while active:
207
+ time.sleep(1.0)
208
+ finished: List[int] = []
209
+ for display_num, (frame_chunk, process) in active.items():
210
+ return_code = process.poll()
211
+ if return_code is None:
212
+ continue
213
+ missing = [
214
+ frame_index
215
+ for frame_index in frame_chunk
216
+ if not frame_json_dir.joinpath(f"frame_{frame_index:04d}.json").exists()
217
+ ]
218
+ if return_code != 0 or missing:
219
+ raise RuntimeError(
220
+ f"display :{display_num} failed for frames {frame_chunk[:3]}...; missing={missing[:8]}"
221
+ )
222
+ finished.append(display_num)
223
+ for display_num in finished:
224
+ active.pop(display_num)
225
+ finally:
226
+ for _, process in list(active.values()):
227
+ _stop_process(process)
228
+ for xvfb in xvfb_procs:
229
+ _stop_process(xvfb)
230
+
231
+ frame_df = _collect_rows(frame_json_dir, num_frames)
232
+ frame_df = _annotate_phase_columns(frame_df)
233
+ keyframes = [index for index in _keypoint_discovery(demo) if index < len(frame_df)]
234
+ key_df = _keyframe_subset(frame_df, keyframes)
235
+ interventions = _interventional_validity(
236
+ demo=demo,
237
+ templates=templates,
238
+ frame_df=frame_df,
239
+ checkpoint_stride=args.checkpoint_stride,
240
+ )
241
+ metrics = _episode_metrics_from_frames(
242
+ frame_df=frame_df,
243
+ key_df=key_df,
244
+ episode_name=episode_dir.name,
245
+ description=descriptions[0],
246
+ interventions=interventions,
247
+ )
248
+
249
+ frame_df.to_csv(output_dir.joinpath(f"{episode_dir.name}.dense.csv"), index=False)
250
+ key_df.to_csv(output_dir.joinpath(f"{episode_dir.name}.keyframes.csv"), index=False)
251
+ with output_dir.joinpath(f"{episode_dir.name}.metrics.json").open("w", encoding="utf-8") as handle:
252
+ json.dump(metrics, handle, indent=2)
253
+ summary = _aggregate_summary([metrics])
254
+ with output_dir.joinpath("summary.json").open("w", encoding="utf-8") as handle:
255
+ json.dump(summary, handle, indent=2)
256
+
257
+ if not args.keep_frame_json:
258
+ for row_path in frame_json_dir.glob("frame_*.json"):
259
+ row_path.unlink()
260
+ frame_json_dir.rmdir()
261
+
262
+ print(json.dumps(summary, indent=2))
263
+ return 0
264
+
265
+
266
+ if __name__ == "__main__":
267
+ raise SystemExit(main())
code/scripts/recompute_oven_pregrasp_parallel.py ADDED
@@ -0,0 +1,282 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import argparse
3
+ import json
4
+ import os
5
+ import pickle
6
+ import shutil
7
+ import signal
8
+ import subprocess
9
+ import sys
10
+ import time
11
+ from typing import Dict, List, Optional, Sequence, Tuple
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+
17
+ PROJECT_ROOT = Path(__file__).resolve().parents[1]
18
+ if str(PROJECT_ROOT) not in sys.path:
19
+ sys.path.insert(0, str(PROJECT_ROOT))
20
+
21
+ from rr_label_study.oven_study import (
22
+ MotionTemplates,
23
+ _aggregate_summary,
24
+ _annotate_phase_columns,
25
+ _episode_metrics_from_frames,
26
+ _keyframe_subset,
27
+ _keypoint_discovery,
28
+ _load_demo,
29
+ _load_descriptions,
30
+ )
31
+
32
+
33
+ def _launch_xvfb(display_num: int, log_path: Path) -> subprocess.Popen:
34
+ log_handle = log_path.open("w", encoding="utf-8")
35
+ return subprocess.Popen(
36
+ [
37
+ "Xvfb",
38
+ f":{display_num}",
39
+ "-screen",
40
+ "0",
41
+ "1280x1024x24",
42
+ "+extension",
43
+ "GLX",
44
+ "+render",
45
+ "-noreset",
46
+ ],
47
+ stdout=log_handle,
48
+ stderr=subprocess.STDOUT,
49
+ start_new_session=True,
50
+ )
51
+
52
+
53
+ def _wait_for_display(display_num: int, timeout_s: float = 10.0) -> None:
54
+ deadline = time.time() + timeout_s
55
+ while time.time() < deadline:
56
+ result = subprocess.run(
57
+ ["xdpyinfo", "-display", f":{display_num}"],
58
+ stdout=subprocess.DEVNULL,
59
+ stderr=subprocess.DEVNULL,
60
+ check=False,
61
+ )
62
+ if result.returncode == 0:
63
+ return
64
+ time.sleep(0.25)
65
+ raise RuntimeError(f"display :{display_num} did not become ready")
66
+
67
+
68
+ def _stop_process(process: Optional[subprocess.Popen]) -> None:
69
+ if process is None or process.poll() is not None:
70
+ return
71
+ try:
72
+ os.killpg(process.pid, signal.SIGTERM)
73
+ except ProcessLookupError:
74
+ return
75
+ try:
76
+ process.wait(timeout=10)
77
+ except subprocess.TimeoutExpired:
78
+ try:
79
+ os.killpg(process.pid, signal.SIGKILL)
80
+ except ProcessLookupError:
81
+ pass
82
+
83
+
84
+ def _spawn_pregrasp_batch_job(
85
+ display_num: int,
86
+ episode_dir: Path,
87
+ templates_pkl: Path,
88
+ frame_indices: Sequence[int],
89
+ checkpoint_stride: int,
90
+ output_dir: Path,
91
+ log_path: Path,
92
+ ) -> subprocess.Popen:
93
+ runtime_dir = Path(f"/tmp/rr_label_study_pregrasp_display_{display_num}")
94
+ runtime_dir.mkdir(parents=True, exist_ok=True)
95
+ env = os.environ.copy()
96
+ env["DISPLAY"] = f":{display_num}"
97
+ env["COPPELIASIM_ROOT"] = "/workspace/coppelia_sim"
98
+ env["LD_LIBRARY_PATH"] = f"/workspace/coppelia_sim:{env.get('LD_LIBRARY_PATH', '')}"
99
+ env["QT_QPA_PLATFORM_PLUGIN_PATH"] = "/workspace/coppelia_sim"
100
+ env["XDG_RUNTIME_DIR"] = str(runtime_dir)
101
+ env["PYTHONUNBUFFERED"] = "1"
102
+ env["OMP_NUM_THREADS"] = "1"
103
+ env["OPENBLAS_NUM_THREADS"] = "1"
104
+ env["MKL_NUM_THREADS"] = "1"
105
+ env["NUMEXPR_NUM_THREADS"] = "1"
106
+ log_handle = log_path.open("w", encoding="utf-8")
107
+ return subprocess.Popen(
108
+ [
109
+ sys.executable,
110
+ str(PROJECT_ROOT.joinpath("scripts", "run_oven_pregrasp_batch.py")),
111
+ "--episode-dir",
112
+ str(episode_dir),
113
+ "--templates-pkl",
114
+ str(templates_pkl),
115
+ "--frame-indices",
116
+ *[str(frame_index) for frame_index in frame_indices],
117
+ "--checkpoint-stride",
118
+ str(checkpoint_stride),
119
+ "--output-dir",
120
+ str(output_dir),
121
+ ],
122
+ stdout=log_handle,
123
+ stderr=subprocess.STDOUT,
124
+ cwd=str(PROJECT_ROOT),
125
+ env=env,
126
+ start_new_session=True,
127
+ )
128
+
129
+
130
+ def _chunk_frame_indices(frame_indices: Sequence[int], num_workers: int) -> List[List[int]]:
131
+ if not frame_indices:
132
+ return []
133
+ worker_count = min(max(1, num_workers), len(frame_indices))
134
+ return [
135
+ [int(index) for index in chunk.tolist()]
136
+ for chunk in np.array_split(np.asarray(frame_indices, dtype=int), worker_count)
137
+ if len(chunk)
138
+ ]
139
+
140
+
141
+ def _load_interventions(metrics_path: Path) -> Dict[str, float]:
142
+ payload = json.loads(metrics_path.read_text())
143
+ return {
144
+ key: float(value)
145
+ for key, value in payload.items()
146
+ if key.startswith("pre_ready_") or key.startswith("post_ready_")
147
+ }
148
+
149
+
150
+ def main() -> int:
151
+ parser = argparse.ArgumentParser()
152
+ parser.add_argument("--episode-dir", required=True)
153
+ parser.add_argument("--input-dense-csv", required=True)
154
+ parser.add_argument("--input-metrics-json", required=True)
155
+ parser.add_argument("--templates-json", required=True)
156
+ parser.add_argument("--output-dir", required=True)
157
+ parser.add_argument("--checkpoint-stride", type=int, default=16)
158
+ parser.add_argument("--num-workers", type=int, default=8)
159
+ parser.add_argument("--base-display", type=int, default=500)
160
+ parser.add_argument("--stagger-seconds", type=float, default=0.1)
161
+ parser.add_argument("--keep-frame-json", action="store_true")
162
+ args = parser.parse_args()
163
+
164
+ episode_dir = Path(args.episode_dir)
165
+ input_dense_csv = Path(args.input_dense_csv)
166
+ input_metrics_json = Path(args.input_metrics_json)
167
+ templates_json = Path(args.templates_json)
168
+ output_dir = Path(args.output_dir)
169
+ output_dir.mkdir(parents=True, exist_ok=True)
170
+
171
+ base_df = pd.read_csv(input_dense_csv)
172
+ demo = _load_demo(episode_dir)
173
+ descriptions = _load_descriptions(episode_dir)
174
+ num_frames = min(len(demo), len(base_df))
175
+ frame_indices = list(range(num_frames))
176
+ interventions = _load_interventions(input_metrics_json)
177
+
178
+ template_payload = json.loads(templates_json.read_text())
179
+ templates = MotionTemplates.from_json(template_payload["templates"])
180
+ with output_dir.joinpath("templates.json").open("w", encoding="utf-8") as handle:
181
+ json.dump(template_payload, handle, indent=2)
182
+ templates_pkl = output_dir.joinpath("templates.pkl")
183
+ with templates_pkl.open("wb") as handle:
184
+ pickle.dump(templates, handle)
185
+
186
+ frame_json_dir = output_dir.joinpath("pregrasp_rows")
187
+ frame_json_dir.mkdir(parents=True, exist_ok=True)
188
+ pending_frame_indices = [
189
+ frame_index
190
+ for frame_index in frame_indices
191
+ if not frame_json_dir.joinpath(f"frame_{frame_index:04d}.json").exists()
192
+ ]
193
+ frame_chunks = _chunk_frame_indices(pending_frame_indices, args.num_workers)
194
+ displays = [args.base_display + index for index in range(len(frame_chunks))]
195
+ xvfb_procs: List[subprocess.Popen] = []
196
+ active: Dict[int, Tuple[List[int], subprocess.Popen]] = {}
197
+
198
+ try:
199
+ for display_num in displays:
200
+ xvfb = _launch_xvfb(display_num, output_dir.joinpath(f"xvfb_{display_num}.log"))
201
+ xvfb_procs.append(xvfb)
202
+ for display_num in displays:
203
+ _wait_for_display(display_num)
204
+
205
+ for display_num, frame_chunk in zip(displays, frame_chunks):
206
+ process = _spawn_pregrasp_batch_job(
207
+ display_num=display_num,
208
+ episode_dir=episode_dir,
209
+ templates_pkl=templates_pkl,
210
+ frame_indices=frame_chunk,
211
+ checkpoint_stride=args.checkpoint_stride,
212
+ output_dir=frame_json_dir,
213
+ log_path=output_dir.joinpath(f"worker_{display_num}.log"),
214
+ )
215
+ active[display_num] = (frame_chunk, process)
216
+ if args.stagger_seconds > 0:
217
+ time.sleep(args.stagger_seconds)
218
+
219
+ while active:
220
+ time.sleep(1.0)
221
+ finished: List[int] = []
222
+ for display_num, (frame_chunk, process) in active.items():
223
+ return_code = process.poll()
224
+ if return_code is None:
225
+ continue
226
+ missing = [
227
+ frame_index
228
+ for frame_index in frame_chunk
229
+ if not frame_json_dir.joinpath(f"frame_{frame_index:04d}.json").exists()
230
+ ]
231
+ if return_code != 0 or missing:
232
+ raise RuntimeError(
233
+ "display "
234
+ f":{display_num} failed for frames {frame_chunk[:5]} "
235
+ f"missing={missing[:8]} log={output_dir.joinpath(f'worker_{display_num}.log')}"
236
+ )
237
+ finished.append(display_num)
238
+ for display_num in finished:
239
+ active.pop(display_num)
240
+ finally:
241
+ for _, process in list(active.values()):
242
+ _stop_process(process)
243
+ for xvfb in xvfb_procs:
244
+ _stop_process(xvfb)
245
+
246
+ corrected_df = base_df.iloc[:num_frames].copy()
247
+ for frame_index in frame_indices:
248
+ row_path = frame_json_dir.joinpath(f"frame_{frame_index:04d}.json")
249
+ if not row_path.exists():
250
+ raise RuntimeError(f"missing pregrasp row: {row_path}")
251
+ row = json.loads(row_path.read_text())
252
+ for key, value in row.items():
253
+ corrected_df.at[frame_index, key] = value
254
+
255
+ corrected_df = _annotate_phase_columns(corrected_df)
256
+ keyframes = [index for index in _keypoint_discovery(demo) if index < len(corrected_df)]
257
+ key_df = _keyframe_subset(corrected_df, keyframes)
258
+ metrics = _episode_metrics_from_frames(
259
+ frame_df=corrected_df,
260
+ key_df=key_df,
261
+ episode_name=episode_dir.name,
262
+ description=descriptions[0],
263
+ interventions=interventions,
264
+ )
265
+
266
+ corrected_df.to_csv(output_dir.joinpath(f"{episode_dir.name}.dense.csv"), index=False)
267
+ key_df.to_csv(output_dir.joinpath(f"{episode_dir.name}.keyframes.csv"), index=False)
268
+ with output_dir.joinpath(f"{episode_dir.name}.metrics.json").open("w", encoding="utf-8") as handle:
269
+ json.dump(metrics, handle, indent=2)
270
+ summary = _aggregate_summary([metrics])
271
+ with output_dir.joinpath("summary.json").open("w", encoding="utf-8") as handle:
272
+ json.dump(summary, handle, indent=2)
273
+
274
+ if not args.keep_frame_json:
275
+ shutil.rmtree(frame_json_dir, ignore_errors=True)
276
+
277
+ print(json.dumps(summary, indent=2))
278
+ return 0
279
+
280
+
281
+ if __name__ == "__main__":
282
+ raise SystemExit(main())
code/scripts/recompute_oven_visibility_pregrasp.py ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import argparse
3
+ import json
4
+ import sys
5
+ from typing import Dict, Optional
6
+
7
+ import pandas as pd
8
+
9
+
10
+ PROJECT_ROOT = Path(__file__).resolve().parents[1]
11
+ if str(PROJECT_ROOT) not in sys.path:
12
+ sys.path.insert(0, str(PROJECT_ROOT))
13
+
14
+ from rr_label_study.oven_study import (
15
+ BimanualTakeTrayOutOfOven,
16
+ ReplayCache,
17
+ _aggregate_summary,
18
+ _annotate_phase_columns,
19
+ _analyze_episode,
20
+ _derive_templates,
21
+ _episode_metrics_from_frames,
22
+ _keyframe_subset,
23
+ _keypoint_discovery,
24
+ _launch_replay_env,
25
+ _load_demo,
26
+ _load_descriptions,
27
+ _pregrasp_progress_and_distance,
28
+ _pregrasp_score_and_success,
29
+ _frame_metrics,
30
+ )
31
+
32
+
33
+ def _recompute_columns(
34
+ episode_dir: Path,
35
+ templates,
36
+ checkpoint_stride: int,
37
+ base_df: pd.DataFrame,
38
+ ) -> pd.DataFrame:
39
+ demo = _load_demo(episode_dir)
40
+ num_frames = min(len(demo), len(base_df))
41
+ frame_df = base_df.iloc[:num_frames].copy()
42
+
43
+ env = _launch_replay_env()
44
+ try:
45
+ task = env.get_task(BimanualTakeTrayOutOfOven)
46
+ cache = ReplayCache(task, demo, checkpoint_stride=checkpoint_stride)
47
+ cache.reset()
48
+
49
+ for frame_index in range(num_frames):
50
+ cache.step_to(frame_index)
51
+ state = cache.current_state()
52
+ visibility = _frame_metrics(episode_dir, demo, state, templates)
53
+ pregrasp_progress, pregrasp_distance = _pregrasp_progress_and_distance(
54
+ state.left_gripper_pose,
55
+ state.tray_pose,
56
+ templates,
57
+ )
58
+ p_pre, y_pre = _pregrasp_score_and_success(task, templates)
59
+
60
+ frame_df.at[frame_index, "frame_index"] = frame_index
61
+ frame_df.at[frame_index, "time_norm"] = frame_index / max(1, num_frames - 1)
62
+ frame_df.at[frame_index, "door_angle"] = state.door_angle
63
+ frame_df.at[frame_index, "right_gripper_open"] = state.right_gripper_open
64
+ frame_df.at[frame_index, "left_gripper_open"] = state.left_gripper_open
65
+ frame_df.at[frame_index, "pregrasp_progress"] = pregrasp_progress
66
+ frame_df.at[frame_index, "pregrasp_distance"] = pregrasp_distance
67
+ frame_df.at[frame_index, "p_pre"] = p_pre
68
+ frame_df.at[frame_index, "y_pre_raw"] = float(bool(y_pre))
69
+ frame_df.at[frame_index, "y_pre"] = float(bool(y_pre))
70
+ for key, value in visibility.items():
71
+ frame_df.at[frame_index, key] = value
72
+
73
+ if (frame_index + 1) % 25 == 0 or (frame_index + 1) == num_frames:
74
+ print(
75
+ f"[{episode_dir.name}] recomputed {frame_index + 1}/{num_frames} dense frames",
76
+ flush=True,
77
+ )
78
+ return frame_df
79
+ finally:
80
+ env.shutdown()
81
+
82
+
83
+ def main() -> int:
84
+ parser = argparse.ArgumentParser()
85
+ parser.add_argument("--dataset-root", required=True)
86
+ parser.add_argument("--episode-dir", required=True)
87
+ parser.add_argument("--input-dense-csv", required=True)
88
+ parser.add_argument("--output-dir", required=True)
89
+ parser.add_argument("--checkpoint-stride", type=int, default=16)
90
+ parser.add_argument("--template-episode-dir")
91
+ args = parser.parse_args()
92
+
93
+ dataset_root = Path(args.dataset_root)
94
+ episode_dir = Path(args.episode_dir)
95
+ output_dir = Path(args.output_dir)
96
+ output_dir.mkdir(parents=True, exist_ok=True)
97
+
98
+ base_df = pd.read_csv(args.input_dense_csv)
99
+ demo = _load_demo(episode_dir)
100
+ descriptions = _load_descriptions(episode_dir)
101
+
102
+ template_episode_dir = (
103
+ Path(args.template_episode_dir) if args.template_episode_dir else episode_dir
104
+ )
105
+ templates, template_frames = _derive_templates(dataset_root, template_episode_dir)
106
+ with output_dir.joinpath("templates.json").open("w", encoding="utf-8") as handle:
107
+ json.dump(
108
+ {
109
+ "templates": templates.to_json(),
110
+ "template_episode": template_episode_dir.name,
111
+ "template_frames": template_frames,
112
+ },
113
+ handle,
114
+ indent=2,
115
+ )
116
+
117
+ frame_df = _recompute_columns(
118
+ episode_dir=episode_dir,
119
+ templates=templates,
120
+ checkpoint_stride=args.checkpoint_stride,
121
+ base_df=base_df,
122
+ )
123
+ frame_df = _annotate_phase_columns(frame_df)
124
+
125
+ keyframes = [index for index in _keypoint_discovery(demo) if index < len(frame_df)]
126
+ key_df = _keyframe_subset(frame_df, keyframes)
127
+ metrics = _episode_metrics_from_frames(
128
+ frame_df=frame_df,
129
+ key_df=key_df,
130
+ episode_name=episode_dir.name,
131
+ description=descriptions[0],
132
+ interventions={},
133
+ )
134
+
135
+ frame_df.to_csv(output_dir.joinpath(f"{episode_dir.name}.dense.csv"), index=False)
136
+ key_df.to_csv(output_dir.joinpath(f"{episode_dir.name}.keyframes.csv"), index=False)
137
+ with output_dir.joinpath(f"{episode_dir.name}.metrics.json").open("w", encoding="utf-8") as handle:
138
+ json.dump(metrics, handle, indent=2)
139
+ summary = _aggregate_summary([metrics])
140
+ with output_dir.joinpath("summary.json").open("w", encoding="utf-8") as handle:
141
+ json.dump(summary, handle, indent=2)
142
+ print(json.dumps(summary, indent=2))
143
+ return 0
144
+
145
+
146
+ if __name__ == "__main__":
147
+ raise SystemExit(main())
code/scripts/render_oven_metric_frame.py CHANGED
@@ -24,16 +24,19 @@ from rr_label_study.oven_study import (
24
  MotionTemplates,
25
  ReplayCache,
26
  Shape,
 
 
27
  _camera_file,
28
  _extract_sequence_poses,
29
  _frame_metrics,
30
  _launch_replay_env,
31
  _load_demo,
32
  _load_mask,
33
- _pregrasp_candidates,
34
  _project_points,
35
  _sample_full_tray_points,
36
  _sample_grasp_points,
 
37
  )
38
 
39
 
@@ -132,25 +135,13 @@ def _bar(draw: ImageDraw.ImageDraw, x: int, y: int, w: int, h: int, value: float
132
 
133
  def _project_coords(
134
  points_world: np.ndarray,
135
- mask: np.ndarray,
136
- handle_ids: Sequence[int],
137
  extrinsics: np.ndarray,
138
  intrinsics: np.ndarray,
139
  ) -> Tuple[List[Tuple[int, int]], List[Tuple[int, int]]]:
140
- uv, camera_xyz = _project_points(points_world, extrinsics, intrinsics)
141
- handle_set = {int(handle) for handle in handle_ids}
142
- height, width = mask.shape
143
- projected: List[Tuple[int, int]] = []
144
- visible: List[Tuple[int, int]] = []
145
- for (u, v), (_, _, camera_depth) in zip(uv, camera_xyz):
146
- if camera_depth <= 0 or not (0 <= u < width and 0 <= v < height):
147
- continue
148
- px = min(max(int(round(float(u))), 0), width - 1)
149
- py = min(max(int(round(float(v))), 0), height - 1)
150
- projected.append((px, py))
151
- if int(mask[py, px]) in handle_set:
152
- visible.append((px, py))
153
- return projected, visible
154
 
155
 
156
  def _infer_mask_handle(mask: np.ndarray, coords: Sequence[Tuple[int, int]]) -> Optional[int]:
@@ -202,15 +193,18 @@ def _compose_visibility_panel(
202
  per_camera_vis: float,
203
  ) -> Image.Image:
204
  rgb = _load_rgb(episode_dir, camera_name, frame_index)
205
- mask = _load_mask(episode_dir, frame_index, camera_name)
206
- extrinsics = demo[frame_index].misc[f"{camera_name}_camera_extrinsics"]
207
- intrinsics = demo[frame_index].misc[f"{camera_name}_camera_intrinsics"]
208
- handle_ids = templates.mask_handle_ids
209
 
210
  tray_points = _sample_full_tray_points(tray_pose)
211
  grasp_points = _sample_grasp_points(templates, tray_pose)
212
- tray_proj, tray_visible = _project_coords(tray_points, mask, handle_ids, extrinsics, intrinsics)
213
- grasp_proj, grasp_visible = _project_coords(grasp_points, mask, handle_ids, extrinsics, intrinsics)
 
 
 
 
214
 
215
  scene_panel = _scale_image(rgb)
216
  _draw_panel_title(
@@ -243,16 +237,14 @@ def _compose_visibility_panel(
243
  if right_xy is not None:
244
  _draw_point(draw, _scaled_coords([right_xy], PANEL_SIZE / RGB_SIZE)[0], (140, 110, 255), radius=4)
245
 
246
- if not handle_ids:
247
- masked_panel = _new_panel()
248
- draw = ImageDraw.Draw(masked_panel)
249
- draw.text((10, PANEL_SIZE // 2 - 10), "no tray mask pixels", fill=(180, 180, 180), font=FONT_MD)
250
- else:
251
- masked_panel = _masked_rgb(rgb, np.isin(mask, np.asarray(handle_ids, dtype=np.int64)))
252
- masked_panel = _scale_image(masked_panel)
253
  _draw_panel_title(
254
  masked_panel,
255
- f"{camera_name} visible mask",
256
  f"visible grasp pts={len(grasp_visible)}/{len(grasp_proj) or 1}",
257
  )
258
  draw = ImageDraw.Draw(masked_panel)
@@ -313,11 +305,11 @@ def _camera_grasp_visibility(
313
  tray_pose: np.ndarray,
314
  templates: MotionTemplates,
315
  ) -> float:
316
- mask = _load_mask(episode_dir, frame_index, camera_name)
317
- extrinsics = demo[frame_index].misc[f"{camera_name}_camera_extrinsics"]
318
- intrinsics = demo[frame_index].misc[f"{camera_name}_camera_intrinsics"]
319
  grasp_points = _sample_grasp_points(templates, tray_pose)
320
- proj, vis = _project_coords(grasp_points, mask, templates.mask_handle_ids, extrinsics, intrinsics)
321
  return float(len(vis) / len(proj)) if proj else 0.0
322
 
323
 
@@ -344,10 +336,18 @@ def _compose_path_quality(
344
  font=FONT_SM,
345
  )
346
 
347
- current_pregrasp = _pregrasp_candidates(tray_pose, templates)[0]
 
 
 
348
  extract_poses = _extract_sequence_poses(tray_pose, task_base_pose, templates)
349
- plan_poses = [current_pregrasp, extract_poses[1], *extract_poses[2:5]]
350
- colors = [(255, 220, 0), (255, 140, 0), (80, 255, 120), (80, 255, 120), (80, 255, 120)]
 
 
 
 
 
351
 
352
  demo_left_trail = np.asarray(
353
  [_demo_gripper_pose(demo[i], "left")[:3] for i in range(max(0, frame_index - 12), frame_index + 1)],
@@ -415,6 +415,7 @@ def _project_world_polyline(points_world: np.ndarray, extrinsics: np.ndarray, in
415
 
416
 
417
  def _compose_all_metrics(
 
418
  episode_dir: Path,
419
  demo,
420
  frame_index: int,
@@ -426,7 +427,7 @@ def _compose_all_metrics(
426
  draw.rectangle((0, 0, canvas.size[0], 36), fill=banner_color)
427
  draw.text(
428
  (12, 7),
429
- f"Episode 0 | frame {frame_index:03d} | {'REVEAL' if int(frame_row['phase_switch']) == 0 else 'RETRIEVE'}",
430
  fill=(255, 255, 255),
431
  font=FONT_LG,
432
  )
@@ -534,6 +535,7 @@ def main() -> int:
534
 
535
  if all_out is not None:
536
  all_image = _compose_all_metrics(
 
537
  episode_dir=episode_dir,
538
  demo=demo,
539
  frame_index=int(args.frame_index),
 
24
  MotionTemplates,
25
  ReplayCache,
26
  Shape,
27
+ _apply_relative_pose,
28
+ _camera_point_cloud,
29
  _camera_file,
30
  _extract_sequence_poses,
31
  _frame_metrics,
32
  _launch_replay_env,
33
  _load_demo,
34
  _load_mask,
35
+ _pregrasp_corridor_rel_poses,
36
  _project_points,
37
  _sample_full_tray_points,
38
  _sample_grasp_points,
39
+ _visibility_projection_details,
40
  )
41
 
42
 
 
135
 
136
  def _project_coords(
137
  points_world: np.ndarray,
138
+ point_cloud_world: np.ndarray,
 
139
  extrinsics: np.ndarray,
140
  intrinsics: np.ndarray,
141
  ) -> Tuple[List[Tuple[int, int]], List[Tuple[int, int]]]:
142
+ return _visibility_projection_details(
143
+ points_world, point_cloud_world, extrinsics, intrinsics
144
+ )
 
 
 
 
 
 
 
 
 
 
 
145
 
146
 
147
  def _infer_mask_handle(mask: np.ndarray, coords: Sequence[Tuple[int, int]]) -> Optional[int]:
 
193
  per_camera_vis: float,
194
  ) -> Image.Image:
195
  rgb = _load_rgb(episode_dir, camera_name, frame_index)
196
+ point_cloud, extrinsics, intrinsics = _camera_point_cloud(
197
+ episode_dir, demo, frame_index, camera_name
198
+ )
 
199
 
200
  tray_points = _sample_full_tray_points(tray_pose)
201
  grasp_points = _sample_grasp_points(templates, tray_pose)
202
+ tray_proj, tray_visible = _project_coords(
203
+ tray_points, point_cloud, extrinsics, intrinsics
204
+ )
205
+ grasp_proj, grasp_visible = _project_coords(
206
+ grasp_points, point_cloud, extrinsics, intrinsics
207
+ )
208
 
209
  scene_panel = _scale_image(rgb)
210
  _draw_panel_title(
 
237
  if right_xy is not None:
238
  _draw_point(draw, _scaled_coords([right_xy], PANEL_SIZE / RGB_SIZE)[0], (140, 110, 255), radius=4)
239
 
240
+ visible_pixels = np.zeros((RGB_SIZE, RGB_SIZE), dtype=bool)
241
+ for x, y in tray_visible + grasp_visible:
242
+ visible_pixels[y, x] = True
243
+ masked_panel = _masked_rgb(rgb, visible_pixels)
244
+ masked_panel = _scale_image(masked_panel)
 
 
245
  _draw_panel_title(
246
  masked_panel,
247
+ f"{camera_name} depth-visible",
248
  f"visible grasp pts={len(grasp_visible)}/{len(grasp_proj) or 1}",
249
  )
250
  draw = ImageDraw.Draw(masked_panel)
 
305
  tray_pose: np.ndarray,
306
  templates: MotionTemplates,
307
  ) -> float:
308
+ point_cloud, extrinsics, intrinsics = _camera_point_cloud(
309
+ episode_dir, demo, frame_index, camera_name
310
+ )
311
  grasp_points = _sample_grasp_points(templates, tray_pose)
312
+ proj, vis = _project_coords(grasp_points, point_cloud, extrinsics, intrinsics)
313
  return float(len(vis) / len(proj)) if proj else 0.0
314
 
315
 
 
336
  font=FONT_SM,
337
  )
338
 
339
+ pregrasp_corridor = [
340
+ _apply_relative_pose(tray_pose, rel_pose)
341
+ for rel_pose in _pregrasp_corridor_rel_poses(templates)
342
+ ]
343
  extract_poses = _extract_sequence_poses(tray_pose, task_base_pose, templates)
344
+ plan_poses = [*pregrasp_corridor, extract_poses[1], *extract_poses[2:5]]
345
+ colors = ([(255, 220, 0)] * len(pregrasp_corridor)) + [
346
+ (255, 140, 0),
347
+ (80, 255, 120),
348
+ (80, 255, 120),
349
+ (80, 255, 120),
350
+ ]
351
 
352
  demo_left_trail = np.asarray(
353
  [_demo_gripper_pose(demo[i], "left")[:3] for i in range(max(0, frame_index - 12), frame_index + 1)],
 
415
 
416
 
417
  def _compose_all_metrics(
418
+ episode_name: str,
419
  episode_dir: Path,
420
  demo,
421
  frame_index: int,
 
427
  draw.rectangle((0, 0, canvas.size[0], 36), fill=banner_color)
428
  draw.text(
429
  (12, 7),
430
+ f"{episode_name} | frame {frame_index:03d} | {'REVEAL' if int(frame_row['phase_switch']) == 0 else 'RETRIEVE'}",
431
  fill=(255, 255, 255),
432
  font=FONT_LG,
433
  )
 
535
 
536
  if all_out is not None:
537
  all_image = _compose_all_metrics(
538
+ episode_name=episode_dir.name,
539
  episode_dir=episode_dir,
540
  demo=demo,
541
  frame_index=int(args.frame_index),
code/scripts/render_oven_metric_gifs.py CHANGED
@@ -8,6 +8,8 @@ import time
8
  from typing import Dict, List, Optional, Tuple
9
 
10
  from PIL import Image
 
 
11
 
12
 
13
  PROJECT_ROOT = Path(__file__).resolve().parents[1]
@@ -113,6 +115,12 @@ def _assemble_gif(frame_paths: List[Path], output_path: Path, duration_ms: int)
113
  )
114
 
115
 
 
 
 
 
 
 
116
  def main() -> int:
117
  parser = argparse.ArgumentParser()
118
  parser.add_argument(
@@ -140,6 +148,21 @@ def main() -> int:
140
  dense_csv = Path(args.dense_csv)
141
  templates_pkl = Path(args.templates_pkl)
142
  output_dir = Path(args.output_dir)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  frames_dir = output_dir.joinpath("frames")
144
  visibility_dir = frames_dir.joinpath("visibility_focus")
145
  path_dir = frames_dir.joinpath("path_quality_focus")
@@ -147,9 +170,9 @@ def main() -> int:
147
  for directory in [visibility_dir, path_dir, all_dir]:
148
  directory.mkdir(parents=True, exist_ok=True)
149
 
150
- visibility_frames = list(range(220, 261, 1))
151
- path_frames = list(range(228, 316, 2))
152
- all_frames = list(range(0, 329, 2))
153
  unique_frames = sorted(set(visibility_frames) | set(path_frames) | set(all_frames))
154
 
155
  pending = unique_frames[:]
@@ -208,9 +231,21 @@ def main() -> int:
208
  if not path.exists():
209
  raise RuntimeError(f"missing rendered frame: {path}")
210
 
211
- _assemble_gif(visibility_pngs, output_dir.joinpath("episode0_visibility_focus.gif"), duration_ms=120)
212
- _assemble_gif(path_pngs, output_dir.joinpath("episode0_path_quality_focus.gif"), duration_ms=120)
213
- _assemble_gif(all_pngs, output_dir.joinpath("episode0_all_metrics.gif"), duration_ms=100)
 
 
 
 
 
 
 
 
 
 
 
 
214
 
215
  readme = output_dir.joinpath("README.md")
216
  readme.write_text(
@@ -218,9 +253,9 @@ def main() -> int:
218
  [
219
  "# Visualizations",
220
  "",
221
- "- `episode0_visibility_focus.gif`: three-view visibility debugging montage over dense frames 220-260.",
222
- "- `episode0_path_quality_focus.gif`: path-quality / grasp-quality montage over dense frames 228-314.",
223
- "- `episode0_all_metrics.gif`: full episode overlay GIF over dense frames 0-328, sampled every 2 frames.",
224
  "- `frames/visibility_focus/`: per-frame PNGs with scene overlays, x-ray projections, and tray-mask views.",
225
  "- `frames/path_quality_focus/`: per-frame PNGs with demo wrist trails plus planned pregrasp/grasp/retreat path overlays.",
226
  "- `frames/all_metrics/`: per-frame PNGs with the episode-wide metric bars and phase banner.",
 
8
  from typing import Dict, List, Optional, Tuple
9
 
10
  from PIL import Image
11
+ import numpy as np
12
+ import pandas as pd
13
 
14
 
15
  PROJECT_ROOT = Path(__file__).resolve().parents[1]
 
115
  )
116
 
117
 
118
+ def _range_inclusive(start: int, end: int, step: int) -> List[int]:
119
+ if end < start:
120
+ return []
121
+ return list(range(start, end + 1, step))
122
+
123
+
124
  def main() -> int:
125
  parser = argparse.ArgumentParser()
126
  parser.add_argument(
 
148
  dense_csv = Path(args.dense_csv)
149
  templates_pkl = Path(args.templates_pkl)
150
  output_dir = Path(args.output_dir)
151
+ frame_df = pd.read_csv(dense_csv)
152
+ episode_name = episode_dir.name
153
+ frame_indices = (
154
+ frame_df["frame_index"].to_numpy(dtype=int)
155
+ if "frame_index" in frame_df
156
+ else np.arange(len(frame_df), dtype=int)
157
+ )
158
+ max_frame = int(frame_indices.max()) if len(frame_indices) else 0
159
+ phase_candidates = frame_df.loc[frame_df["phase_switch"].to_numpy(dtype=float) >= 0.5]
160
+ if len(phase_candidates):
161
+ phase_cross = int(phase_candidates.iloc[0]["frame_index"])
162
+ else:
163
+ ppre_candidates = frame_df.loc[frame_df["p_pre"].to_numpy(dtype=float) >= 0.45]
164
+ phase_cross = int(ppre_candidates.iloc[0]["frame_index"]) if len(ppre_candidates) else max_frame // 2
165
+
166
  frames_dir = output_dir.joinpath("frames")
167
  visibility_dir = frames_dir.joinpath("visibility_focus")
168
  path_dir = frames_dir.joinpath("path_quality_focus")
 
170
  for directory in [visibility_dir, path_dir, all_dir]:
171
  directory.mkdir(parents=True, exist_ok=True)
172
 
173
+ visibility_frames = _range_inclusive(max(0, phase_cross - 12), min(max_frame, phase_cross + 28), 1)
174
+ path_frames = _range_inclusive(max(0, phase_cross - 8), min(max_frame, phase_cross + 80), 2)
175
+ all_frames = _range_inclusive(0, max_frame, 2)
176
  unique_frames = sorted(set(visibility_frames) | set(path_frames) | set(all_frames))
177
 
178
  pending = unique_frames[:]
 
231
  if not path.exists():
232
  raise RuntimeError(f"missing rendered frame: {path}")
233
 
234
+ _assemble_gif(
235
+ visibility_pngs,
236
+ output_dir.joinpath(f"{episode_name}_visibility_focus.gif"),
237
+ duration_ms=120,
238
+ )
239
+ _assemble_gif(
240
+ path_pngs,
241
+ output_dir.joinpath(f"{episode_name}_path_quality_focus.gif"),
242
+ duration_ms=120,
243
+ )
244
+ _assemble_gif(
245
+ all_pngs,
246
+ output_dir.joinpath(f"{episode_name}_all_metrics.gif"),
247
+ duration_ms=100,
248
+ )
249
 
250
  readme = output_dir.joinpath("README.md")
251
  readme.write_text(
 
253
  [
254
  "# Visualizations",
255
  "",
256
+ f"- `{episode_name}_visibility_focus.gif`: three-view visibility montage over dense frames {visibility_frames[0]}-{visibility_frames[-1]}.",
257
+ f"- `{episode_name}_path_quality_focus.gif`: path-quality montage over dense frames {path_frames[0]}-{path_frames[-1]}.",
258
+ f"- `{episode_name}_all_metrics.gif`: full episode overlay GIF over dense frames 0-{max_frame}, sampled every 2 frames.",
259
  "- `frames/visibility_focus/`: per-frame PNGs with scene overlays, x-ray projections, and tray-mask views.",
260
  "- `frames/path_quality_focus/`: per-frame PNGs with demo wrist trails plus planned pregrasp/grasp/retreat path overlays.",
261
  "- `frames/all_metrics/`: per-frame PNGs with the episode-wide metric bars and phase banner.",
code/scripts/run_oven_frame_batch.py CHANGED
@@ -9,7 +9,11 @@ PROJECT_ROOT = Path(__file__).resolve().parents[1]
9
  if str(PROJECT_ROOT) not in sys.path:
10
  sys.path.insert(0, str(PROJECT_ROOT))
11
 
12
- from rr_label_study.oven_study import _compute_frame_rows_sequential, _load_demo
 
 
 
 
13
 
14
 
15
  def main() -> int:
@@ -19,13 +23,19 @@ def main() -> int:
19
  parser.add_argument("--frame-indices", nargs="+", type=int, required=True)
20
  parser.add_argument("--checkpoint-stride", type=int, default=16)
21
  parser.add_argument("--output-dir", required=True)
 
22
  args = parser.parse_args()
23
 
24
  episode_dir = Path(args.episode_dir)
25
  with Path(args.templates_pkl).open("rb") as handle:
26
  templates = pickle.load(handle)
27
  demo = _load_demo(episode_dir)
28
- rows = _compute_frame_rows_sequential(
 
 
 
 
 
29
  episode_dir=episode_dir,
30
  demo=demo,
31
  templates=templates,
 
9
  if str(PROJECT_ROOT) not in sys.path:
10
  sys.path.insert(0, str(PROJECT_ROOT))
11
 
12
+ from rr_label_study.oven_study import (
13
+ _compute_frame_rows_independent,
14
+ _compute_frame_rows_sequential,
15
+ _load_demo,
16
+ )
17
 
18
 
19
  def main() -> int:
 
23
  parser.add_argument("--frame-indices", nargs="+", type=int, required=True)
24
  parser.add_argument("--checkpoint-stride", type=int, default=16)
25
  parser.add_argument("--output-dir", required=True)
26
+ parser.add_argument("--independent-replay", action="store_true")
27
  args = parser.parse_args()
28
 
29
  episode_dir = Path(args.episode_dir)
30
  with Path(args.templates_pkl).open("rb") as handle:
31
  templates = pickle.load(handle)
32
  demo = _load_demo(episode_dir)
33
+ compute_rows = (
34
+ _compute_frame_rows_independent
35
+ if args.independent_replay
36
+ else _compute_frame_rows_sequential
37
+ )
38
+ rows = compute_rows(
39
  episode_dir=episode_dir,
40
  demo=demo,
41
  templates=templates,
code/scripts/run_oven_pregrasp_batch.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import argparse
3
+ import json
4
+ import pickle
5
+ import sys
6
+
7
+ import numpy as np
8
+
9
+
10
+ PROJECT_ROOT = Path(__file__).resolve().parents[1]
11
+ if str(PROJECT_ROOT) not in sys.path:
12
+ sys.path.insert(0, str(PROJECT_ROOT))
13
+
14
+ from rr_label_study.oven_study import (
15
+ BimanualTakeTrayOutOfOven,
16
+ ReplayCache,
17
+ _launch_replay_env,
18
+ _load_demo,
19
+ _pregrasp_progress_and_distance,
20
+ _pregrasp_score_and_success,
21
+ )
22
+
23
+
24
+ def main() -> int:
25
+ parser = argparse.ArgumentParser()
26
+ parser.add_argument("--episode-dir", required=True)
27
+ parser.add_argument("--templates-pkl", required=True)
28
+ parser.add_argument("--frame-indices", nargs="+", type=int, required=True)
29
+ parser.add_argument("--checkpoint-stride", type=int, default=16)
30
+ parser.add_argument("--output-dir", required=True)
31
+ args = parser.parse_args()
32
+
33
+ output_dir = Path(args.output_dir)
34
+ output_dir.mkdir(parents=True, exist_ok=True)
35
+ frame_indices = sorted(set(args.frame_indices))
36
+ pending_frame_indices = [
37
+ frame_index
38
+ for frame_index in frame_indices
39
+ if not output_dir.joinpath(f"frame_{frame_index:04d}.json").exists()
40
+ ]
41
+ if not pending_frame_indices:
42
+ return 0
43
+
44
+ episode_dir = Path(args.episode_dir)
45
+ with Path(args.templates_pkl).open("rb") as handle:
46
+ templates = pickle.load(handle)
47
+ demo = _load_demo(episode_dir)
48
+
49
+ env = _launch_replay_env()
50
+ try:
51
+ task = env.get_task(BimanualTakeTrayOutOfOven)
52
+ cache = ReplayCache(task, demo, checkpoint_stride=args.checkpoint_stride)
53
+ cache.reset()
54
+ total = len(pending_frame_indices)
55
+ for completed, frame_index in enumerate(pending_frame_indices, start=1):
56
+ cache.step_to(frame_index)
57
+ state = cache.current_state()
58
+ pregrasp_progress, pregrasp_distance = _pregrasp_progress_and_distance(
59
+ np.asarray(state.left_gripper_pose, dtype=np.float64),
60
+ np.asarray(state.tray_pose, dtype=np.float64),
61
+ templates,
62
+ )
63
+ p_pre, y_pre = _pregrasp_score_and_success(task, templates)
64
+ row = {
65
+ "frame_index": int(frame_index),
66
+ "pregrasp_progress": float(pregrasp_progress),
67
+ "pregrasp_distance": float(pregrasp_distance),
68
+ "p_pre": float(p_pre),
69
+ "y_pre_raw": float(bool(y_pre)),
70
+ "y_pre": float(bool(y_pre)),
71
+ }
72
+ row_path = output_dir.joinpath(f"frame_{frame_index:04d}.json")
73
+ tmp_path = row_path.with_suffix(".json.tmp")
74
+ with tmp_path.open("w", encoding="utf-8") as handle:
75
+ json.dump(row, handle)
76
+ tmp_path.replace(row_path)
77
+ if completed == total or completed % 8 == 0:
78
+ print(
79
+ json.dumps(
80
+ {
81
+ "done": completed,
82
+ "total": total,
83
+ "frame_index": int(frame_index),
84
+ }
85
+ ),
86
+ flush=True,
87
+ )
88
+ finally:
89
+ env.shutdown()
90
+ return 0
91
+
92
+
93
+ if __name__ == "__main__":
94
+ raise SystemExit(main())