From 12efe84ea8e43ce495bb6599a88fe46c842079a2 Mon Sep 17 00:00:00 2001 From: Timothy Nunn Date: Tue, 23 Sep 2025 11:48:59 +0100 Subject: [PATCH 1/2] Output run type only for evaluation mfiles --- process/io/plot_proc.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py index ef60457917..9c9c2ceb6f 100644 --- a/process/io/plot_proc.py +++ b/process/io/plot_proc.py @@ -59,6 +59,7 @@ vacuum_vessel_geometry_single_null, ) from process.impurity_radiation import read_impurity_file +from process.io.mfile import MFileErrorClass from process.objectives import OBJECTIVE_NAMES from process.superconducting_tf_coil import SUPERCONDUCTING_TF_TYPES @@ -7027,7 +7028,9 @@ def plot_header(axis, mfile_data, scan): (f"!{mfile_data.data['date'].get_scan(-1)}", "Date:", ""), (f"!{mfile_data.data['time'].get_scan(-1)}", "Time:", ""), (f"!{mfile_data.data['username'].get_scan(-1)}", "User:", ""), - ( + ("!Evaluation", "Run type", "") + if isinstance(mfile_data.data["minmax"], MFileErrorClass) + else ( f"!{OBJECTIVE_NAMES[abs(int(mfile_data.data['minmax'].get_scan(-1)))]}", "Optimising:", "", From c3ad5b93eb9bced833559281912b5e8f348a4043 Mon Sep 17 00:00:00 2001 From: Timothy Nunn Date: Fri, 3 Oct 2025 16:44:59 +0100 Subject: [PATCH 2/2] Correct PROCESS run summary for evalulation MFiles --- process/io/plot_proc.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py index 9c9c2ceb6f..646de2e030 100644 --- a/process/io/plot_proc.py +++ b/process/io/plot_proc.py @@ -16,6 +16,7 @@ import argparse import json import os +import textwrap from argparse import RawTextHelpFormatter from importlib import resources @@ -10756,7 +10757,7 @@ def plot_cover_page(axis, mfile_data, scan, fig, colour_scheme): branch_name = mfile_data.data["branch_name"].get_scan(-1) fileprefix = mfile_data.data["fileprefix"].get_scan(-1) optmisation_switch = mfile_data.data["ioptimz"].get_scan(-1) - minmax_switch = mfile_data.data["minmax"].get_scan(-1) + minmax_switch = mfile_data.data["minmax"].get_scan(-1) or "N/A" ifail = mfile_data.data["ifail"].get_scan(-1) nvars = mfile_data.data["nvar"].get_scan(-1) # Objective_function_name @@ -10764,14 +10765,20 @@ def plot_cover_page(axis, mfile_data, scan, fig, colour_scheme): # Square_root_of_the_sum_of_squares_of_the_constraint_residuals sqsumsq = mfile_data.data["sqsumsq"].get_scan(-1) # VMCON_convergence_parameter - convergence_parameter = mfile_data.data["convergence_parameter"].get_scan(-1) + convergence_parameter = ( + mfile_data.data["convergence_parameter"].get_scan(-1) or "N/A" + ) # Number_of_optimising_solver_iterations - nviter = mfile_data.data["nviter"].get_scan(-1) + nviter = int(mfile_data.data["nviter"].get_scan(-1)) or "N/A" # Objective name with minimising/maximising - if minmax_switch >= 0: + if isinstance(minmax_switch, str): + objective_text = "" + elif minmax_switch >= 0: + minmax_switch = int(minmax_switch) objective_text = f"• Minimising {objf_name}" else: + minmax_switch = int(minmax_switch) objective_text = f"• Maximising {objf_name}" axis.text( @@ -10810,15 +10817,10 @@ def plot_cover_page(axis, mfile_data, scan, fig, colour_scheme): # Box 2: File/Branch Info # Wrap the whole "Branch Name: ..." line if too long max_line_len = 60 - branch_line = f"• Branch Name: {branch_name}" - if isinstance(branch_line, str) and len(branch_line) > max_line_len: - # Insert a newline every max_line_len characters - branch_line = "\n".join([ - branch_line[i : i + max_line_len] - for i in range(0, len(branch_line), max_line_len) - ]) + branch_line = textwrap.fill(f"• Branch Name: {branch_name}", max_line_len) + fileprefix = textwrap.fill(f"File Prefix: {fileprefix}", max_line_len) - file_info = f"• Tag Number: {tagno}\n{branch_line}\n• File Prefix: {fileprefix}" + file_info = f"• Tag Number: {tagno}\n{branch_line}\n• {fileprefix}" axis.text( 0.1, 0.57, @@ -10838,13 +10840,13 @@ def plot_cover_page(axis, mfile_data, scan, fig, colour_scheme): # Box 3: Run Settings settings_info = ( f"• Optimisation Switch: {int(optmisation_switch)}\n" - f"• Figure of Merit Switch (minmax): {int(minmax_switch)}\n" + f"• Figure of Merit Switch (minmax): {minmax_switch}\n" f"• Fail Status (ifail): {int(ifail)}\n" f"• Number of Iteration Variables: {int(nvars)}\n" f"{objective_text}\n" f"• Constraint Residuals (sqrt sum sq): {sqsumsq}\n" f"• Convergence Parameter: {convergence_parameter}\n" - f"• Solver Iterations: {int(nviter)}" + f"• Solver Iterations: {nviter}" ) axis.text( 0.1,