diff --git a/python/loom/lore/html.py b/python/loom/lore/html.py index 6842c261827d0da8bc0ac811051f5284226053ff..7a06df5aa7a92b1ef25b39c12f7c4ec80151a399 100644 --- a/python/loom/lore/html.py +++ b/python/loom/lore/html.py @@ -154,6 +154,22 @@ def create_pending_tasks(report): return column([f2, f1]) +def create_running_tasks(report): + ds = report.get_running_tasks() + ds = ds.sort_values("time") + names = ds["group"].unique() + names.sort() + f1 = figure(plot_width=1000, plot_height=400) + for color, name in zip(create_colors(len(names)), names): + frame = ds[ds["group"] == name] + f1.line(frame.time, frame.change.cumsum(), + color=color, legend=name, line_width=1) + + f2 = figure(plot_width=1000, plot_height=400) + f2.line(ds.time, ds.change.cumsum(), line_width=1) + return column([f2, f1]) + + def create_scheduling_time(report): ds = report.scheduler_times duration = ds["end_time"] - ds["start_time"] @@ -181,6 +197,7 @@ def create_html(report, filename): scheduling = Tabs(tabs=[ Panel(child=create_timelines(report), title="Timeline"), Panel(child=create_pending_tasks(report), title="Pending tasks"), + Panel(child=create_running_tasks(report), title="Running tasks"), Panel(child=create_scheduling_time(report), title="Scheduling time"), ]) diff --git a/python/loom/lore/report.py b/python/loom/lore/report.py index b2f53b5d5dc573fb1621b25ab47e7fe7d61dc951..851ba5d2d8be617d99bfbc177d6cecdce9e7908b 100644 --- a/python/loom/lore/report.py +++ b/python/loom/lore/report.py @@ -208,6 +208,15 @@ class Report: return pd.DataFrame(create_items(), columns=["time", "change", "group"]) + def get_running_tasks(self): + def create_items(): + for t in self.tasks.values(): + group_name = t.group_name + yield t.start_time, 1, group_name + yield t.end_time, -1, group_name + return pd.DataFrame(create_items(), + columns=["time", "change", "group"]) + def get_group_names(self): return sorted(set(t.group_name for t in self.tasks.values()))