|
3 | 3 | import textwrap |
4 | 4 | import unittest |
5 | 5 | import zipfile |
| 6 | +import numpy as np |
6 | 7 | import pandas |
7 | 8 | from onnx_diagnostic.ext_test_case import ExtTestCase, hide_stdout |
8 | 9 | from onnx_diagnostic.helpers.log_helper import ( |
@@ -46,7 +47,6 @@ def test_cube_logs_load_df(self): |
46 | 47 | cube = CubeLogs(df) |
47 | 48 | text = str(cube) |
48 | 49 | self.assertIsInstance(text, str) |
49 | | - self.assertRaise(lambda: cube.load(verbose=1), AssertionError) |
50 | 50 | cube = CubeLogs( |
51 | 51 | self.df1(), |
52 | 52 | recent=True, |
@@ -229,6 +229,55 @@ def test_cube_logs_performance(self): |
229 | 229 | ) |
230 | 230 | self.assertExists(output) |
231 | 231 |
|
| 232 | + def test_duplicate(self): |
| 233 | + df = pandas.DataFrame( |
| 234 | + [ |
| 235 | + dict(date="2025/01/01", time_engine=0.5, model_name="A", version_engine="0.5"), |
| 236 | + dict(date="2025/01/01", time_engine=0.5, model_name="A", version_engine="0.5"), |
| 237 | + ] |
| 238 | + ) |
| 239 | + cube = CubeLogs(df) |
| 240 | + self.assertRaise(lambda: cube.load(), AssertionError) |
| 241 | + CubeLogs(df, recent=True).load() |
| 242 | + |
| 243 | + def test_historical(self): |
| 244 | + # case 1 |
| 245 | + df = pandas.DataFrame( |
| 246 | + [ |
| 247 | + dict(date="2025/01/01", time_p=0.51, exporter="E1", m_name="A", m_cls="CA"), |
| 248 | + dict(date="2025/01/02", time_p=0.62, exporter="E1", m_name="A", m_cls="CA"), |
| 249 | + dict(date="2025/01/01", time_p=0.53, exporter="E2", m_name="A", m_cls="CA"), |
| 250 | + dict(date="2025/01/02", time_p=0.64, exporter="E2", m_name="A", m_cls="CA"), |
| 251 | + dict(date="2025/01/01", time_p=0.55, exporter="E2", m_name="B", m_cls="CA"), |
| 252 | + dict(date="2025/01/02", time_p=0.66, exporter="E2", m_name="B", m_cls="CA"), |
| 253 | + ] |
| 254 | + ) |
| 255 | + cube = CubeLogs(df, keys=["^m_*", "exporter"]).load() |
| 256 | + view, view_def = cube.view(CubeViewDef(["^m_.*"], ["^time_.*"]), return_view_def=True) |
| 257 | + self.assertEqual( |
| 258 | + "CubeViewDef(key_index=['^m_.*'], values=['^time_.*'])", repr(view_def) |
| 259 | + ) |
| 260 | + self.assertEqual(["METRICS", "exporter", "date"], view.columns.names) |
| 261 | + got = view.values.ravel() |
| 262 | + self.assertEqual( |
| 263 | + sorted([0.51, 0.62, 0.53, 0.64, -1, -1, 0.55, 0.66]), |
| 264 | + sorted(np.where(np.isnan(got), -1, got).tolist()), |
| 265 | + ) |
| 266 | + |
| 267 | + # case 2 |
| 268 | + df = pandas.DataFrame( |
| 269 | + [ |
| 270 | + dict(date="2025/01/02", time_p=0.62, exporter="E1", m_name="A", m_cls="CA"), |
| 271 | + dict(date="2025/01/02", time_p=0.64, exporter="E2", m_name="A", m_cls="CA"), |
| 272 | + dict(date="2025/01/01", time_p=0.51, exporter="E1", m_name="B", m_cls="CA"), |
| 273 | + dict(date="2025/01/02", time_p=0.66, exporter="E2", m_name="B", m_cls="CA"), |
| 274 | + ] |
| 275 | + ) |
| 276 | + cube = CubeLogs(df, keys=["^m_*", "exporter"]).load() |
| 277 | + view, view_def = cube.view(CubeViewDef(["^m_.*"], ["^time_.*"]), return_view_def=True) |
| 278 | + self.assertEqual((2, 3), view.shape) |
| 279 | + self.assertEqual(["METRICS", "exporter", "date"], view.columns.names) |
| 280 | + |
232 | 281 |
|
233 | 282 | if __name__ == "__main__": |
234 | 283 | unittest.main(verbosity=2) |
0 commit comments