summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/analyze-log.py3
-rw-r--r--lib/cli.py22
2 files changed, 25 insertions, 0 deletions
diff --git a/bin/analyze-log.py b/bin/analyze-log.py
index e9fda6e..03cdf64 100755
--- a/bin/analyze-log.py
+++ b/bin/analyze-log.py
@@ -152,6 +152,9 @@ def main():
if args.export_pgf_unparam:
dfatool.cli.export_pgf_unparam(model, args.export_pgf_unparam)
+ if args.export_json_unparam:
+ dfatool.cli.export_json_unparam(model, args.export_json_unparam)
+
if args.plot_unparam:
for kv in args.plot_unparam.split(";"):
state_or_trans, attribute, ylabel = kv.split(":")
diff --git a/lib/cli.py b/lib/cli.py
index 4b2d1ca..17e7b29 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -199,6 +199,22 @@ def export_pgf_unparam(model, pgf_prefix):
print(f"{i} {value} {parameters}", file=f)
+def export_json_unparam(model, filename):
+ import json
+ from dfatool.utils import NpEncoder
+
+ ret = {"paramNames": model.parameters, "byName": dict()}
+ for name in model.names:
+ ret["byName"][name] = dict()
+ for attribute in model.attributes(name):
+ ret["byName"][name][attribute] = {
+ "paramValues": model.attr_by_name[name][attribute].param_values,
+ "data": model.attr_by_name[name][attribute].data,
+ }
+ with open(filename, "w") as f:
+ json.dump(ret, f, cls=NpEncoder)
+
+
def add_standard_arguments(parser):
parser.add_argument(
"--export-dot",
@@ -219,6 +235,12 @@ def add_standard_arguments(parser):
help="Export raw (parameter-independent) observations in tikz-pgf-compatible format to {PREFIX}{name}-{attribute}.txt",
)
parser.add_argument(
+ "--export-json-unparam",
+ metavar="FILENAME",
+ type=str,
+ help="Export raw (parameter-independent) observations in JSON format to FILENAME",
+ )
+ parser.add_argument(
"--dref-precision",
metavar="NDIG",
type=int,