# 11 - Reporting: Tables, Charts, Weighted Scoring

## Context / Goal
Aggregate all measurements and projections into the final decision document that clearly ranks the storage formats for laboratory use cases: analysis, report generation, search/filtering, archiving, inter-lab exchange.

## Dependencies
09, 10 (and 02 for embedding process diagrams).

## Processing instructions
Write `report.py` using matplotlib (PNG, 150 dpi, log scales where ranges span decades) into `./out/report/charts/`, and assemble `./out/report/REPORT.md`.

### Tables
1. Storage footprint: measured @150 MB + coefficients vs CSV + projected @600 GB/1.2 TB/6 TB (incl. compressed archival sizes).
2. Q1-Q7 median wall time / peak RAM / CPU% / read MB, per format (measured).
3. Q1-Q7 projected wall time @600 GB with IMPRACTICAL/FAIL flags.
4. Hardware sizing & cost per format @600 GB.
5. Weighted scoring matrix (see below).

### Charts (each measured + each projected @600 GB)
- C1: disk footprint bar (log).
- C2: RAM requirement bar (log).
- C3: per-query grouped bars Q1-Q7 wall time (log), one chart per query, 5 formats each.
- C4: degradation curves - wall time vs data size (150 MB → 6 TB), one line per format, per query class (point read / indexed / full aggregation), log-log.
- C5: stacked-bar weighted score.
- C6: cost vs performance scatter @600 GB (x = est cost, y = geometric-mean query time, log-log).

### Weighted scoring (agreed methodology)
Normalized 0-10 per metric, then weights: Search speed ×5 (0-50), RAM economy ×2 (0-20), Disk economy ×1 (0-10). Max 80. Search score = normalized inverse geometric mean of Q1-Q7 projected @600 GB (TIMEOUT/FAIL → 0). Present measured-scale and 600 GB-scale scoreboards side by side.

### Narrative sections (concise, English)
- Executive summary with the recommendation (expected, to be confirmed by data: PostgreSQL system of record; CSV retained as raw archive; hybrid JSON-LD for exchange; RDF as virtual layer only - reference Ontop OBDA).
- Use-case mapping table: analysis / reports / search / archiving / exchange → recommended format(s).
- Limitations: single-node, simulated data, extrapolation assumptions.

## Output
- `./out/report/REPORT.md` + `./out/report/charts/*.png` + all tables as CSV in `./out/report/tables/`.
- Marker `./out/.done/11.ok`.
