RadCluster
Graph-based cluster dynamics for irradiated materials
Loading...
Searching...
No Matches
Functions | Variables
make_tables Namespace Reference

Functions

 read_design (Path design)
 
 load_results (Path results_dir)
 
 _s (v)
 
 main (argv=None)
 
dict board ()
 
 nc_reference ()
 
 reference_run_row ()
 
 cell (rec, dose_key)
 
 table4 (B, md)
 
 simple_table (B, md, title, subtitle, rows, dose_key)
 

Variables

 HERE = Path(__file__).resolve().parent
 
list OBSERVABLES
 
list ADMIN
 
list PROV
 
list TEM_COLS = ["f_100_tem_0p8", "f_100_tem_1", "f_100_tem_1p25", "f_100_tem_1p5"]
 
 DT = HERE.parent
 
 MOD = DT.parent
 
 REPO = MOD.parent
 
str SYNC = HERE / ".sync" / "claims"
 
 NC_REF_GLOB = str(MOD / "output" / "20260907_093333_T4_D_4k_*" / "plots" / "plot_data.pkl")
 
 REF_RUN_GLOB
 

Detailed Description

make_tables - the analysis tables for a campaign, joined into one place.

    python make_tables.py --design design/T2_design_v1.csv --results results/

Writes a single named artifact set into report/, default stem
`provisional_twin_map` (override with --name):

  provisional_twin_map.md             the report: what was run, model against
                                      experiment, the sigma_model floor, and an
                                      explicit statement of what is NOT included.

  provisional_twin_map_runs.csv       ONE ROW PER MODEL EVALUATION: identity,
                                      every theta component, every observable,
                                      the admissibility block, and provenance
                                      hashes.  The master table -- everything
                                      else is a view of it.  The .jsonl stores
                                      only theta_hash, so this join against the
                                      design file is what puts theta beside the
                                      result it produced.

  ..._runs_admissible.csv             the same, usable rows only.

  ..._observables.csv                 per observable per condition: model
                                      p05/median/p95 over admissible rows
                                      against the experimental band, with the
                                      in-band fraction.

  ..._targets.csv                     the experimental table, standalone.

"PROVISIONAL" is meant literally: see the three exclusions below.  This is a
map of where the model sits relative to the data under the current prior box,
not a calibrated twin.

WHAT THESE TABLES DO NOT CONTAIN, AND WHY
-----------------------------------------
1. RESULTS EXTRAPOLATED TO EXPERIMENTAL CONDITIONS.  Deliberately absent.  The
   Tier-2 ensemble runs at d_LF = 0.1 dpa; the database is at 15-30 dpa.  There
   is no defensible closed-form extrapolation across that gap -- <100> loops in
   this model have no size cap (loop->network is off and its P_ld is ~0 at these
   loop sizes anyway), so a run that matches at 0.1 dpa keeps growing and any
   naive scaling would be confidently wrong.  Bridging LF to experimental
   conditions is precisely the job of the multi-fidelity emulator (plan Tier 4,
   surrogate.py + calibrate.py), which is not built.  Emitting a column labelled
   "extrapolated" before that exists would be inventing data.

2. POSTERIOR UNCERTAINTY.  Also absent.  Tier 2 produces SENSITIVITY (Sobol
   S_i, S_i^T -- which parameters matter), not UNCERTAINTY (posterior spread on
   theta given the data).  What these tables can honestly show is the ENSEMBLE
   SPREAD -- p05/median/p95 of each observable over the prior box -- which is a
   prior-predictive spread, not a posterior.  They are different quantities and
   conflating them would overstate what the campaign knows.

3. sigma_model.  The plan expects model error to dominate sigma_exp for f_100.
   The convention spread IS computable here (f_100 is emitted at four TEM
   cutoffs) and is reported as a floor on sigma_model, but the full model-error
   term belongs to calibration.
make_tables.py — emit the verification tables from the campaign board.

    python make_tables.py            # markdown to stdout
    python make_tables.py --latex    # LaTeX bodies
    python make_tables.py --out FILE # write markdown to FILE

This is plan S3.5's reporting helper.  It reads the published records and
REFUSES to print a value from a run that missed its comparison dose (S3.4.1):
such a row appears in a "did not reach" line with the dose it achieved, never as
a metric.  The rule is mechanical here rather than a matter of discipline.

Table 4 ships as the NO-COARSENING variant.  The production-configuration exact
arm was attempted three times and abandoned each time (see S3 note below); the
NC variant is the one where both arms provably solve identical equations, which
is what a verification table requires.

Function Documentation

◆ _s()

make_tables._s (   v)
protected

Definition at line 109 of file make_tables.py.

◆ board()

dict make_tables.board ( )

Definition at line 43 of file make_tables.py.

◆ cell()

make_tables.cell (   rec,
  dose_key 
)
The scored block for a run, or None when it may not be reported.

Definition at line 94 of file make_tables.py.

◆ load_results()

make_tables.load_results ( Path  results_dir)

Definition at line 95 of file make_tables.py.

◆ main()

make_tables.main (   argv = None)

Definition at line 119 of file make_tables.py.

◆ nc_reference()

make_tables.nc_reference ( )
Re-score the 2026-09-07 discrete arm from its own saved trajectory.

Definition at line 54 of file make_tables.py.

◆ read_design()

make_tables.read_design ( Path  design)

Definition at line 84 of file make_tables.py.

◆ reference_run_row()

make_tables.reference_run_row ( )

Definition at line 76 of file make_tables.py.

◆ simple_table()

make_tables.simple_table (   B,
  md,
  title,
  subtitle,
  rows,
  dose_key 
)

Definition at line 135 of file make_tables.py.

◆ table4()

make_tables.table4 (   B,
  md 
)

Definition at line 104 of file make_tables.py.

Variable Documentation

◆ ADMIN

list make_tables.ADMIN
Initial value:
1= ["admissible", "grid_limited", "starved", "dose_reached",
2 "occ_100", "occ_111", "pile_100", "pile_111",
3 "d_over_ceiling_100", "d_ceiling_100_nm", "delta_FP", "delta_He",
4 "solver_rc", "wall_s", "error"]

Definition at line 75 of file make_tables.py.

◆ DT

make_tables.DT = HERE.parent

Definition at line 29 of file make_tables.py.

◆ HERE

make_tables.HERE = Path(__file__).resolve().parent

Definition at line 67 of file make_tables.py.

◆ MOD

make_tables.MOD = DT.parent

Definition at line 30 of file make_tables.py.

◆ NC_REF_GLOB

make_tables.NC_REF_GLOB = str(MOD / "output" / "20260907_093333_T4_D_4k_*" / "plots" / "plot_data.pkl")

Definition at line 40 of file make_tables.py.

◆ OBSERVABLES

list make_tables.OBSERVABLES
Initial value:
1= ["N_loops_100", "d_100_nm", "d_100_content_nm", "mean_n_100",
2 "N_loops_111", "d_111_nm", "mean_n_111",
3 "f_100_number", "f_100_content",
4 "f_100_tem_0p8", "f_100_tem_1", "f_100_tem_1p25", "f_100_tem_1p5",
5 "N_100_visible", "N_111_visible", "N_voids", "mean_n_v",
6 "d_cavity_nm", "S_inventory"]

Definition at line 69 of file make_tables.py.

◆ PROV

list make_tables.PROV
Initial value:
1= ["machine_id", "git_sha", "solver_sha256", "workbook_sha256",
2 "design_sha256", "run_cfg_sha", "theta_hash"]

Definition at line 79 of file make_tables.py.

◆ REF_RUN_GLOB

make_tables.REF_RUN_GLOB
Initial value:
1= str(MOD / "output" /
2 "20260906_063055_full_system_bin_moment_CD_fission_I80000V20000_im5vm5"
3 / "plots" / "plot_data.pkl")

Definition at line 71 of file make_tables.py.

◆ REPO

make_tables.REPO = MOD.parent

Definition at line 31 of file make_tables.py.

◆ SYNC

str make_tables.SYNC = HERE / ".sync" / "claims"

Definition at line 36 of file make_tables.py.

◆ TEM_COLS

list make_tables.TEM_COLS = ["f_100_tem_0p8", "f_100_tem_1", "f_100_tem_1p25", "f_100_tem_1p5"]

Definition at line 81 of file make_tables.py.