summaryrefslogtreecommitdiff
path: root/bin/analyze-archive.py
diff options
context:
space:
mode:
Diffstat (limited to 'bin/analyze-archive.py')
-rwxr-xr-xbin/analyze-archive.py53
1 files changed, 4 insertions, 49 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py
index 8b58478..268fd38 100755
--- a/bin/analyze-archive.py
+++ b/bin/analyze-archive.py
@@ -437,41 +437,6 @@ def print_splitinfo(param_names, info, prefix=""):
print(f"{prefix}: UNKNOWN")
-def _mogrify(function_str, parameter_names, regression_args):
- for i in range(len(regression_args)):
- function_str = function_str.replace(
- f"regression_arg({i})", str(regression_args[i])
- )
- for parameter_name in parameter_names:
- function_str = function_str.replace(
- f"parameter({parameter_name})", f"""param["{parameter_name}"]"""
- )
- for arg_num in range(10):
- function_str = function_str.replace(
- f"function_arg({arg_num})", f"args[{arg_num}]"
- )
- function_str = function_str.replace("np.", "Math.")
- return "#![modelfunction]" + function_str
-
-
-def mogrify(model):
- if type(model) is dict:
- if "functionStr" in model:
- model["function"] = _mogrify(
- model["functionStr"], model["parameterNames"], model["regressionModel"]
- )
- model.pop("functionStr")
- model.pop("parameterNames")
- model.pop("regressionModel")
- else:
- for k, v in model.items():
- model[k] = mogrify(v)
- elif type(model) is list:
- for i, elem in enumerate(model):
- model[i] = mogrify(model[i])
- return model
-
-
if __name__ == "__main__":
ignored_trace_indexes = []
@@ -1201,21 +1166,11 @@ if __name__ == "__main__":
"Note: v0 measurements do not embed the PTA used for benchmark generation. Estimating PTA from recorded observations."
)
json_model = model.to_json()
- mogrify(json_model)
json_model_str = json.dumps(json_model, indent=2, sort_keys=True, cls=NpEncoder)
- json_model_out = ""
- for line in json_model_str.split("\n"):
- match = re.fullmatch(r"(.*)\"#!\[modelfunction\](.*\")(.*)", line)
- if match:
- line = (
- match.group(1)
- + "(param, args) => "
- + json.loads('"' + match.group(2))
- + match.group(3)
- )
- json_model_out += line + "\n"
- with open(f"{args.export_webconf}.json", "w") as f:
- f.write(json_model_out)
+ for function_str, function_body in model.webconf_function_map():
+ json_model_str = json_model_str.replace(function_str, function_body)
+ with open(f"{args.export_webconf}.js", "w") as f:
+ f.write(json_model_str)
with open(f"{args.export_webconf}.kconfig", "w") as f:
f.write(get_kconfig(model))