Deborah.RebekahMiriam.JLD2SaverRebekahMiriam
Deborah.RebekahMiriam.JLD2SaverRebekahMiriam.save_miriam_results — Methodsave_miriam_results(
filepath::String,
summary::Dict,
summary_trace_meas::Dict,
summary_moment_meas::Dict,
summary_cumulant_meas::Dict,
kappa_list::Vector{String},
rw_data::Dict,
nlsolve_status::Dict,
labels::Vector{String},
trains::Vector{String}
) -> NothingPersist Miriam outputs to a single .jld2 file:
- interpolation results
summary(keyword-indexed), - three measurement-style summaries from single-ensemble measurement points:
summary_trace_meas,summary_moment_meas,summary_cumulant_meas, - the $\kappa$ token list
kappa_list(e.g.,["13570","13575","13580", ...]), - the reweighting payload
rw_data, - the
NLsolve.jlconvergence payloadnlsolve_status, - and index metadata
labels,trains.
Arguments
filepath: DestinationJLD2path (e.g.,"out/miriam_results.jld2"). Parent directories must exist.summary: Dictionary produced byDeborah.RebekahMiriam.SummaryLoaderRebekahMiriam.load_miriam_summary(keyword-based / interpolation results). Typical schema:Dict{Tuple{Symbol,Symbol,Symbol,String}, Matrix{Float64}}with key(field, stat, tag, keyword):field$\in$ observed fields (e.g.,:cond,:susp,:skew,:kurt,:bind,:kappa_t)stat$\in$ (:avg,:err)tag$\in$ input tags (e.g.,:RWP2)keyword$\in$ With which the interpolation is done?
(length(labels), length(trains)).summary_trace_meas: Measurement summary for trace observables (e.g.,:trM1..:trM4). Schema:Dict{Tuple{Symbol,Symbol,Symbol,String}, Matrix{Float64}}with key(field, stat, tag, kappa_str)and matrices sized(length(labels), length(trains)).summary_moment_meas: Measurement summary for moment observables (e.g.,:Q1,:Q2,:Q3,:Q4). Same schema/key shape assummary_trace_meas.summary_cumulant_meas: Measurement summary for cumulant observables. Same schema/key shape assummary_trace_meas. Thefieldset depends onfirst_block_keys.kappa_list::Vector{String}: Ordered list of kappa tokens used to index the measurement summaries (e.g.,["13570","13575","13580"]). Each token corresponds to a numeric $\kappa$ of0.<token>(e.g.,"13580"→\kappa = 0.13580). The order should match how the summaries were populated.rw_data: Reweighting payload returned byDeborah.RebekahMiriam.SummaryLoaderRebekahMiriam.load_all_rw_data.nlsolve_status:NLsolve.jlconvergence info per(label, train)and solver name. Schema:Dict{String, Dict{String, Dict{String, NamedTuple{(:converged, :residual_norm), Tuple{Bool, Float64}}}}}Access pattern:nlsolve_status[label][train][solver] => (converged, residual_norm).labels: Vector ofLBPlabel strings; defines the row axis of all matrices.trains: Vector ofTRPpercentage strings; defines the column axis of all matrices.
Behavior
Writes a single JLD2 file containing:
summary :: Dictsummary_trace_meas :: Dictsummary_moment_meas :: Dictsummary_cumulant_meas :: Dictkappa_list :: Vector{String}rw_data :: Dictnlsolve_status :: Dict# ← addedlabels :: Vector{String}trains :: Vector{String}
Notes
- Measurement dictionaries are kappa-indexed with keys
(field, :avg/:err, tag, kappa_str), wherekappa_str$\in$kappa_list. Downstream plotting/heatmap utilities may display $\kappa$ as0.<kappa_str>. - All matrices are indexed as
(label_index, train_index)and must align withlabels/trains. - The function overwrites
filepathif it already exists and does not create parent directories. nlsolve_statusenables downstream convergence heatmaps: e.g., mark cells white/black byconverged, and annotate black cells withresidual_norm.
Example
save_miriam_results(
"out/miriam_results.jld2",
summary, # from load_miriam_summary (legacy, optional)
summary_trace_meas, # from load_miriam_summary_for_measurement (traces)
summary_moment_meas, # from load_miriam_summary_for_measurement (moments)
summary_cumulant_meas, # from load_miriam_summary_for_measurement (cumulants)
kappa_list, # e.g., ["13570","13575","13580"]
rw_data,
nlsolve_status,
labels, trains
)
# Later:
data = JLD2.load("out/miriam_results.jld2")
ks_tokens = data["kappa_list"] # ["13570","13575","13580", ...]
trace_meas = data["summary_trace_meas"]
moment_meas = data["summary_moment_meas"]
cum_meas = data["summary_cumulant_meas"]
nls_status = data["nlsolve_status"] # Dict for convergence heatmapsReturns
Nothing. Writes to disk.