summaryrefslogtreecommitdiff
path: root/bin/analyze-trace.py
diff options
context:
space:
mode:
authorBirte Kristina Friesel <birte.friesel@uos.de>2025-05-21 14:02:58 +0200
committerBirte Kristina Friesel <birte.friesel@uos.de>2025-05-21 14:02:58 +0200
commitbeb6286bb8e6ca6d224a64202613200f1870d663 (patch)
tree38e9d5ec8323a58d3d54a18c75026cb8cdb6497b /bin/analyze-trace.py
parent1090ac0236bd6936188de7f0794c99d9e838290a (diff)
analyze-trace: store input parameters that belong to transitions
Diffstat (limited to 'bin/analyze-trace.py')
-rwxr-xr-xbin/analyze-trace.py36
1 files changed, 31 insertions, 5 deletions
diff --git a/bin/analyze-trace.py b/bin/analyze-trace.py
index 9ab9f8b..1d55465 100755
--- a/bin/analyze-trace.py
+++ b/bin/analyze-trace.py
@@ -34,7 +34,7 @@ def parse_logfile(filename):
return loader.load(f, is_trace=True)
-def learn_pta(observations, annotation, delta=dict()):
+def learn_pta(observations, annotation, delta=dict(), delta_param=dict()):
prev_i = annotation.start.offset
prev = "__init__"
prev_non_kernel = prev
@@ -46,6 +46,11 @@ def learn_pta(observations, annotation, delta=dict()):
if not prev in delta:
delta[prev] = set()
delta[prev].add(this)
+ if not (prev, this) in delta_param:
+ delta_param[(prev, this)] = set()
+ delta_param[(prev, this)].add(
+ dfatool.utils.param_dict_to_str(annotation.start.param)
+ )
prev = this
prev_i = i + 1
meta_observations.append(
@@ -69,6 +74,11 @@ def learn_pta(observations, annotation, delta=dict()):
if not prev in delta:
delta[prev] = set()
delta[prev].add(this)
+ if not (prev, this) in delta_param:
+ delta_param[(prev, this)] = set()
+ delta_param[(prev, this)].add(
+ dfatool.utils.param_dict_to_str(annotation.start.param)
+ )
prev = this
prev_i = i + 1
meta_observations.append(
@@ -91,6 +101,11 @@ def learn_pta(observations, annotation, delta=dict()):
if not prev in delta:
delta[prev] = set()
delta[prev].add(this)
+ if not (prev, this) in delta_param:
+ delta_param[(prev, this)] = set()
+ delta_param[(prev, this)].add(
+ dfatool.utils.param_dict_to_str(annotation.start.param)
+ )
prev = this
meta_observations.append(
{
@@ -108,7 +123,12 @@ def learn_pta(observations, annotation, delta=dict()):
if not prev in delta:
delta[prev] = set()
delta[prev].add("__end__")
- return delta, meta_observations
+ if not (prev, "__end__") in delta_param:
+ delta_param[(prev, "__end__")] = set()
+ delta_param[(prev, "__end__")].add(
+ dfatool.utils.param_dict_to_str(annotation.start.param)
+ )
+ return delta, delta_param, meta_observations
def join_annotations(ref, base, new):
@@ -148,18 +168,24 @@ def main():
)
delta_by_name = dict()
+ delta_param_by_name = dict()
for annotation in annotations:
if annotation.name not in delta_by_name:
delta_by_name[annotation.name] = dict()
- _, meta_obs = learn_pta(
- observations, annotation, delta_by_name[annotation.name]
+ delta_param_by_name[annotation.name] = dict()
+ _, _, meta_obs = learn_pta(
+ observations,
+ annotation,
+ delta_by_name[annotation.name],
+ delta_param_by_name[annotation.name],
)
observations += meta_obs
for name in sorted(delta_by_name.keys()):
for t_from, t_to_set in delta_by_name[name].items():
for t_to in t_to_set:
- print(f"{name} {t_from} → {t_to}")
+ n_confs = len(delta_param_by_name[name][(t_from, t_to)])
+ print(f"{name} {t_from} → {t_to} ({n_confs:4d}x)")
print("")
by_name, parameter_names = dfatool.utils.observations_to_by_name(observations)