diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2021-11-01 10:18:53 +0100 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2021-11-01 10:18:53 +0100 |
commit | 3a351ccaae5d497f5c6e6b6288620f88cc0c6e33 (patch) | |
tree | 6b0d8beb02050bf24ffa3783b774b3620f10c4ea | |
parent | 49c2c463ff6b454c944af3b023139ad4448c8ce4 (diff) |
add static & param model output to analyze-kconfig
-rwxr-xr-x | bin/analyze-archive.py | 30 | ||||
-rwxr-xr-x | bin/analyze-kconfig.py | 18 | ||||
-rw-r--r-- | lib/cli.py | 22 |
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"], @@ -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"]) |