Files
ovf/test/gvf_worst_rms_error.py
2025-10-02 04:35:41 -04:00

98 lines
4.0 KiB
Python

from ovf.core.GVFManager import GVFManager
import numpy as np
import logging
def get_logger():
logger = logging.getLogger("gvf_worst_rms_error")
logger.setLevel(logging.INFO)
if not logger.hasHandlers():
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
return logger
logger = get_logger()
gvf = GVFManager()
gvf.load_from_datasets("examples/data/mlin.json",npoles_cplx=2,max_points=20,parameter_type="s",min_freqs=10e9,max_freqs=200e9)
gvf.save("outputs/mlin_gvf_2pole_s.pkl")
# gvf = GVFManager.load("outputs/mlin_gvf_2pole_s.pkl")
max_rms_error_info = {
"max_rms_error": 0.0,
"max_rms_error_l1": 0.0,
"max_rms_error_lmax": 0.0,
"max_rms_error_geom": None,
"max_rms_index": 0
}
max_rms_error_l1_info = {
"max_rms_error": 0.0,
"max_rms_error_l1": 0.0,
"max_rms_error_lmax": 0.0,
"max_rms_error_geom": None,
"max_rms_index": 0
}
max_rms_error_lmax_info = {
"max_rms_error": 0.0,
"max_rms_error_l1": 0.0,
"max_rms_error_lmax": 0.0,
"max_rms_error_geom": None,
"max_rms_index": 0
}
for ds in gvf.datasets:
rmse = ds.vf_manager.eigenval_rms_error[-1]
rmse_l1 = ds.vf_manager.eigenval_rms_error_l1[-1]
rmse_lmax = ds.vf_manager.eigenval_rms_error_lmax[-1]
# logger.info(f"Dataset: {ds.geometries}, RMS Error: {rmse}, RMS Error L1: {rmse_l1}, RMS Error Lmax: {rmse_lmax}")
logger.info(
f'W={ds.geometries["W"]},L={ds.geometries["L"]},rms={rmse},rms_l1={rmse_l1},rms_lmax={rmse_lmax},id={ds.id}',
)
if rmse > max_rms_error_info["max_rms_error"]:
max_rms_error_info["max_rms_error"] = rmse
max_rms_error_info["max_rms_error_l1"] = rmse_l1
max_rms_error_info["max_rms_error_lmax"] = rmse_lmax
max_rms_error_info["max_rms_error_geom"] = ds.geometries
max_rms_error_info["max_rms_index"] = ds.id
if rmse_l1 > max_rms_error_l1_info["max_rms_error_l1"]:
max_rms_error_l1_info["max_rms_error"] = rmse
max_rms_error_l1_info["max_rms_error_l1"] = rmse_l1
max_rms_error_l1_info["max_rms_error_lmax"] = rmse_lmax
max_rms_error_l1_info["max_rms_error_geom"] = ds.geometries
max_rms_error_l1_info["max_rms_index"] = ds.id
if rmse_lmax > max_rms_error_lmax_info["max_rms_error_lmax"]:
max_rms_error_lmax_info["max_rms_error"] = rmse
max_rms_error_lmax_info["max_rms_error_l1"] = rmse_l1
max_rms_error_lmax_info["max_rms_error_lmax"] = rmse_lmax
max_rms_error_lmax_info["max_rms_error_geom"] = ds.geometries
max_rms_error_lmax_info["max_rms_index"] = ds.id
print(f"Maximum RMS error across datasets: {max_rms_error_info}")
print(f"Geometry with maximum RMS error: {max_rms_error_info['max_rms_error_geom']}")
print(f"Index of dataset with maximum RMS error: {max_rms_error_info['max_rms_index']}")
print(f"Maximum RMS L1 error across datasets: {max_rms_error_l1_info}")
print(f"Geometry with maximum RMS L1 error: {max_rms_error_l1_info['max_rms_error_geom']}")
print(f"Index of dataset with maximum RMS L1 error: {max_rms_error_l1_info['max_rms_index']}")
print(f"Maximum RMS Lmax error across datasets: {max_rms_error_lmax_info}")
print(f"Geometry with maximum RMS Lmax error: {max_rms_error_lmax_info['max_rms_error_geom']}")
print(f"Index of dataset with maximum RMS Lmax error: {max_rms_error_lmax_info['max_rms_index']}")
gvf.plot_vf_responses_with_index("outputs/mlin_gvf_2pole_s_responses",int(max_rms_error_info['max_rms_index']))
gvf.plot_vf_responses_with_index("outputs/mlin_gvf_2pole_s_responses_l1",int(max_rms_error_l1_info['max_rms_index']))
gvf.plot_vf_responses_with_index("outputs/mlin_gvf_2pole_s_responses_lmax",int(max_rms_error_lmax_info['max_rms_index']))
gvf.plot_poles_in_2d("outputs/mlin_gvf_2pole_s_poles.html")
gvf.plot_vf_responses_with_index("outputs/mlin_gvf_2pole_s_responses",1399)