diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2021-02-22 16:17:18 +0100 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2021-02-22 16:17:18 +0100 |
commit | 3b663aa49d32a3a23c53c3fa682b3b6b74d7c2ed (patch) | |
tree | bdd54a7ed95d72698da7be8482ec7b6e5a27354a /bin | |
parent | 75aa9086b84d875b20bf5db38a987159a633cf6b (diff) |
add simple sub-state model accessor and evaluation
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/analyze-archive.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index 1b37b89..40f11e8 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -815,6 +815,7 @@ if __name__ == "__main__": if len(show_models): print("--- param model ---") + # get_fitted_sub -> with sub-state detection and modeling param_model, param_info = model.get_fitted( safe_functions_enabled=safe_functions_enabled ) @@ -903,6 +904,30 @@ if __name__ == "__main__": param_info(trans, attribute)["function"].model_args, ) ) + if args.with_substates: + for submodel in model.submodel_by_nc.values(): + sub_param_model, sub_param_info = submodel.get_fitted() + for substate in submodel.states(): + for subattribute in submodel.attributes(substate): + if sub_param_info(substate, subattribute): + print( + "{:10s} {:15s}: {}".format( + substate, + subattribute, + sub_param_info(substate, subattribute)[ + "function" + ].model_function, + ) + ) + print( + "{:10s} {:15s} {}".format( + "", + "", + sub_param_info(substate, subattribute)[ + "function" + ].model_args, + ) + ) if xv_method == "montecarlo": analytic_quality = xv.montecarlo(lambda m: m.get_fitted()[0], xv_count) @@ -940,6 +965,18 @@ if __name__ == "__main__": model_quality_table( [static_quality, analytic_quality, lut_quality], [None, param_info, None] ) + if args.with_substates: + for submodel in model.submodel_by_nc.values(): + sub_static_model = submodel.get_static() + sub_static_quality = submodel.assess(sub_static_model) + sub_lut_model = submodel.get_param_lut() + sub_lut_quality = submodel.assess(sub_lut_model) + sub_param_model, sub_param_info = submodel.get_fitted() + sub_analytic_quality = submodel.assess(sub_param_model) + model_quality_table( + [sub_static_quality, sub_analytic_quality, sub_lut_quality], + [None, sub_param_info, None], + ) if "overall" in show_quality or "all" in show_quality: print("overall state static/param/lut MAE assuming equal state distribution:") |