merge/model-development-into-main #2
No files matched your search
@@ -53,6 +53,20 @@ class TestMqlFullStateComparisonRun:
|
|||||||
def signal_count(self) -> int:
|
def signal_count(self) -> int:
|
||||||
return len(self.output.data_paths)
|
return len(self.output.data_paths)
|
||||||
|
|
||||||
|
def metrics_by_max_abs_error(self):
|
||||||
|
return tuple(
|
||||||
|
sorted(
|
||||||
|
self.comparison.metrics,
|
||||||
|
key=lambda metric: metric.max_abs_error,
|
||||||
|
reverse=True,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def largest_abs_error_metric(self):
|
||||||
|
metrics = self.metrics_by_max_abs_error()
|
||||||
|
return metrics[0] if metrics else None
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class TestMqlFullStateComparisonPathConfig:
|
class TestMqlFullStateComparisonPathConfig:
|
||||||
@@ -175,7 +189,14 @@ def format_test_mql_full_state_comparison_summary(
|
|||||||
f"Max absolute error: {run.comparison.max_abs_error}",
|
f"Max absolute error: {run.comparison.max_abs_error}",
|
||||||
f"Max relative error: {run.comparison.max_rel_error}",
|
f"Max relative error: {run.comparison.max_rel_error}",
|
||||||
]
|
]
|
||||||
for metric in run.comparison.metrics:
|
largest_metric = run.largest_abs_error_metric
|
||||||
|
if largest_metric is not None:
|
||||||
|
lines.append(
|
||||||
|
"Largest absolute error: "
|
||||||
|
f"{largest_metric.data_path}={largest_metric.max_abs_error}"
|
||||||
|
)
|
||||||
|
lines.append("Metrics by max absolute error:")
|
||||||
|
for metric in run.metrics_by_max_abs_error():
|
||||||
lines.append(
|
lines.append(
|
||||||
f" - {metric.data_path}: max_abs_error={metric.max_abs_error}, "
|
f" - {metric.data_path}: max_abs_error={metric.max_abs_error}, "
|
||||||
f"final_abs_error={metric.final_abs_error}"
|
f"final_abs_error={metric.final_abs_error}"
|
||||||
|
|||||||
@@ -46,9 +46,15 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase):
|
|||||||
self.assertEqual(run.sample_count, 1)
|
self.assertEqual(run.sample_count, 1)
|
||||||
self.assertEqual(run.signal_count, 2)
|
self.assertEqual(run.signal_count, 2)
|
||||||
self.assertAlmostEqual(run.comparison.max_abs_error, 0.0, delta=1.0e-8)
|
self.assertAlmostEqual(run.comparison.max_abs_error, 0.0, delta=1.0e-8)
|
||||||
|
self.assertEqual(
|
||||||
|
run.metrics_by_max_abs_error()[0].data_path,
|
||||||
|
"press@pn_c1_8",
|
||||||
|
)
|
||||||
self.assertTrue(csv_summary_exists)
|
self.assertTrue(csv_summary_exists)
|
||||||
self.assertIn("Mode: Python 132 full-state closure comparison", summary)
|
self.assertIn("Mode: Python 132 full-state closure comparison", summary)
|
||||||
self.assertIn("Compared signals: 2", summary)
|
self.assertIn("Compared signals: 2", summary)
|
||||||
|
self.assertIn("Largest absolute error: press@pn_c1_8=", summary)
|
||||||
|
self.assertIn("Metrics by max absolute error:", summary)
|
||||||
self.assertIn("python.press@pn_c1_8", csv_header)
|
self.assertIn("python.press@pn_c1_8", csv_header)
|
||||||
self.assertIn("amesim.vol1@pn_brp2_8", csv_header)
|
self.assertIn("amesim.vol1@pn_brp2_8", csv_header)
|
||||||
|
|
||||||
@@ -95,6 +101,8 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase):
|
|||||||
self.assertIn("Model: test_mql", summary)
|
self.assertIn("Model: test_mql", summary)
|
||||||
self.assertIn("Output schema signals: 858", summary)
|
self.assertIn("Output schema signals: 858", summary)
|
||||||
self.assertIn("Compared signals: 1", summary)
|
self.assertIn("Compared signals: 1", summary)
|
||||||
|
self.assertIn("Largest absolute error: press@pn_c1_8=", summary)
|
||||||
|
self.assertIn("Metrics by max absolute error:", summary)
|
||||||
self.assertTrue(summary.endswith("\n"))
|
self.assertTrue(summary.endswith("\n"))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user