dsfb-semiconductor 0.1.1

Deterministic DSFB semiconductor benchmark companion for SECOM and PHM-style dataset adapters
Documentation
{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# DSFB Semiconductor End-to-End Notebook\n",
        "\n",
        "This notebook runs the `dsfb-semiconductor` crate as a non-intrusive, read-only DSFB interpretation layer. It fetches or validates SECOM, probes PHM 2018, runs the SECOM benchmark, runs the PHM 2018 benchmark, renders the operator-facing figures, and surfaces the generated PDF and ZIP artifacts."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "from pathlib import Path\n",
        "import json\n",
        "import subprocess\n",
        "\n",
        "CRATE = Path('/home/one/dsfb/crates/dsfb-semiconductor')\n",
        "MANIFEST = CRATE / 'Cargo.toml'\n",
        "DATA_ROOT = CRATE / 'data'\n",
        "RAW_ROOT = DATA_ROOT / 'raw'\n",
        "OUTPUT_ROOT = CRATE / 'output-dsfb-semiconductor'\n",
        "\n",
        "def run_cmd(args, cwd=CRATE):\n",
        "    print(' '.join(map(str, args)))\n",
        "    completed = subprocess.run(args, cwd=cwd, check=True, text=True, capture_output=True)\n",
        "    print(completed.stdout)\n",
        "    if completed.stderr:\n",
        "        print(completed.stderr)\n",
        "    return completed\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "run_cmd(['cargo', 'run', '--manifest-path', str(MANIFEST), '--', 'fetch-secom', '--data-root', str(RAW_ROOT)])\n",
        "run_cmd(['cargo', 'run', '--manifest-path', str(MANIFEST), '--', 'probe-phm2018', '--data-root', str(DATA_ROOT)])\n",
        "run_cmd(['cargo', 'run', '--manifest-path', str(MANIFEST), '--', 'run-secom', '--data-root', str(RAW_ROOT), '--output-root', str(OUTPUT_ROOT)])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "secom_runs = sorted(OUTPUT_ROOT.glob('*_dsfb-semiconductor_secom'))\n",
        "latest_secom = secom_runs[-1]\n",
        "print(latest_secom)\n",
        "run_cmd(['cargo', 'run', '--manifest-path', str(MANIFEST), '--', 'run-phm2018', '--data-root', str(DATA_ROOT), '--output-root', str(OUTPUT_ROOT), '--secom-run-dir', str(latest_secom)])\n",
        "phm_runs = sorted(OUTPUT_ROOT.glob('*_dsfb-semiconductor_phm2018'))\n",
        "latest_phm = phm_runs[-1]\n",
        "print(latest_phm)\n",
        "run_cmd(['cargo', 'run', '--manifest-path', str(MANIFEST), '--', 'render-non-intrusive-artifacts', '--run-dir', str(latest_secom)])\n",
        "run_cmd(['cargo', 'run', '--manifest-path', str(MANIFEST), '--', 'render-unified-value-figure', '--secom-run-dir', str(latest_secom), '--phm-run-dir', str(latest_phm), '--paper-tex', str(CRATE / 'paper' / 'semiconductor.tex')])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "from IPython.display import Image, display\n",
        "\n",
        "display(Image(filename=str(latest_secom / 'figures' / 'dsfb_non_intrusive_architecture.png')))\n",
        "display(Image(filename=str(latest_secom / 'figures' / 'dsfb_unified_value_figure.png')))\n",
        "\n",
        "artifacts = {\n",
        "    'report_pdf': str(latest_secom / 'report.pdf'),\n",
        "    'results_zip': str(latest_secom / 'results.zip'),\n",
        "    'episode_summary_csv': str(latest_secom / 'dsfb_episode_summary.csv'),\n",
        "    'episode_precision_csv': str(latest_secom / 'dsfb_episode_precision.csv'),\n",
        "    'recall_metrics_csv': str(latest_secom / 'dsfb_recall_metrics.csv')\n",
        "}\n",
        "print(json.dumps(artifacts, indent=2))"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.12"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}