CoolFace
Datasetpublic

ppak10/Agentic-SLS-Telemetry

Inova-Mk1-Telemetry Time-aligned printer-state recordings from Inova Mk1 SLS 3D print runs. One row per 10 Hz tick — the recorder's /state/snapshot poll — with the full sensor state snapshot (~64 columns: temperatures, position, power, lights) on every row, the nearest camera frame embedded inline when one fell within the prior 100 ms window, and any 1 kHz position-stream samples from that window collected as a nested list. 25 parquet files across builds spanning 2026-05 through… See the full description on the dataset page: https://huggingface.co/datasets/ppak10/Agentic-SLS-Telemetry.

sourceHugging Facemitupdated 2mo agoView on Hugging Face
0likes413downloads
_lib.py52 linesDownload Raw Back to scripts
1"""Shared paths and helpers for the extract scripts.2 3Raw data lives in this dataset's own source/ tree (source-based layout,42026-07-16); extract scripts read source/ and write to data/.5"""6import json7from pathlib import Path8 9ROOT = Path(__file__).parent.parent10DATA_DIR = ROOT / "data"11 12# Since 2026-07-16 this dataset is source-based: raw inputs live in OUR OWN13# source/ tree (written by the recorder repo's `sls-export` /14# `sls-deliver-frames`). data/exports in the recorder repo is retired.15# AGENTIC_ROOT still points at the containing recorder repo (submodule,16# two climbs) — used only for the transient frame buffer of builds not yet17# delivered into source/frames/ zips.18AGENTIC_ROOT = ROOT.parent.parent19SOURCE_DIR = ROOT / "source"20EXPORTS_DIR = SOURCE_DIR / "recorder"   # builds/events/frames jsonl + sensors.csv21TELEMETRY_DIR = SOURCE_DIR / "telemetry"      # {NNN}.parquet raw ticks22POSITION_DIR = SOURCE_DIR / "position_hf"     # {NNN}.parquet23FRAMES_BUFFER = AGENTIC_ROOT / "data" / "frames"  # pre-delivery loose frames24 25 26def iter_jsonl(path: Path):27    """Stream a JSONL file row-by-row. Skips blank lines."""28    with path.open(encoding="utf-8") as f:29        for line in f:30            line = line.strip()31            if not line:32                continue33            yield json.loads(line)34 35 36def load_build_to_profile_name() -> dict[int, str]:37    """Read upstream events.jsonl, return {build_id: printProfileName}.38 39    Uses the `build_start` event's `payload.printProfileName` field. Builds40    that never logged a build_start event (the recorder joined mid-run) are41    omitted from the map.42    """43    events_path = EXPORTS_DIR / "events.jsonl"44    out: dict[int, str] = {}45    for ev in iter_jsonl(events_path):46        if ev.get("kind") != "build_start":47            continue48        name = (ev.get("payload") or {}).get("printProfileName")49        if name:50            out[ev["build_id"]] = name51    return out52