diff options
-rwxr-xr-x | bin/analyze-log.py | 3 | ||||
-rw-r--r-- | lib/cli.py | 22 |
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(":") @@ -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, |