{"cells":[{"cell_type":"markdown","id":"route-description","metadata":{},"source":"# RSNA knee credible heterogeneous route\nAudited consensus DINO anchor plus only nested-OOF-promoted raw specialists.\n"},{"cell_type":"code","id":"credible-inference","execution_count":null,"metadata":{},"outputs":[],"source":"from pathlib import Path\nimport hashlib\nimport json\nimport os\nimport subprocess\nimport sys\nimport time\n\nINPUT = Path(\"/kaggle/input\")\nWORKING = Path(\"/kaggle/working\")\nSTARTED = time.monotonic()\nBUDGET_SECONDS = 8.75 * 3600\nBLEND = {'schema_version': 1, 'method': 'nested globally-selected equal-rank subset', 'anchor': 'consensus_patch', 'members': ['consensus_patch'], 'weights': {'ACL': [1.0], 'MCL': [1.0], 'Medial Meniscus': [1.0], 'Lateral Meniscus': [1.0], 'Medial OA': [1.0], 'Lateral OA': [1.0], 'PF OA': [1.0], 'Effusion': [1.0], 'Synovitis': [1.0], \"Baker's\": [1.0], 'Contusion': [1.0], 'Fracture': [1.0]}}\nCHECKPOINTS = {'consensus_patch': [{'name': 'patch_mean_fold0.pt', 'sha256': '5befd66fded58b0a0929e96c73dee452134a5604c8717d05201cdeeb8ae7054b'}, {'name': 'patch_mean_fold1.pt', 'sha256': 'a260c9bbe2d867a5bc67ef6805e811aea6ad38d90451d9a266e4313eaf2d4630'}, {'name': 'patch_mean_fold2.pt', 'sha256': '51370020f54a78c8b48e0cfb34d4541c7a679a85dfa13770696b9784964fe154'}, {'name': 'patch_mean_fold3.pt', 'sha256': 'fe405220056da3644cbbdb1b56c14334117a50a7f75b5f3396067c236fbd6026'}, {'name': 'patch_mean_fold4.pt', 'sha256': 'ab651daf6901c40fa8d26b8e738e3b299182523f0ed099f02307f899d031dfdc'}, {'name': 'patch_mean_fold0.pt', 'sha256': '6f6a79fb950b30ac65b46ed31409832104322b8ff5c9d42c4329c328eb44fb91'}, {'name': 'patch_mean_fold1.pt', 'sha256': 'f48a3b46777224b08193bd25e675fa5931151738790c48bd18c6c65923760d92'}, {'name': 'patch_mean_fold2.pt', 'sha256': '2edd3738fab0dc5ef35fc7d872e94416ff72556523240b77525a0f6bb8e92743'}, {'name': 'patch_mean_fold3.pt', 'sha256': '717d5ccfbb5d3b580682a50b6bf7e49815b2fc50a649f0ee45bcd18f03617a5d'}, {'name': 'patch_mean_fold4.pt', 'sha256': 'cf082aae2b3fd97af98ed76e0a4ae5779f112504b0d3a0bafa94156cead1ba87'}, {'name': 'patch_mean_fold0.pt', 'sha256': '17ec82292c72db61aff422cdeed47b1e81373b806c0018c8e1d2119ca7aee085'}, {'name': 'patch_mean_fold1.pt', 'sha256': 'bdccd722806c91bc83ec62927129a45455388073fa9ba5c0d8762086c91eca78'}, {'name': 'patch_mean_fold2.pt', 'sha256': '77b74c47ebf992058abbc698fa4c232fe8331322080bf44d331d95b107988666'}, {'name': 'patch_mean_fold3.pt', 'sha256': '827fca58d24c99f92d890eae831fc496ba081885e986d9f00a24aa969a986ac4'}, {'name': 'patch_mean_fold4.pt', 'sha256': '5597f5694fd1ed5fe3e7e6a3a8b2c223a5b7f214bf909e58769eb967dc2eca69'}]}\nRAW_FAMILIES = {}\nos.environ[\"HF_HUB_DISABLE_PROGRESS_BARS\"] = \"1\"\nos.environ[\"TRANSFORMERS_VERBOSITY\"] = \"error\"\nos.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"\n\nwanted_names = {\n    \"run_selected_raw_inference.py\", \"sample_submission.csv\", \"config.json\",\n    *(row[\"name\"] for rows in CHECKPOINTS.values() for row in rows),\n}\nfile_index = {name: [] for name in wanted_names}\npruned_directories = {\n    \"train_series\", \"test_series\", \"train_images\", \"test_images\",\n    \"train\", \"test\",\n}\nfor root, directories, files in os.walk(INPUT):\n    directories[:] = [name for name in directories if name not in pruned_directories]\n    for name in wanted_names.intersection(files):\n        file_index[name].append(Path(root) / name)\n\ncode_hits = file_index[\"run_selected_raw_inference.py\"]\nif len(code_hits) != 1:\n    raise RuntimeError(f\"expected exactly one code entry point, found {code_hits}\")\ncode_dir = code_hits[0].parent\nsample_hits = file_index[\"sample_submission.csv\"]\nif len(sample_hits) != 1:\n    raise RuntimeError(f\"expected exactly one sample submission, found {sample_hits}\")\nCOMPETITION_INPUT = sample_hits[0].parent\n\ndigest_cache = {}\n\ndef digest(path):\n    key = str(path)\n    if key in digest_cache:\n        return digest_cache[key]\n    value = hashlib.sha256()\n    with path.open(\"rb\") as handle:\n        for chunk in iter(lambda: handle.read(8 << 20), b\"\"):\n            value.update(chunk)\n    digest_cache[key] = value.hexdigest()\n    return digest_cache[key]\n\ndef locate_checkpoint(row):\n    named_hits = file_index[row[\"name\"]]\n    hits = [path for path in named_hits if digest(path) == row[\"sha256\"]]\n    if len(hits) != 1:\n        raise RuntimeError(\n            f\"expected one hash-matching attached {row['name']}, \"\n            f\"found {hits} among {named_hits}\"\n        )\n    return hits[0]\n\nresolved = {\n    member: [locate_checkpoint(row) for row in rows]\n    for member, rows in CHECKPOINTS.items()\n}\n\nmodel_candidates = []\nfor config in file_index[\"config.json\"]:\n    try:\n        payload = json.loads(config.read_text())\n    except Exception:\n        continue\n    if payload.get(\"model_type\") == \"dinov2\" and int(payload.get(\"hidden_size\", 0)) == 768:\n        model_candidates.append(config.parent)\nneeds_dino = True  # the consensus patch anchor always uses DINOv2-base\nif needs_dino and len(model_candidates) != 1:\n    raise RuntimeError(f\"expected one local DINOv2-base config, found {model_candidates}\")\ndino_model = model_candidates[0]\n\nblend_path = WORKING / \"credible_blend.json\"\nblend_path.write_text(json.dumps(BLEND, indent=2) + \"\\n\")\nmember_csv = {}\nanchor = BLEND[\"anchor\"]\nanchor_csv = WORKING / f\"{anchor}.csv\"\npatch_command = [\n    sys.executable, str(code_dir / \"kaggle_offline_infer.py\"),\n    \"--data-root\", str(COMPETITION_INPUT),\n    \"--dino-model\", str(dino_model),\n    \"--work-dir\", str(WORKING / \"patch_cache\"),\n    \"--output\", str(anchor_csv),\n    \"--runtime-json\", str(WORKING / \"patch_runtime.json\"),\n    \"--batch-size\", \"16\", \"--inference-batch-size\", \"3\",\n    \"--workers\", \"4\", \"--max-slices\", \"64\", \"--time-budget-hours\", \"8.5\",\n]\nfor checkpoint in resolved[anchor]:\n    patch_command.extend([\"--checkpoint-glob\", str(checkpoint)])\nsubprocess.run(patch_command, check=True)\nmember_csv[anchor] = anchor_csv\n\nfor name, family in RAW_FAMILIES.items():\n    if time.monotonic() - STARTED >= BUDGET_SECONDS:\n        raise RuntimeError(\"credible route exhausted the Kaggle runtime budget\")\n    destination = WORKING / f\"{name}.csv\"\n    command = [\n        sys.executable, str(code_dir / \"infer_raw_mil.py\"),\n        \"--data-root\", str(COMPETITION_INPUT),\n        \"--sample-submission\", str(COMPETITION_INPUT / \"sample_submission.csv\"),\n        \"--output\", str(destination),\n        \"--slices-per-plane\", str(family[\"inference_slices\"]),\n        \"--workers\", \"4\",\n    ]\n    if family[\"requires_dino_config\"]:\n        command.extend([\"--model-name\", str(dino_model)])\n    for checkpoint in resolved[name]:\n        command.extend([\"--checkpoint-glob\", str(checkpoint)])\n    subprocess.run(command, check=True)\n    member_csv[name] = destination\n\nif time.monotonic() - STARTED >= BUDGET_SECONDS:\n    raise RuntimeError(\"credible route exhausted the Kaggle runtime budget\")\nblend_command = [\n    sys.executable, str(code_dir / \"blend_submission_files.py\"),\n    \"--blend\", str(blend_path),\n    \"--sample-submission\", str(COMPETITION_INPUT / \"sample_submission.csv\"),\n    \"--output\", str(WORKING / \"submission.csv\"),\n]\nfor name in BLEND[\"members\"]:\n    blend_command.extend([\"--member\", f\"{name}={member_csv[name]}\"])\nsubprocess.run(blend_command, check=True)\nif not (WORKING / \"submission.csv\").is_file():\n    raise RuntimeError(\"inference completed without submission.csv\")\n(WORKING / \"credible_runtime.json\").write_text(json.dumps({\n    \"elapsed_seconds\": time.monotonic() - STARTED,\n    \"budget_seconds\": BUDGET_SECONDS,\n    \"members\": BLEND[\"members\"],\n    \"checkpoint_count\": sum(map(len, resolved.values())),\n}, indent=2) + \"\\n\")\n"}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.11"}},"nbformat":4,"nbformat_minor":5}