name: visualization
description: "Plot PPO reward logs and compose GIFs from saved frame images."
metadata:
disco-role: operating
disable-model-invocation: true
license: MIT
Visualization
Use this sub-skill when the user wants to plot training rewards, compare multiple runs, compose a GIF from saved frames, inspect the CSV log schema, or understand why a plotting or GIF step failed.
Do not use this sub-skill for training-loop changes or pretrained checkpoint evaluation. Route those tasks to the sibling sub-skills. Route low-level PPO class behavior to the root API reference.
What this sub-skill owns
- The
PPO_logs/<env_name>/PPO_<env_name>_log_<run_num>.csv schema.
- Reward smoothing and average-over-runs plotting.
- Figure output naming and directory layout.
- GIF composition from already-saved image frames.
- Headless plotting and image-ordering failure modes.
Quick workflow
-
Check the log or frame layout first. Use the bundled helpers from this sub-skill directory:
python scripts/plot_training_logs.py --help
python scripts/make_training_gif.py --help
-
Plot logs from one environment. If your logs live in the default layout, point the helper at the environment name and log root. The helper will discover the run CSVs and write a PNG into the figure directory.
-
Compose a GIF from frames. The GIF helper expects an ordered set of JPEG or PNG frames, usually already saved by a separate render step.
-
Keep frame capture separate from composition. Environment rendering depends on Gym, Roboschool, or another environment backend. GIF composition only needs Pillow and image files.
Core references
Validation commands
Safe checks for this sub-skill should stay small and deterministic:
python scripts/plot_training_logs.py --help
python scripts/make_training_gif.py --help
python -m py_compile scripts/plot_training_logs.py scripts/make_training_gif.py
A tiny CSV or tiny image fixture is enough to verify the helpers. Do not default to a live environment render unless the user explicitly needs that dependency-bound path.