{
  "generated_at_utc": "2026-05-10T14:11:05+00:00",
  "experiment": "route2_pact_ot_variant_20260510",
  "method": "PAct baseline vs leave-one-out category-prior OT post-process",
  "pact_root": "/data/250010098/PAct",
  "pact_outputs": "/data/250010098/PAct/outputs/rawpm_synth_pact_infer_all5_20260419/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects",
  "portal_root": "/data/250010098/physxanything_stage1_experiments/runs/visual_portal",
  "notes": [
    "No PAct source file is modified by this route-2 experiment.",
    "The OT variant uses PartNetMobility category priors excluding the evaluated pm_id when available.",
    "This is an inference/post-process probe, not retraining."
  ],
  "baseline_mean": {
    "joint_count_accuracy": 0.4,
    "joint_count_abs_error": 1.4,
    "joint_type_accuracy": 0.6,
    "axis_mean_error_deg": 54.17836608135106,
    "origin_mean_error": 0.31161147508091525,
    "axis_finite_rate": 0.6,
    "limit_sanity_rate": 0.6,
    "urdf_parse_success": 1.0
  },
  "ot_variant_mean": {
    "joint_count_accuracy": 0.6,
    "joint_count_abs_error": 1.2,
    "joint_type_accuracy": 0.6,
    "axis_mean_error_deg": 54.209991290397284,
    "origin_mean_error": 0.33722957252549346,
    "axis_finite_rate": 0.6,
    "limit_sanity_rate": 0.6,
    "urdf_parse_success": 1.0
  },
  "records": [
    {
      "sample": "Door_8867",
      "pm_id": "8867",
      "category": "Door",
      "baseline_pred_path": "/data/250010098/PAct/outputs/rawpm_synth_pact_infer_all5_20260419/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/Door_8867@Door_8867_synthetic_processed.@ng/object.json",
      "ot_variant_path": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Door_8867/object_ot_variant.json",
      "gt_source": "raw_mobility_v2",
      "gt_joint_count": 2,
      "ot_meta": {
        "status": "ok",
        "reference_pm_id": "1363",
        "reference_category": "Safe",
        "used_global_prior": true,
        "reference_joint_count": 2,
        "applied_joint_count": 2,
        "assignments": [
          {
            "node_id": 0,
            "prior_pm_id": "1363",
            "prior_joint": "joint_1",
            "prior_type": "revolute",
            "kept_pact_axis": true,
            "ot_cost": 1.142372965812683
          },
          {
            "node_id": 2,
            "prior_pm_id": "1363",
            "prior_joint": "joint_0",
            "prior_type": "revolute",
            "kept_pact_axis": true,
            "ot_cost": 0.1395697444677353
          }
        ]
      },
      "baseline": {
        "joints": [
          {
            "node_id": 0,
            "parent": 1,
            "type": "revolute",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "origin": [
              -0.5002424716949463,
              -0.1371466964483261,
              0.23509426414966583
            ],
            "range": [
              0.0,
              -35.46030807495117
            ],
            "name": "door"
          },
          {
            "node_id": 2,
            "parent": 1,
            "type": "revolute",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "origin": [
              0.5002760291099548,
              0.0234220027923584,
              0.246679425239563
            ],
            "range": [
              0.0,
              45.467979431152344
            ],
            "name": "door"
          }
        ],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 3,
          "joints": 2
        },
        "scores": {
          "pred_joint_count": 2,
          "gt_joint_count": 2,
          "joint_count_accuracy": 1.0,
          "joint_count_abs_error": 0,
          "joint_type_accuracy": 1.0,
          "axis_mean_error_deg": 0.0,
          "origin_mean_error": 0.5228441259024348,
          "axis_finite_rate": 1.0,
          "limit_sanity_rate": 1.0,
          "urdf_parse_success": true,
          "urdf_links": 3,
          "urdf_joints": 2
        }
      },
      "ot_variant": {
        "joints": [
          {
            "node_id": 0,
            "parent": 1,
            "type": "revolute",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "origin": [
              -0.5002424716949463,
              -0.1371466964483261,
              0.23509426414966583
            ],
            "range": [
              0.0,
              -0.6188991296794302
            ],
            "name": "door"
          },
          {
            "node_id": 2,
            "parent": 1,
            "type": "revolute",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "origin": [
              0.5002760291099548,
              0.0234220027923584,
              0.246679425239563
            ],
            "range": [
              0.0,
              0.7935659453026668
            ],
            "name": "door"
          }
        ],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 3,
          "joints": 2
        },
        "scores": {
          "pred_joint_count": 2,
          "gt_joint_count": 2,
          "joint_count_accuracy": 1.0,
          "joint_count_abs_error": 0,
          "joint_type_accuracy": 1.0,
          "axis_mean_error_deg": 0.0,
          "origin_mean_error": 0.5228441259024348,
          "axis_finite_rate": 1.0,
          "limit_sanity_rate": 1.0,
          "urdf_parse_success": true,
          "urdf_links": 3,
          "urdf_joints": 2
        }
      },
      "visual_assets": {
        "baseline_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Door_8867/baseline_closed.glb",
        "baseline_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Door_8867/baseline_open.glb",
        "ot_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Door_8867/ot_closed.glb",
        "ot_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Door_8867/ot_open.glb"
      },
      "visual_export_ok": {
        "baseline_closed_ok": true,
        "baseline_open_ok": true,
        "ot_closed_ok": true,
        "ot_open_ok": true
      }
    },
    {
      "sample": "TrashCan_10357",
      "pm_id": "10357",
      "category": "TrashCan",
      "baseline_pred_path": "/data/250010098/PAct/outputs/rawpm_synth_pact_infer_all5_20260419/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/TrashCan_10357@TrashCan_10357_synthetic_processed.@ng/object.json",
      "ot_variant_path": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/TrashCan_10357/object_ot_variant.json",
      "gt_source": "raw_mobility_v2",
      "gt_joint_count": 1,
      "ot_meta": {
        "status": "ok",
        "reference_pm_id": "1363",
        "reference_category": "Safe",
        "used_global_prior": true,
        "reference_joint_count": 2,
        "applied_joint_count": 1,
        "assignments": [
          {
            "node_id": 1,
            "prior_pm_id": "1363",
            "prior_joint": "joint_0",
            "prior_type": "revolute",
            "kept_pact_axis": false,
            "ot_cost": 1.5648508071899414
          }
        ]
      },
      "baseline": {
        "joints": [
          {
            "node_id": 0,
            "parent": -1,
            "type": "revolute",
            "axis": [
              0.0,
              0.0,
              -1.0
            ],
            "origin": [
              -0.417583703994751,
              0.49646252393722534,
              0.0788310170173645
            ],
            "range": [
              0.0,
              -2.2840566635131836
            ],
            "name": "handle"
          },
          {
            "node_id": 1,
            "parent": -1,
            "type": "prismatic",
            "axis": [
              0.005519612226635218,
              0.99481600522995,
              -0.10154138505458832
            ],
            "origin": [
              0.0,
              0.0,
              0.0
            ],
            "range": [
              0.0,
              0.03359439596533775
            ],
            "name": "handle"
          }
        ],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 3,
          "joints": 2
        },
        "scores": {
          "pred_joint_count": 2,
          "gt_joint_count": 1,
          "joint_count_accuracy": 0.0,
          "joint_count_abs_error": 1,
          "joint_type_accuracy": 1.0,
          "axis_mean_error_deg": 89.8418739547688,
          "origin_mean_error": 0.6049223946298086,
          "axis_finite_rate": 1.0,
          "limit_sanity_rate": 1.0,
          "urdf_parse_success": true,
          "urdf_links": 3,
          "urdf_joints": 2
        }
      },
      "ot_variant": {
        "joints": [
          {
            "node_id": 1,
            "parent": 0,
            "type": "revolute",
            "axis": [
              0.0,
              -1.0,
              0.0
            ],
            "origin": [
              0.0,
              0.0,
              0.0
            ],
            "range": [
              0.0,
              1.5707963267948966
            ],
            "name": "handle"
          }
        ],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 2,
          "joints": 1
        },
        "scores": {
          "pred_joint_count": 1,
          "gt_joint_count": 1,
          "joint_count_accuracy": 1.0,
          "joint_count_abs_error": 0,
          "joint_type_accuracy": 1.0,
          "axis_mean_error_deg": 90.0,
          "origin_mean_error": 0.7330128818526997,
          "axis_finite_rate": 1.0,
          "limit_sanity_rate": 1.0,
          "urdf_parse_success": true,
          "urdf_links": 2,
          "urdf_joints": 1
        }
      },
      "visual_assets": {
        "baseline_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/TrashCan_10357/baseline_closed.glb",
        "baseline_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/TrashCan_10357/baseline_open.glb",
        "ot_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/TrashCan_10357/ot_closed.glb",
        "ot_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/TrashCan_10357/ot_open.glb"
      },
      "visual_export_ok": {
        "baseline_closed_ok": true,
        "baseline_open_ok": true,
        "ot_closed_ok": true,
        "ot_open_ok": true
      }
    },
    {
      "sample": "Safe_1363",
      "pm_id": "1363",
      "category": "Safe",
      "baseline_pred_path": "/data/250010098/PAct/outputs/rawpm_synth_pact_infer_all5_20260419/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/Safe_1363@Safe_1363_synthetic_processed.@ng/object.json",
      "ot_variant_path": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Safe_1363/object_ot_variant.json",
      "gt_source": "unified_sdf",
      "gt_joint_count": 2,
      "ot_meta": {
        "status": "ok",
        "reference_pm_id": "8867",
        "reference_category": "Door",
        "used_global_prior": true,
        "reference_joint_count": 2,
        "applied_joint_count": 2,
        "assignments": [
          {
            "node_id": 0,
            "prior_pm_id": "8867",
            "prior_joint": "surface_board",
            "prior_type": "revolute",
            "kept_pact_axis": true,
            "ot_cost": 0.25
          },
          {
            "node_id": 2,
            "prior_pm_id": "8867",
            "prior_joint": "fixed_part",
            "prior_type": "revolute",
            "kept_pact_axis": true,
            "ot_cost": 0.6093955039978027
          }
        ]
      },
      "baseline": {
        "joints": [
          {
            "node_id": 0,
            "parent": 1,
            "type": "revolute",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "origin": [
              -0.5015092492103577,
              0.09150353074073792,
              0.3680887520313263
            ],
            "range": [
              0.0,
              -27.290836334228516
            ],
            "name": "door"
          },
          {
            "node_id": 2,
            "parent": 1,
            "type": "revolute",
            "axis": [
              -0.03495491296052933,
              -0.010991090908646584,
              -0.9993284344673157
            ],
            "origin": [
              -0.05659942701458931,
              0.2247772365808487,
              -0.0004924479871988297
            ],
            "range": [
              0.0,
              360.0
            ],
            "name": "knob"
          }
        ],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 3,
          "joints": 2
        },
        "scores": {
          "pred_joint_count": 2,
          "gt_joint_count": 2,
          "joint_count_accuracy": 1.0,
          "joint_count_abs_error": 0,
          "joint_type_accuracy": 1.0,
          "axis_mean_error_deg": 1.0499564519864435,
          "origin_mean_error": 0.4302908548723327,
          "axis_finite_rate": 1.0,
          "limit_sanity_rate": 1.0,
          "urdf_parse_success": true,
          "urdf_links": 3,
          "urdf_joints": 2
        }
      },
      "ot_variant": {
        "joints": [
          {
            "node_id": 0,
            "parent": 1,
            "type": "revolute",
            "axis": [
              0.0,
              1.0,
              0.0
            ],
            "origin": [
              -0.5015092492103577,
              0.09150353074073792,
              0.3680887520313263
            ],
            "range": [
              0.0,
              -0.4763149496551873
            ],
            "name": "door"
          },
          {
            "node_id": 2,
            "parent": 1,
            "type": "revolute",
            "axis": [
              -0.03495491348565112,
              -0.010991091073763897,
              -0.9993284494800591
            ],
            "origin": [
              -0.05659942701458931,
              0.2247772365808487,
              -0.0004924479871988297
            ],
            "range": [
              0.0,
              6.283185307179586
            ],
            "name": "knob"
          }
        ],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 3,
          "joints": 2
        },
        "scores": {
          "pred_joint_count": 2,
          "gt_joint_count": 2,
          "joint_count_accuracy": 1.0,
          "joint_count_abs_error": 0,
          "joint_type_accuracy": 1.0,
          "axis_mean_error_deg": 1.0499564519864435,
          "origin_mean_error": 0.4302908548723327,
          "axis_finite_rate": 1.0,
          "limit_sanity_rate": 1.0,
          "urdf_parse_success": true,
          "urdf_links": 3,
          "urdf_joints": 2
        }
      },
      "visual_assets": {
        "baseline_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Safe_1363/baseline_closed.glb",
        "baseline_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Safe_1363/baseline_open.glb",
        "ot_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Safe_1363/ot_closed.glb",
        "ot_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Safe_1363/ot_open.glb"
      },
      "visual_export_ok": {
        "baseline_closed_ok": true,
        "baseline_open_ok": true,
        "ot_closed_ok": true,
        "ot_open_ok": true
      }
    },
    {
      "sample": "Bottle_3517",
      "pm_id": "3517",
      "category": "Bottle",
      "baseline_pred_path": "/data/250010098/PAct/outputs/rawpm_synth_pact_infer_all5_20260419/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/Bottle_3517@Bottle_3517_synthetic_processed.@ng/object.json",
      "ot_variant_path": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Bottle_3517/object_ot_variant.json",
      "gt_source": "raw_mobility_v2",
      "gt_joint_count": 1,
      "ot_meta": {
        "status": "ok",
        "reference_pm_id": "10357",
        "reference_category": "TrashCan",
        "used_global_prior": true,
        "reference_joint_count": 1,
        "applied_joint_count": 0,
        "assignments": []
      },
      "baseline": {
        "joints": [],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 2,
          "joints": 1
        },
        "scores": {
          "pred_joint_count": 0,
          "gt_joint_count": 1,
          "joint_count_accuracy": 0.0,
          "joint_count_abs_error": 1,
          "joint_type_accuracy": 0.0,
          "axis_mean_error_deg": 90.0,
          "origin_mean_error": 0.0,
          "axis_finite_rate": 0.0,
          "limit_sanity_rate": 0.0,
          "urdf_parse_success": true,
          "urdf_links": 2,
          "urdf_joints": 1
        }
      },
      "ot_variant": {
        "joints": [],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 2,
          "joints": 1
        },
        "scores": {
          "pred_joint_count": 0,
          "gt_joint_count": 1,
          "joint_count_accuracy": 0.0,
          "joint_count_abs_error": 1,
          "joint_type_accuracy": 0.0,
          "axis_mean_error_deg": 90.0,
          "origin_mean_error": 0.0,
          "axis_finite_rate": 0.0,
          "limit_sanity_rate": 0.0,
          "urdf_parse_success": true,
          "urdf_links": 2,
          "urdf_joints": 1
        }
      },
      "visual_assets": {
        "baseline_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Bottle_3517/baseline_closed.glb",
        "baseline_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Bottle_3517/baseline_open.glb",
        "ot_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Bottle_3517/ot_closed.glb",
        "ot_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Bottle_3517/ot_open.glb"
      },
      "visual_export_ok": {
        "baseline_closed_ok": true,
        "baseline_open_ok": true,
        "ot_closed_ok": true,
        "ot_open_ok": true
      }
    },
    {
      "sample": "Display_3386",
      "pm_id": "3386",
      "category": "Display",
      "baseline_pred_path": "/data/250010098/PAct/outputs/rawpm_synth_pact_infer_all5_20260419/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/Display_3386@Display_3386_synthetic_processed.@ng/object.json",
      "ot_variant_path": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Display_3386/object_ot_variant.json",
      "gt_source": "raw_mobility_v2",
      "gt_joint_count": 5,
      "ot_meta": {
        "status": "ok",
        "reference_pm_id": "10357",
        "reference_category": "TrashCan",
        "used_global_prior": true,
        "reference_joint_count": 1,
        "applied_joint_count": 0,
        "assignments": []
      },
      "baseline": {
        "joints": [],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 2,
          "joints": 1
        },
        "scores": {
          "pred_joint_count": 0,
          "gt_joint_count": 5,
          "joint_count_accuracy": 0.0,
          "joint_count_abs_error": 5,
          "joint_type_accuracy": 0.0,
          "axis_mean_error_deg": 90.0,
          "origin_mean_error": 0.0,
          "axis_finite_rate": 0.0,
          "limit_sanity_rate": 0.0,
          "urdf_parse_success": true,
          "urdf_links": 2,
          "urdf_joints": 1
        }
      },
      "ot_variant": {
        "joints": [],
        "urdf": {
          "exists": true,
          "parse_success": true,
          "links": 2,
          "joints": 1
        },
        "scores": {
          "pred_joint_count": 0,
          "gt_joint_count": 5,
          "joint_count_accuracy": 0.0,
          "joint_count_abs_error": 5,
          "joint_type_accuracy": 0.0,
          "axis_mean_error_deg": 90.0,
          "origin_mean_error": 0.0,
          "axis_finite_rate": 0.0,
          "limit_sanity_rate": 0.0,
          "urdf_parse_success": true,
          "urdf_links": 2,
          "urdf_joints": 1
        }
      },
      "visual_assets": {
        "baseline_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Display_3386/baseline_closed.glb",
        "baseline_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Display_3386/baseline_open.glb",
        "ot_closed": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Display_3386/ot_closed.glb",
        "ot_open": "/data/250010098/physxanything_stage1_experiments/runs/route2_pact_ot_variant_20260510/assets/Display_3386/ot_open.glb"
      },
      "visual_export_ok": {
        "baseline_closed_ok": true,
        "baseline_open_ok": true,
        "ot_closed_ok": true,
        "ot_open_ok": true
      }
    }
  ]
}
