diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2019-11-22 22:23:06 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2019-11-22 22:23:06 +0100 |
| commit | 291627d0815a3371d4ffd7a732e94a60459d8399 (patch) | |
| tree | 5f5bc01fa8446423eb021e6f4e4e0bc4ac99d0a9 | |
| parent | 0ece10940224e5027e9547933e3ac64ae031adce (diff) | |
| download | allocbench-291627d0815a3371d4ffd7a732e94a60459d8399.tar.gz allocbench-291627d0815a3371d4ffd7a732e94a60459d8399.zip | |
make plot_* functions more robust to missing values
| -rw-r--r-- | src/benchmark.py | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/benchmark.py b/src/benchmark.py index 3fae5ac..adf84c8 100644 --- a/src/benchmark.py +++ b/src/benchmark.py @@ -549,6 +549,16 @@ class Benchmark: self.results["stats"][alloc][perm] = stats ###### Summary helpers ###### + def _eval_with_stat(self, evaluation, alloc, perm, stat): + try: + s = evaluation.format(**self.results["stats"][alloc][perm][stat]) + except KeyError as e: + import traceback + print_warn(traceback.format_exc()) + print_warn(f"For {alloc} in {perm}") + return nan + return eval(s) + def plot_single_arg(self, yval, ylabel="'y-label'", xlabel="'x-label'", autoticks=True, title="'default title'", filepostfix="", sumdir="", arg="", scale=None, file_ext=src.globalvars.summary_file_ext): @@ -570,11 +580,11 @@ class Benchmark: if scale == allocator: y_vals = [1] * len(x_vals) else: - mean = eval(yval.format(**self.results["stats"][allocator][perm]["mean"])) - norm_mean = eval(yval.format(**self.results["stats"][scale][perm]["mean"])) + mean = self._eval_with_stat(yval, allocator, perm, "mean") + norm_mean = self._eval_with_stat(yval, scale, perm, "mean") y_vals.append(mean / norm_mean) else: - y_vals.append(eval(yval.format(**self.results["stats"][allocator][perm]["mean"]))) + y_vals.append(self._eval_with_stat(yval, allocator, perm, "mean")) plt.plot(x_vals, y_vals, marker='.', linestyle='-', label=allocator, color=allocators[allocator]["color"]) @@ -617,14 +627,14 @@ class Benchmark: if scale == allocator: y_vals = [1] * len(x_vals) else: - mean = eval(yval.format(**self.results["stats"][allocator][perm]["mean"])) - norm_mean = eval(yval.format(**self.results["stats"][scale][perm]["mean"])) + mean = self._eval_with_stat(yval, allocator, perm, "mean") + norm_mean = self._eval_with_stat(yval, scale, perm, "mean") y_vals.append(mean / norm_mean) else: - y_vals.append(eval(yval.format(**self.results["stats"][allocator][perm]["mean"]))) + y_vals.append(self._eval_with_stat(yval, allocator, perm, "mean")) if yerr: - y_errs.append(eval(yval.format(**self.results["stats"][allocator][perm]["std"]))) + y_errs.append(self._eval_with_stat(yval, allocator, perm, "std")) plt.bar(x_vals, y_vals, width=1, label=allocator, yerr=y_errs, color=allocators[allocator]["color"]) @@ -660,13 +670,11 @@ class Benchmark: if scale == allocator: y_vals = [1] * len(x_vals) else: - mean = eval(yval.format(**self.results["stats"][allocator][perm]["mean"])) - norm_mean = eval(yval.format(**self.results["stats"][scale][perm]["mean"])) + mean = self._eval_with_stat(yval, allocator, perm, "mean") + norm_mean = self._eval_with_stat(yval, scale, perm, "mean") y_vals.append(mean / norm_mean) else: - eval_dict = self.results["stats"][allocator][perm]["mean"] - eval_str = yval.format(**eval_dict) - y_vals.append(eval(eval_str)) + y_vals.append(self._eval_with_stat(yval, allocator, perm, "mean")) plt.plot(x_vals, y_vals, marker='.', linestyle='-', label=allocator, color=allocators[allocator]["color"]) |
