Skip to content

Commit

Permalink
use RegressionResult model in indicator
Browse files Browse the repository at this point in the history
  • Loading branch information
drewrip committed Jan 31, 2024
1 parent e781630 commit 7966e2c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 16 deletions.
7 changes: 4 additions & 3 deletions matrix_benchmarking/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,9 @@ def tostr(self):

class RegressionResult(ExclusiveModel):
kpi: str
setting: str
indicator: str
status: int
direction: Optional[int]
explanation: Optional[str]
details: Optional[dict[str, str]]
direction: Optional[int] = Field(default=None)
explanation: Optional[str] = Field(default=None)
details: Optional[dict[str, str]] = Field(default=None)
34 changes: 21 additions & 13 deletions matrix_benchmarking/regression/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from typing import Optional, Callable

import matrix_benchmarking.common as common
import matrix_benchmarking.models as models

def get_from_path(d, path):
return reduce(dict.get, path.split("."), d)
Expand All @@ -29,7 +30,6 @@ def __init__(
self.explanation = explanation
self.details = details


class RegressionIndicator:
"""
Assume the matrix that is passed in contains a prefiltered combination of settings,
Expand Down Expand Up @@ -82,13 +82,17 @@ def __init__(
def get_name(self):
return "UndefinedRegressionIndicator"

def analyze(self) -> list[dict]:

if not self.new_payload:
return [{"result": None, "kpi": None, "regression": vars(RegressionStatus(0, explanation="Not enough new data"))}]
def analyze(self) -> list[models.RegressionResult]:

if not self.lts_payloads:
return [{"result": None, "kpi": None, "regression": vars(RegressionStatus(0, explanation="Not enough LTS data"))}]
if not self.new_payload or not self.lts_payloads:
return [
models.RegressionResult(
kpi="",
setting="" if not self.x_var else self.x_var,
indicator=self.get_name(),
status=0
)
]

regression_results = []

Expand All @@ -107,12 +111,16 @@ def analyze(self) -> list[dict]:
continue


raw_results = self.regression_test(curr_values, lts_values)
stats = {
"kpi": kpi,
"indicator": self.get_name()
}
regression_results.append({**stats, **raw_results})
raw_results: RegressionStatus = self.regression_test(curr_values, lts_values)
result = models.RegressionResult(
kpi=kpi,
setting="" if not self.x_var else self.x_var,
indicator=self.get_name(),
direction=raw_results.direction,
explanation=raw_results.explanation,
details=raw_results.details
)
regression_results.append(result)

return regression_results

Expand Down

0 comments on commit 7966e2c

Please sign in to comment.