Visualization and figure-production framework for artifact-backed research outputs.
A framework-oriented repository for turning stable dataset or experiment artifacts into truthful visual products, repeatable figure specs, and exportable review bundles.
fig-lab is designed as a research instrument, not a notebook gallery.
It is meant to support:
- normalized readers before plotting backends enter the picture
- renderer-agnostic figure specifications
- export manifests that preserve artifact provenance
- static, interactive, and qualitative review surfaces from one coherent runtime
Key principle:
- readers normalize once, figure specs stay stable, and plotting backends adapt around that shared contract
src/fig_lab/: active Python runtime for readers, contracts, CLI entrypoints, and smoke surfacestests/: runtime and CLI validation surfaceartifacts/: persisted output surface for figures, dashboards, manifests, and review exportsdocs/README.md: docs indexdocs/architecture.md: runtime map and plotting-stack posturedocs/runbooks.md: setup, validation, and runtime reference
Use Python 3.13 for now. The napari dependency chain is not yet fully
compatible with Python 3.14.
- Use Python
3.13from an environment that already contains the repo dependencies. On declaratively managed workstations, no repo-local.venvis required.
just setup- Check the public CLI surface.
PYTHONPATH=src python -m fig_lab.main --version
PYTHONPATH=src python -m fig_lab.main inspect-release --bundle-dir /path/to/release-bundle
PYTHONPATH=src python -m fig_lab.main inspect-dataset --source-kind coco --source-path /path/to/annotations.json
PYTHONPATH=src python -m fig_lab.main inspect-experiment --source-kind repr_lab_run_directory --source-path /path/to/repr-run
PYTHONPATH=src python -m fig_lab.main render-figure --spec /path/to/spec.json --output-dir artifacts/demo- Run the baseline validation passes.
PYTHONPATH=src python -m fig_lab.main smoke
PYTHONPATH=src python -m fig_lab.smoke
python -m pytest -qArtifact Reader -> Normalized Dataset View -> Figure Spec -> Renderer -> Export Manifest
- readers parse published release bundles first and fall back to bounded raw inputs only when a release bundle is not the right surface for the task
- raw
COCO,LVIS, andPASCAL VOCreaders now converge on the same dataset-facing contract as published release bundles - contracts keep figure-facing data stable before renderer selection
- renderers emit static, interactive, or review-oriented outputs
- export surfaces preserve provenance back to the source artifacts
- a public
inspect-releaseCLI for release-bundle inspection - a public
inspect-datasetCLI for rawCOCO,LVIS, andPASCAL VOCdataset inspection when bounded local visualization or adapter work needs a raw source - a public
inspect-experimentCLI for standalone metric tables and manifest-backedrepr-labrun directories that satisfy the bounded public run-directory contract - a public
render-figureCLI that writes PNG, SVG, PDF, or HTML outputs plus an export manifest from a JSON figure spec - a plotting-stack smoke path that validates the current dependency surface
- normalized contracts in
src/fig_lab/contracts.py - an artifact surface under
artifacts/for exported figures and review bundles
- expand figure-spec coverage beyond the current bar-oriented views while keeping output selection downstream of normalized records
- deepen experiment result coverage on top of the landed contract-aware
repr-labrun-directory reader
- keep visual encodings truthful to the source artifacts
- preserve provenance in manifests and exported outputs
- keep renderer selection downstream of normalized records
- treat historical outputs as additive and auditable rather than mutable
docs/README.md: docs indexdocs/architecture.md: architecture, plotting-stack posture, and runtime overviewdocs/runbooks.md: bootstrap, validation, and runtime referenceartifacts/README.md: artifact-output guidance
This project is licensed under the MIT License. See LICENSE for the full
text.