PhyEduVideo
PhyEduVideo in WorldFoundry: assets, runners, metrics, and limits.
On this page
About
PhyEduVideo evaluates text-to-video models as physics-education video generators. The source README frames the task around curriculum-aligned visual explanations: each physics concept is split into teaching points, and each teaching point has a prompt for generating an explanatory clip.
WorldFoundry includes the runnable PhyEduVideo integration under worldfoundry/evaluation/tasks/execution/runners/phyeduvideo and bundles the prompt/rubric JSON files under worldfoundry/data/benchmarks/assets/phyeduvideo. Do not clone the upstream repository for a WorldFoundry run. Hugging Face checkpoint downloads are fine for any external judge stack you choose to run, but the benchmark wrapper code is in-tree.
Official References
| Resource | Link |
|---|---|
| Project page | meghamariamkm.github.io/phyeduvideo26 |
| Paper | arXiv:2601.00943 |
| GitHub | github.com/meghamariamkm/PhyEduVideo |
| In-tree runner | worldfoundry/evaluation/tasks/execution/runners/phyeduvideo/run_phyeduvideo_official_runner.py |
Prepare Assets
- Prompt suite:
worldfoundry/data/benchmarks/assets/phyeduvideo/Prompts/Prompts.jsoncontains 60 concepts and 205 teaching-point prompts. - Rubric files: bundled
SA.json,PC-1.json,PC-2.json,PC-3.json, andcap.json. - Candidate videos: set
WORLDFOUNDRY_GENERATED_ARTIFACT_DIRto generated videos named by prompt ID. - Existing result import: pass
--official-results-pathor setWORLDFOUNDRY_PHYEDUVIDEO_RESULTS_PATH. CSV and JSON result files are accepted. - Judge/checkpoint assets: full parity with the README requires the upstream InternVL / CLIP or VQA / video-quality judging stack. WorldFoundry currently imports those scores instead of running every upstream judge.
Generated Artifact Layout
Prompt IDs are built as Id{concept_id}_{teaching_point_id}. The generated-artifact directory should be flat:
generated_videos/
Id1_1.mp4
Id1_2.mp4
...
phyeduvideo_results.csvWorldFoundry materializes integrated model outputs into that filename layout before scoring. Coverage checks compare video stems with prompt IDs from Prompts.json.
Run With WorldFoundry
Import an existing PhyEduVideo result file through the public CLI:
worldfoundry-eval zoo benchmark-run \
--benchmark-id phyeduvideo \
--mode official-validation \
--official-results-path /path/to/phyeduvideo_results.csv \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/phyeduvideo/validation \
--jsonRun the in-tree scoring wrapper through the public CLI. This path expects a CSV/JSON result file from WORLDFOUNDRY_PHYEDUVIDEO_RESULTS_PATH or under the generated-artifact directory:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/generated_videos
export WORLDFOUNDRY_PHYEDUVIDEO_RESULTS_PATH=/path/to/phyeduvideo_results.csv
worldfoundry-eval zoo benchmark-run \
--benchmark-id phyeduvideo \
--mode official-run \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir tmp/phyeduvideo/run \
--jsonDirect in-tree runner:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/generated_videos
export WORLDFOUNDRY_BENCHMARK_OUTPUT_DIR=tmp/phyeduvideo/direct
export WORLDFOUNDRY_PHYEDUVIDEO_RESULTS_PATH=/path/to/phyeduvideo_results.csv
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/phyeduvideo/run_phyeduvideo_official_runner.py \
--run-official \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir "${WORLDFOUNDRY_BENCHMARK_OUTPUT_DIR}" \
--jsonDirect result import:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/phyeduvideo/run_phyeduvideo_official_runner.py \
--official-results-path /path/to/phyeduvideo_results.csv \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/phyeduvideo/direct-validation \
--jsonMetrics
| Metric ID | Meaning |
|---|---|
semantic_adherence | Semantic match to the teaching-point prompt and rubric objects/actions. |
physics_commonsense | Aggregated PC-1/PC-2/PC-3 correctness for whether the clip depicts the target physics concept. |
motion_smoothness | Motion-smoothness score for explanatory video motion. |
temporal_flickering | Temporal stability score for frame-to-frame consistency. Higher means less visible flicker. |
phyeduvideo_average | Primary WorldFoundry metric. Mean of available component metrics unless an explicit average is supplied. |
Scores are higher-is-better and are normalized into 0..1 when source rows use larger scales.
Outputs
The output directory contains:
scorecard.json: run status, metrics, prompt/video coverage, selected backend, and leaderboard-validity flags.raw_metric_table.jsonl: one row per declared metric.per_sample_scores.jsonl: concept/teaching-point rows when the input result file contains sample-level fields.phyeduvideo_results.csvorphyeduvideo_results.json: copied result file when the in-tree wrapper imports one.specialized_normalizer_stdout.logandspecialized_normalizer_stderr.logwhen invoked throughworldfoundry-eval zoo benchmark-run.
Limitations
- The in-tree scoring wrapper currently imports already-computed result files. It does not run the full InternVL / CLIP / VQA judge stack end to end.
- Full leaderboard parity requires generated videos for all 205 teaching points and upstream judge outputs for semantic, physics, motion, and flicker metrics.
- The bundled prompt/rubric assets are sufficient for request materialization and result aggregation, but not for recomputing every upstream metric from raw videos.
leaderboard_validremains false until complete judge evidence and full prompt coverage are supplied.