Deborah.RebekahMiriam
Deborah.RebekahMiriam — Modulemodule RebekahMiriamDeborah.RebekahMiriam — Plotting, comparison, and JLD2 I/O helpers tailored to Deborah.Miriam outputs.
Deborah.RebekahMiriam provides a Deborah.Miriam-specific companion to Deborah.Rebekah:
- loads multi-ensemble
Deborah.Miriamsummaries (interpolation style and measurement-at-single-$\kappa$ style), - computes overlap/ERR dictionaries and similarity metrics (Bhattacharyya, Hellinger/JSD) against a baseline,
- renders
CHK&ERR/BC/JSDheatmaps on the (LBP$\times$TRP) grid, - plots
P1/P2vs original alongTRPat fixedLBP, - visualizes full reweighting curves with uncertainty bands and interpolation points,
- and persists consolidated results into a single
.jld2file.
Scope & Responsibilities
- Comparison utilities Build per-observable dictionaries of overlap codes (
CHK$\in${0,1,2}) and error ratios vs. a reference tag (e.g.,RWBS), and compute Bhattacharyya/Hellinger matrices for (LBP$\times$TRP) cells. - Heatmaps (
PyPlot.jl) Render pairedCHK/ERRheatmaps and single-mapBC/JSDheatmaps, with $\LaTeX$ ticks, optional annotations, contour lines, and cropped PDF export. PXvsBScurves FlattenDeborah.Miriammatrices to a legacy-like dict and plotP1/P2/original vsTRPat fixedLBP, for either interpolation or measurement-at-single-$\kappa$ workflows.- Reweighting curve plot Show continuous $\kappa$-scans (
RWBS/RWP1/RWP2) with bands, discrete point estimates, and final interpolated values at the chosen criterion. JLD2saving Persist interpolation summaries and $\kappa$-indexed measurement summaries, pluskappa_list,rw_data,labels,trainsinto one.jld2.- Summary loading Read
.datsummaries into(field, :avg|:err, tag, keyword)or(… , kappa_str)matrices; derive $\kappa$ token lists from ensemble names.
Key Components
ComparisonRebekahMiriam.build_overlap_and_error_dicts,ComparisonRebekahMiriam.build_overlap_and_error_dicts_for_measurements,ComparisonRebekahMiriam.build_bhattacharyya_dicts— constructCHK/ERR/BCgrids.HeatmapsRebekahMiriam.render_overlap_and_error_heatmaps,HeatmapsRebekahMiriam.render_bhattacharyya_heatmap,HeatmapsRebekahMiriam.render_jsd_heatmap—CHK/ERR/BC/JSDvisuals with $\LaTeX$ axes and optional contours.PXvsBSPlotterRebekahMiriam.plot_PX_BS_vs_trains,PXvsBSPlotterRebekahMiriam.plot_PX_BS_vs_trains_for_measurements—P1/P2vsBScurves acrossTRP.ReweightingPlotRebekahMiriam.plot_reweighting_pyplot— $\kappa$-scan curves $+$ interpolated points (RWBS/P1/P2).SummaryLoaderRebekahMiriam.load_miriam_summary.JLD2SaverRebekahMiriam.save_miriam_results— single-file persistence.
Public API (typical entry points)
- Loading:
SummaryLoaderRebekahMiriam.load_miriam_summary/SummaryLoaderRebekahMiriam.load_miriam_summary_for_measurement→(Dict, kappa_list?). - Comparison:
ComparisonRebekahMiriam.build_overlap_and_error_dicts,ComparisonRebekahMiriam.build_bhattacharyya_dicts. - Plotting:
HeatmapsRebekahMiriam.render_bhattacharyya_heatmap,PXvsBSPlotterRebekahMiriam.plot_PX_BS_vs_trains,ReweightingPlotRebekahMiriam.plot_reweighting_pyplot. - Saving:
JLD2SaverRebekahMiriam.save_miriam_results.
Minimal Usage (REPL)
julia> using Deborah
julia> using Deborah.RebekahMiriam
# Load interpolation summary and build diagnostics
julia> new_dict = SummaryLoaderRebekahMiriam.load_miriam_summary(work, ens, group, overall, labels, trains, ["skew","kurt"], [:RWBS,:RWP1,:RWP2], [:cond,:susp,:skew,:kurt])
julia> chk, err = ComparisonRebekahMiriam.build_overlap_and_error_dicts(new_dict, [:cond,:susp,:skew,:kurt], ["skew","kurt"], [:RWP1,:RWP2], :RWBS, labels, trains) # CHK/ERR
julia> bc, _ = ComparisonRebekahMiriam.build_bhattacharyya_dicts(new_dict, [:cond], ["kurt"], [:RWP2], :RWBS, labels, trains)
# Visualize heatmaps
julia> HeatmapsRebekahMiriam.render_overlap_and_error_heatmaps(chk[(:cond,:RWP2,"kurt")], err[(:cond,:RWP2,"kurt")], N_lb_arr, N_tr_arr, :cond, :RWP2, "kurt", overall, figs_dir; save_file=true)
# P1/P2 vs BS along TRP at fixed LBP
julia> flat = PXvsBSPlotterRebekahMiriam.build_flat_plot_dict(:kurt, :RWBS, :RWP1, :RWP2, "kurt", new_dict)
julia> PXvsBSPlotterRebekahMiriam.plot_PX_BS_vs_trains("kurt", "RWBS", "RWP1", "RWP2", 25, flat, trains_int, labels_int, "kurt", overall, figs_dir; save_file=true)
# Save a consolidated JLD2
julia> JLD2SaverRebekahMiriam.save_miriam_results("out/miriam_results.jld2", legacy_summary, trace_meas, moment_meas, cumulant_meas, kappa_list, rw_data, labels, trains)Notes
- Two workflows are supported: (i) interpolation (keyword = guiding cumulant like
"kurt"), (ii) measurement-at-$\kappa$ (keyword = $\kappa$ token string like"13580"). Plotters/loaders handle both. - Heatmaps assume integer percent ticks for
LBP/TRPand can annotate cells; PDFs are auto-cropped ifpdfcropis available. - All matrices are shaped
(num_labels, num_trains)and must align withlabels/trainsmetadata;CHKuses categorical codes,ERRis a ratio.