Skip to main content

result-analyzer

Compare reproduced results against paper-reported values. Generate Markdown/JSON/Beamer reports.

Ir para a instalação

Informações da origem

Repositório
orange4664/research-skills
Última atividade na origem
31 de março de 2026 às 06:46
Idioma detectado do SKILL.md
inglês
Estrelas
41
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
19 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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 ```bash 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) ```bash 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 ```bash 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`) ```markdown # 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: 1. Title slide (paper name + overall status) 2. Metric comparison table 3. Training curves figure 4. Sample comparison figure 5. Conclusion slide ## Integration with Other Skills ### → beamer-skill (Generate PPT) ```bash # 1. Run result-analyzer with --beamer flag python result-analyzer/analyze.py ... --beamer -o report/ # 2. Auto-generate Beamer .tex from JSON python beamer-skill/generate_beamer_report.py report/beamer_report_data.json -o report/reproduction_slides.tex # 3. Compile to PDF 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`) ```bash # 1. Run result-analyzer python result-analyzer/analyze.py ... -o report/ # 2. Convert JSON to latex-paper-skills format python result-analyzer/latex_bridge.py report/reproduction_report.json -o paper/results/ # This generates: # paper/results/main_results.csv ← CSV for results-backfill # paper/results/main_results.tex ← LaTeX table: \input{results/main_results.tex} # paper/results/reproduction_summary.tex ← Summary text for abstract/conclusion # 3. In your paper: # \input{results/main_results.tex} % metric comparison table # \input{results/reproduction_summary.tex} % auto-written reproduction summary ``` ### ← 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 ```bash pip install -r result-analyzer/requirements.txt # Core: numpy, matplotlib, scikit-image, pandas # Optional: pytorch-fid (for FID score) ``` ## 📚 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
Ver no GitHub