diff --git a/model/profiling/interaction/graph_offline.py b/model/profiling/interaction/graph_offline.py index 7a332c29c418a5f719b08735b3d11e50d486f17d..562b6815b7d7c450712a3ae01bed8077b3fad608 100644 --- a/model/profiling/interaction/graph_offline.py +++ b/model/profiling/interaction/graph_offline.py @@ -1,4 +1,5 @@ from collections import defaultdict, OrderedDict +import time, shutil import logging; log = logging.getLogger(__name__) log_user = logging.getLogger("mcgdb.log.user") @@ -94,7 +95,7 @@ End-of-line modifiers: values = values.replace(" +", "") cast = float if "." in values else int - values = list(map(cast, values.split(" "))) + values = list(map(cast, values.strip().split(" "))) if not values: raise ValueError("Values list is empty ...") except Exception as e: @@ -107,9 +108,8 @@ End-of-line modifiers: do_sort = values values = sorted(do_sort) name += " (sorted)" - elif do_sort: - values = [x for (y,x) in sorted(zip(do_sort, values))] + values = [y for (x,y) in sorted(zip(do_sort, values))] if do_pick and do_pick[1] is None: do_pick[1] = values @@ -119,7 +119,7 @@ End-of-line modifiers: elif do_pick: value_to_pick, pick_values, pick_name = do_pick - + name = "{} (picked from {} = {})".format(name, pick_name, value_to_pick) values = [v for p, v in zip(pick_values, values) if p == value_to_pick] @@ -155,8 +155,14 @@ End-of-line modifiers: except Exception: pass # already closed, doesn't matter title = ", ".join(names) - target = args if args else '/tmp/chart.png' + + DEFAULT = '/tmp/chart', ".png" + if args: + target = args + else: + target = "".join((DEFAULT[0], time.strftime("-%Y%m%d-%H%M%S"), DEFAULT[1])) chart.title = title log_user.info("Rendering chart plot of {} into {}".format(title, target)) chart.render_to_png(target) + shutil.copy(target, "".join(DEFAULT))