62 lines
1.6 KiB
Python
Executable File
62 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
|
|
import timing
|
|
|
|
|
|
ignore = ["TimeStep"]
|
|
|
|
|
|
if __name__ == "__main__":
|
|
p = argparse.ArgumentParser()
|
|
p.add_argument("jobs", nargs="+")
|
|
p.add_argument("--normalize", action="store_true")
|
|
p.add_argument("--extra-columns", nargs="*")
|
|
args = p.parse_args()
|
|
|
|
columns = [
|
|
"BC:cells",
|
|
"BC:dynamicecm",
|
|
"Sweep:Cells",
|
|
"Sweep:DynamicECM",
|
|
"Sweep:DynamicECMDampers",
|
|
] + (args.extra_columns or [])
|
|
|
|
dfs = dict()
|
|
labels = []
|
|
for label, jobid in [jobarg.split(":") for jobarg in args.jobs]:
|
|
jobs, excluded_array_indices = timing.get_jobs(jobid)
|
|
df = timing.load_array_mean_timings(jobid, excluded_array_indices).mean()
|
|
dfs[label] = df
|
|
labels.extend(df.index)
|
|
|
|
labels = set(labels)
|
|
print(",".join(["label"] + columns + ["Other"]))
|
|
|
|
values_by_label = dict()
|
|
for label, df in dfs.items():
|
|
values = {"Other": 0}
|
|
for c in df.index:
|
|
if c in ignore:
|
|
continue
|
|
elif c not in columns:
|
|
values["Other"] += df[c]
|
|
print(f"Others+= {c}={df[c]}", file=sys.stderr)
|
|
else:
|
|
values[c] = df[c]
|
|
values_by_label[label] = values
|
|
|
|
if args.normalize:
|
|
print("Normalizing data to 100%...", file=sys.stderr)
|
|
for values in values_by_label.values():
|
|
row_length = sum(values.values())
|
|
for c in values.keys():
|
|
values[c] *= 100 / row_length
|
|
|
|
for label, values in values_by_label.items():
|
|
print(label + "," + ",".join(f"{values[c]}" for c in columns + ["Other"]))
|