Skip to content

Report generation#10

Merged
SteSeg merged 6 commits into
develop_2.0from
report_generation
May 14, 2026
Merged

Report generation#10
SteSeg merged 6 commits into
develop_2.0from
report_generation

Conversation

@SteSeg

@SteSeg SteSeg commented May 14, 2026

Copy link
Copy Markdown
Owner

Summary

This PR adds a modular report-generation scaffold for OFB benchmark results. It provides the raw structure (metadata + sources + plots) and supports YAML/PDF output. Scoring integration is intentionally left for a later PR.

What’s Included

  • Report models and builder
  • Absolute + C/E plots with experimental 3σ bands
  • YAML renderer (machine-readable)
  • PDF renderer (human-readable)
  • Automatic log/linear scale (default: log if range > 100x)

Architecture

  • report/models.py
    • ReportMetadata, ResultSource, ReportConfig, PlotStyle, PlotSpec, Report
  • report/builder.py
    • build_report(...)
  • report/plots.py
    • plotting + auto-scale
  • report/renderers.py
    • render_yaml(...), render_pdf(...), render_plots_for_report(...)
  • report/init.py
    • public API exports

Usage

from pathlib import Path
from openmc_fusion_benchmarks.benchmark_results import BenchmarkResults
from openmc_fusion_benchmarks.report import (
    ReportConfig,
    ReportMetadata,
    ResultSource,
    build_report,
    render_yaml,
    render_pdf,
)

exp = BenchmarkResults.from_file("reference_results.h5")
calc = BenchmarkResults.from_file("benchmark_results.h5")

metadata = ReportMetadata(
    title="FNG validation report",
    benchmark_id="oktavian_al",
    description="Short experiment description",
    model_description="Short model description",
    code_name="openmc",
    code_version="0.15.0",
)

sources = [
    ResultSource(name="experiment", kind="experiment", results=exp),
    ResultSource(name="calculation", kind="calculation", results=calc),
]

config = ReportConfig(output_dir=Path("report_out"), include_yaml=True, include_pdf=True)

report = build_report(metadata, sources, config)
render_yaml(report, config.output_dir / "report.yaml")
render_pdf(report, config.output_dir / "report.pdf", config.output_dir / "plots")

Configuration knobs

  • ReportMetadata: title, benchmark ID, model description, code name/version, notes
  • ResultSource: experiment/calculation/database inputs
  • PlotStyle:
    • y_scale="auto" by default (log if range > 100x)
    • override with "linear"/"log"
    • labels and titles
  • ReportConfig:
    • plot_tallies to limit plots
    • include_yaml / include_pdf toggles

Notes / limitations

  • This is a scaffold only; scoring integration will follow later.

@coveralls

coveralls commented May 14, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 25879683435

Coverage decreased (-4.7%) to 69.333%

Details

  • Coverage decreased (-4.7%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 1663
Covered Lines: 1153
Line Coverage: 69.33%
Coverage Strength: 0.69 hits per line

💛 - Coveralls

@SteSeg
SteSeg merged commit 788f7b9 into develop_2.0 May 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants