summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2021-11-01 10:18:53 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2021-11-01 10:18:53 +0100
commit3a351ccaae5d497f5c6e6b6288620f88cc0c6e33 (patch)
tree6b0d8beb02050bf24ffa3783b774b3620f10c4ea
parent49c2c463ff6b454c944af3b023139ad4448c8ce4 (diff)
add static & param model output to analyze-kconfig
-rwxr-xr-xbin/analyze-archive.py30
-rwxr-xr-xbin/analyze-kconfig.py18
-rw-r--r--lib/cli.py22
3 files changed, 44 insertions, 26 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py
index bd523c8..0835c90 100755
--- a/bin/analyze-archive.py
+++ b/bin/analyze-archive.py
@@ -345,28 +345,6 @@ def plot_traces(preprocessed_data, sot_name):
)
-def print_analyticinfo(prefix, info):
- empty = ""
- print(f"{prefix}: {info.model_function}")
- print(f"{empty:{len(prefix)}s} {info.model_args}")
-
-
-def print_splitinfo(param_names, info, prefix=""):
- if type(info) is SplitFunction:
- for k, v in info.child.items():
- if info.param_index < len(param_names):
- param_name = param_names[info.param_index]
- else:
- param_name = f"arg{info.param_index - len(param_names)}"
- print_splitinfo(param_names, v, f"{prefix} {param_name}={k}")
- elif type(info) is AnalyticFunction:
- print_analyticinfo(prefix, info)
- elif type(info) is StaticFunction:
- print(f"{prefix}: {info.value}")
- else:
- print(f"{prefix}: UNKNOWN")
-
-
if __name__ == "__main__":
ignored_trace_indexes = []
@@ -917,9 +895,9 @@ if __name__ == "__main__":
for attribute in model.attributes(state):
info = param_info(state, attribute)
if type(info) is AnalyticFunction:
- print_analyticinfo(f"{state:10s} {attribute:15s}", info)
+ dfatool.cli.print_analyticinfo(f"{state:10s} {attribute:15s}", info)
elif type(info) is SplitFunction:
- print_splitinfo(
+ dfatool.cli.print_splitinfo(
model.parameters, info, f"{state:10s} {attribute:15s}"
)
elif type(info) is SubstateFunction:
@@ -928,9 +906,9 @@ if __name__ == "__main__":
for attribute in model.attributes(trans):
info = param_info(trans, attribute)
if type(info) is AnalyticFunction:
- print_analyticinfo(f"{trans:10s} {attribute:15s}", info)
+ dfatool.cli.print_analyticinfo(f"{trans:10s} {attribute:15s}", info)
elif type(info) is SplitFunction:
- print_splitinfo(
+ dfatool.cli.print_splitinfo(
model.parameters, info, f"{trans:10s} {attribute:15s}"
)
elif type(info) is SubstateFunction:
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index 1db43da..be52752 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -263,6 +263,24 @@ def main():
else:
lut_quality = None
+ if "static" in args.show_model or "all" in args.show_model:
+ print("--- static model ---")
+ for name in model.names:
+ for attribute in model.attributes(name):
+ dfatool.cli.print_static(model, static_model, name, attribute)
+
+ if "param" in args.show_model or "all" in args.show_model:
+ print("--- param model ---")
+ for name in model.names:
+ for attribute in model.attributes(name):
+ info = param_info(name, attribute)
+ if type(info) is dfatool.cli.AnalyticFunction:
+ dfatool.cli.print_analyticinfo(f"{name:20s} {attribute:15s}", info)
+ elif type(info) is dfatool.cli.SplitFunction:
+ dfatool.cli.print_splitinfo(
+ model.parameters, info, f"{name:20s} {attribute:15s}"
+ )
+
if "table" in args.show_quality or "all" in args.show_quality:
dfatool.cli.model_quality_table(
["static", "parameterized", "LUT"],
diff --git a/lib/cli.py b/lib/cli.py
index 2972ca5..bb1b111 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -33,6 +33,28 @@ def print_static(model, static_model, name, attribute):
)
+def print_analyticinfo(prefix, info):
+ empty = ""
+ print(f"{prefix}: {info.model_function}")
+ print(f"{empty:{len(prefix)}s} {info.model_args}")
+
+
+def print_splitinfo(param_names, info, prefix=""):
+ if type(info) is SplitFunction:
+ for k, v in info.child.items():
+ if info.param_index < len(param_names):
+ param_name = param_names[info.param_index]
+ else:
+ param_name = f"arg{info.param_index - len(param_names)}"
+ print_splitinfo(param_names, v, f"{prefix} {param_name}={k}")
+ elif type(info) is AnalyticFunction:
+ print_analyticinfo(prefix, info)
+ elif type(info) is StaticFunction:
+ print(f"{prefix}: {info.value}")
+ else:
+ print(f"{prefix}: UNKNOWN")
+
+
def format_quality_measures(result):
if "smape" in result:
return "{:6.2f}% / {:9.0f}".format(result["smape"], result["mae"])