merge/model-development-into-main #2

Merged
lujingze merged 126 commits from merge/model-development-into-main into main 2026-07-31 09:52:44 +08:00
2 changed files with 30 additions and 1 deletions
Showing only changes of commit 3951bc372c - Show all commits

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"))