{
  "generated_at_utc": "2026-05-15T18:40:37+00:00",
  "experiment": "pact_transporter_semantic_expansion_v02_20260515",
  "portal": {
    "public_url": "http://106.14.105.96:28080/experiments/pact-transporter-semantic-expansion-v02-20260515/index.html"
  },
  "summary": {
    "sample_count": 11,
    "raw": {
      "strict_joint_f1": 0.0303030303030303,
      "strict_joint_precision": 0.0303030303030303,
      "strict_joint_recall": 0.0303030303030303,
      "strict_joint_count_abs_error": 10.636363636363637,
      "strict_axis_mean_error_deg": 81.87187910195256,
      "strict_tree_valid": 1.0
    },
    "best_old": {
      "strict_joint_f1": 0.09725266244790863,
      "strict_joint_precision": 0.20454545454545456,
      "strict_joint_recall": 0.06932065755595168,
      "strict_joint_count_abs_error": 10.0,
      "strict_axis_mean_error_deg": 58.09149763311819,
      "strict_tree_valid": 1.0
    },
    "semantic": {
      "strict_joint_f1": 0.5656565656565656,
      "strict_joint_precision": 0.5656565656565656,
      "strict_joint_recall": 0.5656565656565656,
      "strict_joint_count_abs_error": 0.09090909090909091,
      "strict_axis_mean_error_deg": 33.63640894084056,
      "strict_tree_valid": 1.0
    },
    "delta_semantic_vs_raw": {
      "strict_joint_f1": 0.5353535353535354,
      "strict_joint_precision": 0.5353535353535354,
      "strict_joint_recall": 0.5353535353535354,
      "strict_joint_count_abs_error": -10.545454545454545,
      "strict_axis_mean_error_deg": -48.235470161112,
      "strict_tree_valid": 0.0
    },
    "delta_semantic_vs_best_old": {
      "strict_joint_f1": 0.468403903208657,
      "strict_joint_precision": 0.36111111111111105,
      "strict_joint_recall": 0.49633590810061395,
      "strict_joint_count_abs_error": -9.909090909090908,
      "strict_axis_mean_error_deg": -24.455088692277627,
      "strict_tree_valid": 0.0
    }
  },
  "figures": {
    "strict_joint_f1": "visualizations/strict_f1.png",
    "strict_joint_count_abs_error": "visualizations/count_error.png",
    "strict_joint_recall": "visualizations/recall.png",
    "strict_axis_mean_error_deg": "visualizations/axis_error.png"
  },
  "records": [
    {
      "sample": "electronics_104011",
      "object_category": "Printer",
      "movable_parts": 27,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 4,
          "strict_gt_joint_count": 27,
          "strict_joint_count_abs_error": 23,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.037037037037037035,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 89.89584348956086,
              "origin_error": 0.0,
              "cost": 0.9988427054395651
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.22094419145506575,
              "cost": 3.220944191455066
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5293218329606848,
              "cost": 2.529321832960685
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 75.63967453771933,
              "origin_error": 0.41090061655603854,
              "cost": 3.25134144475292
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 5,
          "thin_part_count": 5,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.3093801548767477,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.12337104114228382,
          "max_axis_origin_to_child_aabb_distance": 0.2524434430334526
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 4,
          "strict_gt_joint_count": 27,
          "strict_joint_count_abs_error": 23,
          "strict_match_count": 1,
          "strict_joint_precision": 0.25,
          "strict_joint_recall": 0.037037037037037035,
          "strict_joint_f1": 0.06451612903225806,
          "strict_type_match_rate": 0.037037037037037035,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.13337607072513755,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.13337607072513755,
              "cost": 0.13337607072513755
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.2113151651650433,
              "cost": 2.2113151651650433
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.08081380474596962,
              "cost": 3.0808138047459694
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.22834819547016133,
              "cost": 3.2283481954701614
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 5,
          "thin_part_count": 5,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.3093801548767477,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.09375587967799592,
          "max_axis_origin_to_child_aabb_distance": 0.15859228468006806
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 27,
          "strict_gt_joint_count": 27,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 27,
          "strict_joint_precision": 1.0,
          "strict_joint_recall": 1.0,
          "strict_joint_f1": 1.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 0.9940243849461984,
          "strict_origin_mean_error": 0.1108299439895609,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.27531899001281773,
              "cost": 0.27531899001281773
            },
            {
              "pred_index": 1,
              "gt_index": 25,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 6.709664598386839,
              "origin_error": 0.4179824385522381,
              "cost": 0.49253426742320294
            },
            {
              "pred_index": 2,
              "gt_index": 24,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 6.709664598386839,
              "origin_error": 0.3576924020792051,
              "cost": 0.43224423095016995
            },
            {
              "pred_index": 3,
              "gt_index": 23,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 6.709664598386839,
              "origin_error": 0.42495155315413896,
              "cost": 0.4995033820251038
            },
            {
              "pred_index": 4,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.0886371599072809,
              "cost": 0.0886371599072809
            },
            {
              "pred_index": 5,
              "gt_index": 26,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 6.709664598386839,
              "origin_error": 0.33313844281065363,
              "cost": 0.40769027168161853
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.030280541659996503,
              "cost": 0.030280541659996503
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.03435661813596027,
              "cost": 0.03435661813596027
            },
            {
              "pred_index": 8,
              "gt_index": 8,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.04351830897745918,
              "cost": 0.04351830897745918
            },
            {
              "pred_index": 9,
              "gt_index": 9,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.05529294008076451,
              "cost": 0.05529294008076451
            },
            {
              "pred_index": 10,
              "gt_index": 10,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.06834307008974959,
              "cost": 0.06834307008974959
            },
            {
              "pred_index": 11,
              "gt_index": 11,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.08206242280002361,
              "cost": 0.08206242280002361
            },
            {
              "pred_index": 12,
              "gt_index": 12,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.09616500009009121,
              "cost": 0.09616500009009121
            },
            {
              "pred_index": 13,
              "gt_index": 13,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.015639895223553597,
              "cost": 0.015639895223553597
            },
            {
              "pred_index": 14,
              "gt_index": 14,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.022540459824971295,
              "cost": 0.022540459824971295
            },
            {
              "pred_index": 15,
              "gt_index": 15,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.03495051266631943,
              "cost": 0.03495051266631943
            },
            {
              "pred_index": 16,
              "gt_index": 16,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.048836506244365654,
              "cost": 0.048836506244365654
            },
            {
              "pred_index": 17,
              "gt_index": 17,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.06323345909147605,
              "cost": 0.06323345909147605
            },
            {
              "pred_index": 18,
              "gt_index": 18,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.07785843791902575,
              "cost": 0.07785843791902575
            },
            {
              "pred_index": 19,
              "gt_index": 19,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.09260346841079008,
              "cost": 0.09260346841079008
            },
            {
              "pred_index": 20,
              "gt_index": 20,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.004722440257397176,
              "cost": 0.004722440257397176
            },
            {
              "pred_index": 21,
              "gt_index": 21,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.01690465759789579,
              "cost": 0.01690465759789579
            },
            {
              "pred_index": 22,
              "gt_index": 22,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.031610654137798316,
              "cost": 0.031610654137798316
            },
            {
              "pred_index": 23,
              "gt_index": 3,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.046504832668626137,
              "cost": 0.046504832668626137
            },
            {
              "pred_index": 24,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.06145051234981142,
              "cost": 0.06145051234981142
            },
            {
              "pred_index": 25,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.07641748147231585,
              "cost": 0.07641748147231585
            },
            {
              "pred_index": 26,
              "gt_index": 4,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.09139528150341869,
              "cost": 0.09139528150341869
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 28,
          "thin_part_count": 28,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.2771012850124258,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 0,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 9,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 10,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 11,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 12,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 13,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 14,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 15,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 16,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 17,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 18,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 19,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 20,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 21,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 22,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 23,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 24,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 25,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 26,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        },
        {
          "node_id": 27,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 95
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_104011/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_104011/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_104011/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_104011/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_104011/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 4,
        "strict_gt_joint_count": 27,
        "strict_joint_count_abs_error": 23,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.037037037037037035,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 0,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 89.89584348956086,
            "origin_error": 0.0,
            "cost": 0.9988427054395651
          },
          {
            "pred_index": 1,
            "gt_index": 1,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 90.0,
            "origin_error": 0.22094419145506575,
            "cost": 3.220944191455066
          },
          {
            "pred_index": 2,
            "gt_index": 2,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 0.0,
            "origin_error": 0.5293218329606848,
            "cost": 2.529321832960685
          },
          {
            "pred_index": 3,
            "gt_index": 3,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 75.63967453771933,
            "origin_error": 0.41090061655603854,
            "cost": 3.25134144475292
          }
        ]
      }
    },
    {
      "sample": "electronics_103972",
      "object_category": "Printer",
      "movable_parts": 22,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 22,
          "strict_joint_count_abs_error": 21,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.045454545454545456,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 55.190757413620446,
              "origin_error": 0.4553038180367928,
              "cost": 1.068534455965909
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 2,
          "thin_part_count": 2,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.9807507500619251,
          "max_pair_aabb_overlap_ratio": 0.9807507500619251,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.21111908555030823,
          "max_axis_origin_to_child_aabb_distance": 0.21111908555030823
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 2,
          "strict_gt_joint_count": 22,
          "strict_joint_count_abs_error": 20,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.045454545454545456,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 51.29024114415671,
              "origin_error": 0.4623910464304793,
              "cost": 3.0322826146988873
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 55.190757413620446,
              "origin_error": 0.4553038180367928,
              "cost": 1.068534455965909
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 2,
          "thin_part_count": 2,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.9807507500619251,
          "max_pair_aabb_overlap_ratio": 0.9807507500619251,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.10555954277515411,
          "max_axis_origin_to_child_aabb_distance": 0.21111908555030823
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 22,
          "strict_gt_joint_count": 22,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.5249923827188893,
              "cost": 0.9551008144504812
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4612346089697769,
              "cost": 0.8913430407013689
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4613873718013072,
              "cost": 0.8914958035328991
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4620273251702028,
              "cost": 0.8921357569017947
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.46315244957804874,
              "cost": 0.8932608813096408
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.464759221421546,
              "cost": 0.894867653153138
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.44921193712585894,
              "cost": 0.8793203688574509
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4483662641218464,
              "cost": 0.8784746958534384
            },
            {
              "pred_index": 8,
              "gt_index": 8,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.44802148290991134,
              "cost": 0.8781299146415034
            },
            {
              "pred_index": 9,
              "gt_index": 9,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4481787494906587,
              "cost": 0.8782871812222507
            },
            {
              "pred_index": 10,
              "gt_index": 10,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4488375361322015,
              "cost": 0.8789459678637934
            },
            {
              "pred_index": 11,
              "gt_index": 11,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.44999564018714666,
              "cost": 0.8801040719187386
            },
            {
              "pred_index": 12,
              "gt_index": 12,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4516492206720329,
              "cost": 0.8817576524036248
            },
            {
              "pred_index": 13,
              "gt_index": 13,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4361504890443889,
              "cost": 0.8662589207759809
            },
            {
              "pred_index": 14,
              "gt_index": 14,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4352794406354087,
              "cost": 0.8653878723670007
            },
            {
              "pred_index": 15,
              "gt_index": 15,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.43492428511878817,
              "cost": 0.8650327168503802
            },
            {
              "pred_index": 16,
              "gt_index": 16,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.43508628584719106,
              "cost": 0.8651947175787831
            },
            {
              "pred_index": 17,
              "gt_index": 17,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4357648660441985,
              "cost": 0.8658732977757905
            },
            {
              "pred_index": 18,
              "gt_index": 18,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.43695761902584207,
              "cost": 0.867066050757434
            },
            {
              "pred_index": 19,
              "gt_index": 19,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.43866035057997615,
              "cost": 0.8687687823115682
            },
            {
              "pred_index": 20,
              "gt_index": 20,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.4232175961972194,
              "cost": 0.8533260279288113
            },
            {
              "pred_index": 21,
              "gt_index": 21,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 38.709758855843276,
              "origin_error": 0.42231987412051464,
              "cost": 0.8524283058521066
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 23,
          "thin_part_count": 23,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.42837012095853255,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 9,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 10,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 11,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 12,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 13,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 14,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 15,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 16,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 17,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 18,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 19,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 20,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 21,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        },
        {
          "node_id": 22,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 100
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_103972/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_103972/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_103972/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_103972/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_103972/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 1,
        "strict_gt_joint_count": 22,
        "strict_joint_count_abs_error": 21,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.045454545454545456,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 0,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 55.190757413620446,
            "origin_error": 0.4553038180367928,
            "cost": 1.068534455965909
          }
        ]
      }
    },
    {
      "sample": "electronics_103867",
      "object_category": "Printer",
      "movable_parts": 17,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 2,
          "strict_gt_joint_count": 17,
          "strict_joint_count_abs_error": 15,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.058823529411764705,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.2898407687084724,
              "cost": 2.389912701645139
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 68.28243786656506,
              "origin_error": 0.6392510656398454,
              "cost": 1.3979448197127904
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 3,
          "thin_part_count": 3,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.6666500862352832,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.12148498507643757,
          "max_axis_origin_to_child_aabb_distance": 0.24296997015287514
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 2,
          "strict_gt_joint_count": 17,
          "strict_joint_count_abs_error": 15,
          "strict_match_count": 1,
          "strict_joint_precision": 0.5,
          "strict_joint_recall": 0.058823529411764705,
          "strict_joint_f1": 0.10526315789473684,
          "strict_type_match_rate": 0.058823529411764705,
          "strict_axis_mean_error_deg": 9.00647396430002,
          "strict_origin_mean_error": 0.6788560787880812,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 80.99352614797806,
              "origin_error": 0.448644322768791,
              "cost": 3.3485723910796583
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6788560787880812,
              "cost": 0.7789280117247481
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 3,
          "thin_part_count": 3,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.6666500862352832,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.08872853062263579,
          "max_axis_origin_to_child_aabb_distance": 0.09247478528244199
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 17,
          "strict_gt_joint_count": 17,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 17,
          "strict_joint_precision": 1.0,
          "strict_joint_recall": 1.0,
          "strict_joint_f1": 1.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 9.00647396430002,
          "strict_origin_mean_error": 0.5865986040537322,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.26695037491981555,
              "cost": 0.36702230785648243
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.7603166457242724,
              "cost": 0.8603885786609393
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6069598509493394,
              "cost": 0.7070317838860063
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.598967908143658,
              "cost": 0.6990398410803249
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5912485512096709,
              "cost": 0.6913204841463378
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5838125929003931,
              "cost": 0.68388452583706
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6216377707034577,
              "cost": 0.7217097036401245
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6127363317828559,
              "cost": 0.7128082647195229
            },
            {
              "pred_index": 8,
              "gt_index": 8,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6040762423802606,
              "cost": 0.7041481753169274
            },
            {
              "pred_index": 9,
              "gt_index": 9,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5956680291318316,
              "cost": 0.6957399620684985
            },
            {
              "pred_index": 10,
              "gt_index": 10,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5875225061658029,
              "cost": 0.6875944391024698
            },
            {
              "pred_index": 11,
              "gt_index": 11,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5796507479274836,
              "cost": 0.6797226808641506
            },
            {
              "pred_index": 12,
              "gt_index": 12,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5720640557616222,
              "cost": 0.6721359886982892
            },
            {
              "pred_index": 13,
              "gt_index": 13,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6109858085344709,
              "cost": 0.7110577414711379
            },
            {
              "pred_index": 14,
              "gt_index": 14,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.6019268664481312,
              "cost": 0.701998799384798
            },
            {
              "pred_index": 15,
              "gt_index": 15,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5931089671161714,
              "cost": 0.6931809000528384
            },
            {
              "pred_index": 16,
              "gt_index": 16,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 9.00647396430002,
              "origin_error": 0.5845430191142111,
              "cost": 0.684614952050878
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 18,
          "thin_part_count": 18,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.4104169837450713,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 9,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 10,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 11,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 12,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 13,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 14,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 15,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 16,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        },
        {
          "node_id": 17,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 105
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_103867/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_103867/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_103867/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_103867/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_103867/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 2,
        "strict_gt_joint_count": 17,
        "strict_joint_count_abs_error": 15,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.058823529411764705,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 0,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 9.00647396430002,
            "origin_error": 0.2898407687084724,
            "cost": 2.389912701645139
          },
          {
            "pred_index": 1,
            "gt_index": 1,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 68.28243786656506,
            "origin_error": 0.6392510656398454,
            "cost": 1.3979448197127904
          }
        ]
      }
    },
    {
      "sample": "electronics_103978",
      "object_category": "Printer",
      "movable_parts": 16,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 0,
          "strict_gt_joint_count": 16,
          "strict_joint_count_abs_error": 16,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": []
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 1,
          "thin_part_count": 1,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.0,
          "max_pair_aabb_overlap_ratio": 0.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 16,
          "strict_joint_count_abs_error": 15,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.6792879094212074,
              "cost": 3.679287909421207
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 1,
          "thin_part_count": 1,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.0,
          "max_pair_aabb_overlap_ratio": 0.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 16,
          "strict_gt_joint_count": 16,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 16,
          "strict_joint_precision": 1.0,
          "strict_joint_recall": 1.0,
          "strict_joint_f1": 1.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.6478323523684864,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.668796266525423,
              "cost": 0.668796266525423
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6584791783730559,
              "cost": 0.6584791783730559
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6483449780659716,
              "cost": 0.6483449780659716
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6384023753212978,
              "cost": 0.6384023753212978
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6286604608597438,
              "cost": 0.6286604608597438
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.619128708170519,
              "cost": 0.619128708170519
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6759288675409012,
              "cost": 0.6759288675409012
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6653842620678936,
              "cost": 0.6653842620678936
            },
            {
              "pred_index": 8,
              "gt_index": 8,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6550134337860144,
              "cost": 0.6550134337860144
            },
            {
              "pred_index": 9,
              "gt_index": 9,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6448247674156568,
              "cost": 0.6448247674156568
            },
            {
              "pred_index": 10,
              "gt_index": 10,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6348270338487216,
              "cost": 0.6348270338487216
            },
            {
              "pred_index": 11,
              "gt_index": 11,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6250293954188684,
              "cost": 0.6250293954188684
            },
            {
              "pred_index": 12,
              "gt_index": 12,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.615441408559894,
              "cost": 0.615441408559894
            },
            {
              "pred_index": 13,
              "gt_index": 13,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6728875121923544,
              "cost": 0.6728875121923544
            },
            {
              "pred_index": 14,
              "gt_index": 14,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6622944860837405,
              "cost": 0.6622944860837405
            },
            {
              "pred_index": 15,
              "gt_index": 15,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.6518745036657257,
              "cost": 0.6518745036657257
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 17,
          "thin_part_count": 17,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5176208574213479,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 9,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 10,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 11,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 12,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 13,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 14,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 15,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        },
        {
          "node_id": 16,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 106
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_103978/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_103978/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_103978/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_103978/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_103978/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 0,
        "strict_gt_joint_count": 16,
        "strict_joint_count_abs_error": 16,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.0,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": []
      }
    },
    {
      "sample": "small_appliances_103043",
      "object_category": "CoffeeMachine",
      "movable_parts": 12,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "lever",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 12,
          "strict_joint_count_abs_error": 11,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.08333333333333333,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 11,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.506399787811903,
              "cost": 1.5063997878119029
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 2,
          "thin_part_count": 2,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.9127458672250551,
          "max_pair_aabb_overlap_ratio": 0.9127458672250551,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 2,
          "strict_gt_joint_count": 12,
          "strict_joint_count_abs_error": 10,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.08333333333333333,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 2.298692807248489,
              "origin_error": 0.5492381889840972,
              "cost": 2.574779220175747
            },
            {
              "pred_index": 1,
              "gt_index": 11,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.506399787811903,
              "cost": 1.5063997878119029
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 2,
          "thin_part_count": 2,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.9127458672250551,
          "max_pair_aabb_overlap_ratio": 0.9127458672250551,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 12,
          "strict_gt_joint_count": 12,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.3256918287287987,
              "cost": 1.3001507975371485
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.3020824750931441,
              "cost": 1.3020824750931441
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5401333103495817,
              "cost": 1.5145922791579314
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.537901286965759,
              "cost": 1.5123602557741087
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5360798411520825,
              "cost": 1.5105388099604324
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5346731690106249,
              "cost": 1.5091321378189746
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5350997167439782,
              "cost": 1.509558685552328
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5315783182464348,
              "cost": 1.5060372870547845
            },
            {
              "pred_index": 8,
              "gt_index": 8,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5284593740297641,
              "cost": 1.5029183428381139
            },
            {
              "pred_index": 9,
              "gt_index": 9,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5257500466668095,
              "cost": 1.5002090154751593
            },
            {
              "pred_index": 10,
              "gt_index": 10,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 87.70130719275149,
              "origin_error": 0.5234566965283514,
              "cost": 1.4979156653367012
            },
            {
              "pred_index": 11,
              "gt_index": 11,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.4605518601446579,
              "cost": 1.4605518601446579
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 13,
          "thin_part_count": 13,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.30229395896202144,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 9,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 10,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 11,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 2
          }
        },
        {
          "node_id": 12,
          "name": "lever",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 8
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/small_appliances_103043/raw_proxy.glb",
        "semantic_proxy": "samples/small_appliances_103043/semantic_proxy.glb",
        "semantic_mesh": "samples/small_appliances_103043/semantic_mesh_open.glb",
        "pact_mesh": "samples/small_appliances_103043/pact_generated_parts.glb",
        "reference_mesh": "samples/small_appliances_103043/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 1,
        "strict_gt_joint_count": 12,
        "strict_joint_count_abs_error": 11,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.08333333333333333,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 11,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 90.0,
            "origin_error": 0.506399787811903,
            "cost": 1.5063997878119029
          }
        ]
      }
    },
    {
      "sample": "electronics_104020",
      "object_category": "Printer",
      "movable_parts": 9,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 0,
          "strict_gt_joint_count": 9,
          "strict_joint_count_abs_error": 9,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": []
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 1,
          "thin_part_count": 1,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.0,
          "max_pair_aabb_overlap_ratio": 0.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 9,
          "strict_joint_count_abs_error": 8,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 8,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.0026428763032152846,
              "cost": 2.002642876303215
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 1,
          "thin_part_count": 1,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.0,
          "max_pair_aabb_overlap_ratio": 0.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 9,
          "strict_gt_joint_count": 9,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 8,
          "strict_joint_precision": 0.8888888888888888,
          "strict_joint_recall": 0.8888888888888888,
          "strict_joint_f1": 0.8888888888888888,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.5419818585448429,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 8,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.01569067792318665,
              "cost": 1.0156906779231867
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.530014675037044,
              "cost": 0.530014675037044
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5438769371572303,
              "cost": 0.5438769371572303
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5577980725929736,
              "cost": 0.5577980725929736
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5717737811454305,
              "cost": 0.5717737811454305
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5858001568984506,
              "cost": 0.5858001568984506
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5017585994882204,
              "cost": 0.5017585994882204
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5155077682996513,
              "cost": 0.5155077682996513
            },
            {
              "pred_index": 8,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5293248777397426,
              "cost": 0.5293248777397426
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 10,
          "thin_part_count": 10,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5067190391285387,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        },
        {
          "node_id": 9,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 113
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_104020/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_104020/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_104020/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_104020/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_104020/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 0,
        "strict_gt_joint_count": 9,
        "strict_joint_count_abs_error": 9,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.0,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": []
      }
    },
    {
      "sample": "electronics_103988",
      "object_category": "Printer",
      "movable_parts": 8,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 0,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 8,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": []
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 1,
          "thin_part_count": 1,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.0,
          "max_pair_aabb_overlap_ratio": 0.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 7,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.8896533061583021,
              "cost": 3.8896533061583023
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 1,
          "thin_part_count": 1,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.0,
          "max_pair_aabb_overlap_ratio": 0.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 8,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 8,
          "strict_joint_precision": 1.0,
          "strict_joint_recall": 1.0,
          "strict_joint_f1": 1.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.9256107993705065,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.902975854298968,
              "cost": 0.902975854298968
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.9163502505786226,
              "cost": 0.9163502505786226
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.9297742575615106,
              "cost": 0.9297742575615106
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.9432457571134957,
              "cost": 0.9432457571134957
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.9567627431088467,
              "cost": 0.9567627431088467
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.9703233146172046,
              "cost": 0.9703233146172046
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.8860390660880934,
              "cost": 0.8860390660880934
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.8994151515973112,
              "cost": 0.8994151515973112
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 9,
          "thin_part_count": 9,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5888953755475408,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_103988/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_103988/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_103988/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_103988/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_103988/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 0,
        "strict_gt_joint_count": 8,
        "strict_joint_count_abs_error": 8,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.0,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": []
      }
    },
    {
      "sample": "electronics_103878",
      "object_category": "Printer",
      "movable_parts": 8,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 7,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.841862038213579,
              "cost": 3.841862038213579
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 3,
          "thin_part_count": 3,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5792465360380068,
          "max_pair_aabb_overlap_ratio": 0.9878948160313789,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 3,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 5,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.841862038213579,
              "cost": 3.841862038213579
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5453146411107292,
              "cost": 2.5453146411107292
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.569978571206523,
              "cost": 2.569978571206523
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 3,
          "thin_part_count": 3,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5792465360380068,
          "max_pair_aabb_overlap_ratio": 0.9878948160313789,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 8,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.3683862349975161,
              "cost": 1.3683862349975162
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.569978571206523,
              "cost": 1.5699785712065228
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.5202689069861403,
              "cost": 1.5202689069861401
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.5125267097093538,
              "cost": 1.5125267097093538
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.5051113944017096,
              "cost": 1.5051113944017096
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.4980375621811899,
              "cost": 1.4980375621811899
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.5338843777916453,
              "cost": 1.5338843777916453
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.5250584933499461,
              "cost": 1.5250584933499463
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 9,
          "thin_part_count": 9,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.39354656516350767,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 0,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_103878/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_103878/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_103878/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_103878/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_103878/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 1,
        "strict_gt_joint_count": 8,
        "strict_joint_count_abs_error": 7,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.0,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 0,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 90.0,
            "origin_error": 0.841862038213579,
            "cost": 3.841862038213579
          }
        ]
      }
    },
    {
      "sample": "electronics_104030",
      "object_category": "Printer",
      "movable_parts": 8,
      "part_names": [
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "button",
        "base_body"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 3,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 5,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.125,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.571276429759162,
              "cost": 2.571276429759162
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.47110491049600045,
              "cost": 2.4711049104960003
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 47.07974922479483,
              "origin_error": 0.21897998586199094,
              "cost": 0.7420883105819336
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 5,
          "thin_part_count": 5,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.6883118702014872,
          "max_pair_aabb_overlap_ratio": 0.9994434591058216,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.04621297807168546,
          "max_axis_origin_to_child_aabb_distance": 0.13863893421505638
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 5,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 3,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.125,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.21372816146260437,
              "cost": 3.2137281614626043
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.2132722257160449,
              "cost": 3.213272225716045
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.571276429759162,
              "cost": 2.571276429759162
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.47110491049600045,
              "cost": 2.4711049104960003
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 47.07974922479483,
              "origin_error": 0.21897998586199094,
              "cost": 0.7420883105819336
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 5,
          "thin_part_count": 5,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.6883118702014872,
          "max_pair_aabb_overlap_ratio": 0.9994434591058216,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.027727786843011276,
          "max_axis_origin_to_child_aabb_distance": 0.13863893421505638
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 8,
          "strict_gt_joint_count": 8,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 8,
          "strict_joint_precision": 1.0,
          "strict_joint_recall": 1.0,
          "strict_joint_f1": 1.0,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.25955096864944266,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.21372816146260437,
              "cost": 0.21372816146260437
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.32754240007908736,
              "cost": 0.32754240007908736
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5397972035882326,
              "cost": 0.5397972035882326
            },
            {
              "pred_index": 3,
              "gt_index": 3,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.20205498510385697,
              "cost": 0.20205498510385697
            },
            {
              "pred_index": 4,
              "gt_index": 4,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.1869051463221936,
              "cost": 0.1869051463221936
            },
            {
              "pred_index": 5,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.18486003357591818,
              "cost": 0.18486003357591818
            },
            {
              "pred_index": 6,
              "gt_index": 6,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.21433068078846151,
              "cost": 0.21433068078846151
            },
            {
              "pred_index": 7,
              "gt_index": 7,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.2071891382751866,
              "cost": 0.2071891382751866
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 9,
          "thin_part_count": 9,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.4651176368022395,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 0,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 2,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 4,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 5,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 6,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 7,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        },
        {
          "node_id": 8,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 114
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/electronics_104030/raw_proxy.glb",
        "semantic_proxy": "samples/electronics_104030/semantic_proxy.glb",
        "semantic_mesh": "samples/electronics_104030/semantic_mesh_open.glb",
        "pact_mesh": "samples/electronics_104030/pact_generated_parts.glb",
        "reference_mesh": "samples/electronics_104030/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 3,
        "strict_gt_joint_count": 8,
        "strict_joint_count_abs_error": 5,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.125,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 0,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 0.0,
            "origin_error": 0.571276429759162,
            "cost": 2.571276429759162
          },
          {
            "pred_index": 1,
            "gt_index": 1,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 0.0,
            "origin_error": 0.47110491049600045,
            "cost": 2.4711049104960003
          },
          {
            "pred_index": 2,
            "gt_index": 2,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 47.07974922479483,
            "origin_error": 0.21897998586199094,
            "cost": 0.7420883105819336
          }
        ]
      }
    },
    {
      "sample": "small_appliances_103016",
      "object_category": "CoffeeMachine",
      "movable_parts": 5,
      "part_names": [
        "lever",
        "lever",
        "lever",
        "knob",
        "knob",
        "outlier",
        "container"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 4,
          "strict_gt_joint_count": 6,
          "strict_joint_count_abs_error": 2,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.3333333333333333,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 53.278544892534356,
              "origin_error": 0.2006707735788283,
              "cost": 0.792654605718099
            },
            {
              "pred_index": 1,
              "gt_index": 5,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 20.290980610579716,
              "origin_error": 0.6040220914213321,
              "cost": 2.8294774315388844
            },
            {
              "pred_index": 2,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 31.55346650841229,
              "origin_error": 0.7025711960761039,
              "cost": 3.053165268391796
            },
            {
              "pred_index": 3,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 35.03231989587249,
              "origin_error": 0.1301157833471245,
              "cost": 0.5193637821901522
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 5,
          "thin_part_count": 5,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5335437833391725,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 4,
          "strict_gt_joint_count": 6,
          "strict_joint_count_abs_error": 2,
          "strict_match_count": 2,
          "strict_joint_precision": 0.5,
          "strict_joint_recall": 0.3333333333333333,
          "strict_joint_f1": 0.4,
          "strict_type_match_rate": 0.6666666666666666,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.4655953760620921,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 36.76538365396065,
              "origin_error": 0.6058261005500754,
              "cost": 1.0143303633718603
            },
            {
              "pred_index": 1,
              "gt_index": 2,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.34078685805562886,
              "cost": 0.34078685805562886
            },
            {
              "pred_index": 2,
              "gt_index": 5,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5904038940685553,
              "cost": 0.5904038940685553
            },
            {
              "pred_index": 3,
              "gt_index": 4,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 52.98780430904434,
              "origin_error": 0.6109715510195279,
              "cost": 1.1997249322311316
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 5,
          "thin_part_count": 5,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.5335437833391725,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.06510395283629777,
          "max_axis_origin_to_child_aabb_distance": 0.18006609470612261
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 5,
          "strict_gt_joint_count": 6,
          "strict_joint_count_abs_error": 1,
          "strict_match_count": 0,
          "strict_joint_precision": 0.0,
          "strict_joint_recall": 0.0,
          "strict_joint_f1": 0.0,
          "strict_type_match_rate": 0.8333333333333334,
          "strict_axis_mean_error_deg": 90.0,
          "strict_origin_mean_error": 0.0,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 4,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 37.19581330288987,
              "origin_error": 0.6051195620173024,
              "cost": 1.0184063764938565
            },
            {
              "pred_index": 1,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 35.030948227451375,
              "origin_error": 0.2920259236483914,
              "cost": 0.6812586817311845
            },
            {
              "pred_index": 2,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 35.03231989587249,
              "origin_error": 0.5566596650206481,
              "cost": 0.9459076638636759
            },
            {
              "pred_index": 3,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.03218660162301021,
              "cost": 1.0321866016230101
            },
            {
              "pred_index": 4,
              "gt_index": 3,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 36.76538365396065,
              "origin_error": 0.5326166965565159,
              "cost": 0.9411209593783009
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 6,
          "thin_part_count": 6,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.4890291888927817,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "lever",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 6
          }
        },
        {
          "node_id": 2,
          "name": "lever",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 6
          }
        },
        {
          "node_id": 3,
          "name": "lever",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 6
          }
        },
        {
          "node_id": 4,
          "name": "knob",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 4
          }
        },
        {
          "node_id": 5,
          "name": "knob",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 4
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/small_appliances_103016/raw_proxy.glb",
        "semantic_proxy": "samples/small_appliances_103016/semantic_proxy.glb",
        "semantic_mesh": "samples/small_appliances_103016/semantic_mesh_open.glb",
        "pact_mesh": "samples/small_appliances_103016/pact_generated_parts.glb",
        "reference_mesh": "samples/small_appliances_103016/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 4,
        "strict_gt_joint_count": 6,
        "strict_joint_count_abs_error": 2,
        "strict_match_count": 0,
        "strict_joint_precision": 0.0,
        "strict_joint_recall": 0.0,
        "strict_joint_f1": 0.0,
        "strict_type_match_rate": 0.3333333333333333,
        "strict_axis_mean_error_deg": 90.0,
        "strict_origin_mean_error": 0.0,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 3,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 53.278544892534356,
            "origin_error": 0.2006707735788283,
            "cost": 0.792654605718099
          },
          {
            "pred_index": 1,
            "gt_index": 5,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 20.290980610579716,
            "origin_error": 0.6040220914213321,
            "cost": 2.8294774315388844
          },
          {
            "pred_index": 2,
            "gt_index": 0,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 31.55346650841229,
            "origin_error": 0.7025711960761039,
            "cost": 3.053165268391796
          },
          {
            "pred_index": 3,
            "gt_index": 1,
            "accepted": false,
            "type_mismatch": 0.0,
            "axis_error_deg": 35.03231989587249,
            "origin_error": 0.1301157833471245,
            "cost": 0.5193637821901522
          }
        ]
      }
    },
    {
      "sample": "small_appliances_103466",
      "object_category": "Toaster",
      "movable_parts": 3,
      "part_names": [
        "knob",
        "slider",
        "outlier",
        "button"
      ],
      "raw": {
        "strict": {
          "strict_pred_joint_count": 3,
          "strict_gt_joint_count": 3,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 1,
          "strict_joint_precision": 0.3333333333333333,
          "strict_joint_recall": 0.3333333333333333,
          "strict_joint_f1": 0.3333333333333333,
          "strict_type_match_rate": 0.3333333333333333,
          "strict_axis_mean_error_deg": 0.5906701214781084,
          "strict_origin_mean_error": 0.3076053995819373,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 1,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.5675164704048092,
              "cost": 2.5675164704048092
            },
            {
              "pred_index": 1,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.5906701214781084,
              "origin_error": 0.3076053995819373,
              "cost": 0.314168400931694
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 1.0,
              "axis_error_deg": 0.41942331034434516,
              "origin_error": 0.17451078136507153,
              "cost": 2.1791710403688977
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 4,
          "thin_part_count": 4,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.831318346907338,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.33980848275198516,
          "max_axis_origin_to_child_aabb_distance": 0.5282615407057267
        }
      },
      "best_old": {
        "strict": {
          "strict_pred_joint_count": 1,
          "strict_gt_joint_count": 3,
          "strict_joint_count_abs_error": 2,
          "strict_match_count": 1,
          "strict_joint_precision": 1.0,
          "strict_joint_recall": 0.3333333333333333,
          "strict_joint_f1": 0.5,
          "strict_type_match_rate": 0.3333333333333333,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.45979258466836576,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.45979258466836576,
              "cost": 0.45979258466836576
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 4,
          "thin_part_count": 4,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.831318346907338,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic": {
        "strict": {
          "strict_pred_joint_count": 3,
          "strict_gt_joint_count": 3,
          "strict_joint_count_abs_error": 0,
          "strict_match_count": 1,
          "strict_joint_precision": 0.3333333333333333,
          "strict_joint_recall": 0.3333333333333333,
          "strict_joint_f1": 0.3333333333333333,
          "strict_type_match_rate": 1.0,
          "strict_axis_mean_error_deg": 0.0,
          "strict_origin_mean_error": 0.4975351528047218,
          "strict_tree_valid": 1.0,
          "strict_matches": [
            {
              "pred_index": 0,
              "gt_index": 0,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.45979258466836576,
              "cost": 1.4597925846683657
            },
            {
              "pred_index": 1,
              "gt_index": 1,
              "accepted": true,
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.4975351528047218,
              "cost": 0.4975351528047218
            },
            {
              "pred_index": 2,
              "gt_index": 2,
              "accepted": false,
              "type_mismatch": 0.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.47749856316499467,
              "cost": 1.4774985631649946
            }
          ]
        },
        "structure": {
          "root_count": 1,
          "duplicate_ids": 0,
          "dangling_parent_count": 0,
          "self_parent_count": 0,
          "cycle_node_count": 0,
          "child_mismatch_count": 0,
          "tree_valid_proxy": 1,
          "node_count": 4,
          "thin_part_count": 4,
          "invalid_aabb_count": 0,
          "mean_pair_aabb_overlap_ratio": 0.831318346907338,
          "max_pair_aabb_overlap_ratio": 1.0,
          "mean_parent_child_aabb_gap": 0.0,
          "max_parent_child_aabb_gap": 0.0,
          "mean_axis_origin_to_child_aabb_distance": 0.0,
          "max_axis_origin_to_child_aabb_distance": 0.0
        }
      },
      "semantic_actions": [
        {
          "node_id": 1,
          "name": "knob",
          "prior": {
            "joint_type": "revolute",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 30
          }
        },
        {
          "node_id": 2,
          "name": "slider",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "-y",
            "axis": [
              0.0,
              -1.0,
              0.0
            ],
            "support": 0
          }
        },
        {
          "node_id": 3,
          "name": "button",
          "prior": {
            "joint_type": "prismatic",
            "axis_bucket": "+y",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "support": 207
          }
        }
      ],
      "assets": {
        "raw_proxy": "samples/small_appliances_103466/raw_proxy.glb",
        "semantic_proxy": "samples/small_appliances_103466/semantic_proxy.glb",
        "semantic_mesh": "samples/small_appliances_103466/semantic_mesh_open.glb",
        "pact_mesh": "samples/small_appliances_103466/pact_generated_parts.glb",
        "reference_mesh": "samples/small_appliances_103466/reference_parts.glb"
      },
      "source_raw_strict": {
        "strict_pred_joint_count": 3,
        "strict_gt_joint_count": 3,
        "strict_joint_count_abs_error": 0,
        "strict_match_count": 1,
        "strict_joint_precision": 0.3333333333333333,
        "strict_joint_recall": 0.3333333333333333,
        "strict_joint_f1": 0.3333333333333333,
        "strict_type_match_rate": 0.3333333333333333,
        "strict_axis_mean_error_deg": 0.5906701214781084,
        "strict_origin_mean_error": 0.3076053995819373,
        "strict_tree_valid": 1.0,
        "strict_matches": [
          {
            "pred_index": 0,
            "gt_index": 1,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 0.0,
            "origin_error": 0.5675164704048092,
            "cost": 2.5675164704048092
          },
          {
            "pred_index": 1,
            "gt_index": 0,
            "accepted": true,
            "type_mismatch": 0.0,
            "axis_error_deg": 0.5906701214781084,
            "origin_error": 0.3076053995819373,
            "cost": 0.314168400931694
          },
          {
            "pred_index": 2,
            "gt_index": 2,
            "accepted": false,
            "type_mismatch": 1.0,
            "axis_error_deg": 0.41942331034434516,
            "origin_error": 0.17451078136507153,
            "cost": 2.1791710403688977
          }
        ]
      }
    }
  ]
}
