| name | result-analyzer |
| description | Compare reproduced results against paper-reported values. Generate Markdown/JSON/Beamer reports. |
Result-Analyzer Skill
Purpose
The final piece of the reproduction pipeline. After running experiments, this skill compares your results against the paper's reported metrics, figures, and training curves โ then generates a structured report.
When to Use
- After
code-reproducer has finished training on the remote GPU
- User says "compare my results" or "how close are we to the paper?"
- When writing a reproduction report or paper
- To decide if reproduction was successful
Architecture
Inputs Comparators Outputs
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
paper-parser JSON โโโ
โโโโ table_extractor โโโโ
paper metrics โโโ โ
โโโโ metric_comparator โโโ Markdown Report
repro metrics โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโ JSON Report
โโโ Beamer Data
repro train.csv โโโโโ curve_comparator โโโ comparison plots โโโ latex-paper-skills
โโโ beamer-skill PPT
repro images โโโโโ image_comparator โโโ SSIM/PSNR/FID
paper figures โโโโโ โโโ side-by-side figures
Quick Start
Simple Metric Comparison
python result-analyzer/analyze.py \
--paper-metrics '{"accuracy": 95.3, "FID": 3.17}' \
--repro-metrics '{"accuracy": 94.8, "FID": 3.45}' \
--title "DDPM Reproduction" \
-o report/
Full Pipeline (paper JSON + training log + images)
python result-analyzer/analyze.py \
--paper-json workspace/<paper>/paper_content.json \
--repro-log workspace/<paper>/train_log.csv \
--repro-images workspace/<paper>/generated/ \
--paper-figures workspace/<paper>/figures/ \
--fid \
--beamer \
-o workspace/<paper>/report/
From Paper-Parser JSON Only
python result-analyzer/analyze.py \
--paper-json paper_content.json \
--repro-metrics '{"accuracy": 94.8}' \
--method-name "Ours" \
-o report/
Comparators
1. Metric Comparator (Core)
Compares reproduced values against paper values with tolerance-based judgment.
Built-in Knowledge Base: 50+ metrics with direction info:
higher_better: accuracy, BLEU, PSNR, SSIM, IS, mAP, AUC, F1...
lower_better: FID, loss, perplexity, WER, MAE, RMSE, LPIPS...
Judgment Logic:
| Status | Condition |
|---|
| โ
PASS | Within tolerance (default: ยฑ1 abs, ยฑ5% rel) |
| ๐ข PASS | Better than paper! |
| โ ๏ธ WARN | Within 2ร tolerance |
| โ FAIL | Outside tolerance |
2. Curve Comparator
- Loads CSV/JSON training logs
- Compares final values against paper
- Pearson correlation between curves
- Convergence speed analysis
- Generates matplotlib comparison plots
3. Image Comparator
- SSIM (Structural Similarity) โ via scikit-image
- PSNR (Peak Signal-to-Noise Ratio)
- FID (Frรฉchet Inception Distance) โ optional, requires
pytorch-fid
- Side-by-side comparison figures
4. Table Extractor
- Reads paper-parser JSON output โ finds result tables
- Auto-detects "Ours" / "Proposed" / last row
- Handles
ยฑ, bold markers, % signs
- Free-text metric extraction (e.g., "We achieve 95.3% accuracy")
Output Formats
Markdown Report (reproduction_report.md)
# Reproduction Report
## ๐ข Overall: PASS
| Status | Metric | Paper | Reproduced | Diff | Note |
|--------|--------|-------|-----------|------|------|
| โ
PASS | Accuracy | 95.3 | 94.8 | -0.5 โ | Within tolerance |
| โ ๏ธ WARN | FID | 3.17 | 3.45 | +0.28 โ | Close but slightly off |
JSON Report (reproduction_report.json)
Structured data for downstream consumption:
latex-paper-skills โ results-backfill skill
beamer-skill โ reproduction PPT
Beamer Data (beamer_report_data.json)
Slide-by-slide data for generating a Beamer PPT:
- Title slide (paper name + overall status)
- Metric comparison table
- Training curves figure
- Sample comparison figure
- Conclusion slide
Integration with Other Skills
โ beamer-skill (Generate PPT)
python result-analyzer/analyze.py ... --beamer -o report/
python beamer-skill/generate_beamer_report.py report/beamer_report_data.json -o report/reproduction_slides.tex
python beamer-skill/generate_beamer_report.py report/beamer_report_data.json -o slides.tex --compile
โ latex-paper-skills (Write LaTeX Paper via latex_bridge.py)
python result-analyzer/analyze.py ... -o report/
python result-analyzer/latex_bridge.py report/reproduction_report.json -o paper/results/
โ paper-parser (Input)
paper-parser outputs paper_content.json with tables
โ result-analyzer extracts paper metrics from tables
โ compares against reproduced values
โ code-reproducer (Input)
code-reproducer outputs train_log.csv + generated images
โ result-analyzer loads CSV for curve comparison
โ compares images via SSIM/PSNR
Dependencies
pip install -r result-analyzer/requirements.txt
๐ Reference URLs (for agent self-help)
| Topic | URL |
|---|
| scikit-image SSIM docs | https://scikit-image.org/docs/stable/api/skimage.metrics.html |
| scikit-image PSNR docs | https://scikit-image.org/docs/stable/api/skimage.metrics.html |
| pytorch-fid | https://github.com/mseitzer/pytorch-fid |
| matplotlib savefig | https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.savefig.html |
| pandas read_csv | https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html |
| latex-paper-skills | https://github.com/yunshenwuchuxun/latex-paper-skills |
| results-backfill skill | https://github.com/yunshenwuchuxun/latex-paper-skills/tree/main/.codex/skills/results-backfill |
| ML metrics overview | https://paperswithcode.com/task/image-generation |
Limitations
- SSIM is sensitive to image alignment โ ensure consistent cropping
- FID requires โฅ2048 images per directory for reliable scores
- Table extraction depends on paper-parser JSON quality
- Free-text metric extraction uses regex patterns โ may miss complex phrasing