98 lines
4.0 KiB
Python
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)
|
|
|