From 7bee51212f3335821d32052a6214dfaec35a2193 Mon Sep 17 00:00:00 2001 From: Nico Vermaas <vermaas@astron.nl> Date: Fri, 26 Jul 2019 14:18:32 +0200 Subject: [PATCH] adding 'time used' pie chart presentation based on new ATDB query --- atdb_statistics/atdb_plot.py | 128 ++++++++++++++++-- atdb_stats.py | 8 +- data/speeds_today_vm.args | 6 +- data/time_used_july_vm.args | 5 - data/time_used_science_pie_jul2019_vm.args | 5 + ...time_used_system_pi_nov2018_localhost.args | 5 + data/time_used_system_pie_jul2019_vm.args | 5 + data/times_today_prod.args | 5 +- 8 files changed, 145 insertions(+), 22 deletions(-) delete mode 100644 data/time_used_july_vm.args create mode 100644 data/time_used_science_pie_jul2019_vm.args create mode 100644 data/time_used_system_pi_nov2018_localhost.args create mode 100644 data/time_used_system_pie_jul2019_vm.args diff --git a/atdb_statistics/atdb_plot.py b/atdb_statistics/atdb_plot.py index 5d01085..63fd461 100644 --- a/atdb_statistics/atdb_plot.py +++ b/atdb_statistics/atdb_plot.py @@ -408,22 +408,20 @@ def do_time_used_plot(title, subtitle, data): """ total_minutes = data['total_minutes'] + science_minutes = data['science_minutes'] + aborted_minutes = data['aborted_minutes'] + system_minutes = data['system_minutes'] - time_on_sky = data['time-on-sky-overview']['was_archived'] - imaging_minutes = time_on_sky['imaging_minutes'] - arts_minutes = time_on_sky['arts_minutes'] - system_minutes = time_on_sky['system_minutes'] - - imaging_fraction = int(imaging_minutes / total_minutes * 100) - arts_fraction = int(arts_minutes / total_minutes * 100) + science_fraction = int(science_minutes / total_minutes * 100) + aborted_fraction = int(aborted_minutes / total_minutes * 100) system_fraction = int(system_minutes / total_minutes * 100) - idle_fraction = 100 - (imaging_fraction + arts_fraction + system_fraction) + idle_fraction = 100 - (science_fraction + aborted_fraction + system_fraction) # Pie chart, where the slices will be ordered and plotted counter-clockwise: fig = plt.figure(figsize=(12, 6)) - labels = 'Imaging (archived)', 'ARTS (archived)', 'other', 'system' - sizes = [imaging_fraction, arts_fraction, idle_fraction, system_fraction] + labels = 'Science', 'System', 'aborted', 'idle' + sizes = [science_fraction, system_fraction, aborted_fraction, idle_fraction] explode = (0.1, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') #fig1, ax1 = plt.subplots() @@ -435,4 +433,114 @@ def do_time_used_plot(title, subtitle, data): plt.grid(True,alpha=0.3) plt.legend(loc='upper right') + plt.show() + + +def do_time_used_system_pie_plot(title, subtitle, data): + """ + :param title: Title of Plot + :param x: dict with data for x-axis (time) + :param y: dict with data for y_axix (usage) + :return: + """ + + + total_minutes = data['total_minutes'] + science_minutes = data['science_minutes'] + aborted_minutes = data['aborted_minutes'] + system_minutes = data['system_minutes'] + + science_fraction = int(science_minutes / total_minutes * 100) + aborted_fraction = int(aborted_minutes / total_minutes * 100) + system_fraction = int(system_minutes / total_minutes * 100) + idle_fraction = 100 - (science_fraction + aborted_fraction + system_fraction) + + # Pie chart, where the slices will be ordered and plotted counter-clockwise: + fig = plt.figure(figsize=(12, 6)) + + labels = 'System', 'Science', 'aborted', 'idle' + colors = ['lightblue','green','red','lightgrey'] + sizes = [system_fraction, science_fraction, aborted_fraction, idle_fraction] + explode = (0.0, 0.1, 0.1, 0) # only "explode" the 2nd slice (i.e. 'Hogs') + + #fig1, ax1 = plt.subplots() + + plt.pie(sizes, explode=explode, labels=labels, colors = colors, autopct='%1.1f%%', + shadow=True, startangle=90) + plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. + plt.title(title) + plt.grid(True,alpha=0.3) + plt.legend(loc='upper right') + + plt.show() + + +def do_time_used_science_pie_plot(title, subtitle, data): + """ + :param title: Title of Plot + :param x: dict with data for x-axis (time) + :param y: dict with data for y_axix (usage) + :return: + """ + + total_minutes = data['total_minutes'] + + imaging_data = data['imaging'] + imaging_survey_minutes = imaging_data['survey_minutes'] + imaging_drift_minutes = imaging_data['drift_minutes'] + imaging_filler_minutes = imaging_data['filler_minutes'] + imaging_argo_minutes = imaging_data['argo_minutes'] + + # sum... note that time is counted double, because everything is 'survey' + total_image_data_minutes = imaging_survey_minutes + imaging_drift_minutes + imaging_filler_minutes + imaging_argo_minutes + + arts_data = data['arts'] + arts_sc1_minutes = arts_data['sc1_minutes'] + arts_sc1_drift_minutes = arts_data['sc1_drift_minutes'] + arts_sc1_filler_minutes = arts_data['sc1_filler_minutes'] + arts_sc4_minutes = arts_data['sc4_minutes'] + arts_sc4_drift_minutes = arts_data['sc4_drift_minutes'] + arts_sc4_filler_minutes = arts_data['sc4_filler_minutes'] + total_arts_sc1_minutes = arts_sc1_minutes + arts_sc1_drift_minutes + arts_sc1_filler_minutes + total_arts_sc4_minutes = arts_sc4_minutes + arts_sc4_drift_minutes + arts_sc4_filler_minutes + + # sum + total_arts_data_minutes = total_arts_sc1_minutes + total_arts_sc4_minutes + + #science_fraction = int(science_minutes / total_minutes * 100) + #aborted_fraction = int(aborted_minutes / total_minutes * 100) + #system_fraction = int(system_minutes / total_minutes * 100) + #idle_fraction = 100 - (science_fraction + aborted_fraction + system_fraction) + + # Pie chart, where the slices will be ordered and plotted counter-clockwise: + fig = plt.figure(figsize=(12, 6)) + outer_sizes = [total_image_data_minutes, total_arts_data_minutes] + outer_labels = ['Imaging','ARTS'] + outer_colors = ['cornflowerblue', '#C8885E' + ] + inner_sizes = [imaging_survey_minutes, imaging_drift_minutes, imaging_filler_minutes, imaging_argo_minutes, + arts_sc1_minutes, arts_sc1_drift_minutes,arts_sc1_filler_minutes, + arts_sc4_minutes, arts_sc4_drift_minutes, arts_sc4_filler_minutes, + ] + inner_labels = ['survey', 'drift', 'filler', 'ARGO', + 'SC1','drift','filler', + 'SC4','drift','filler'] + + inner_colors = ['#1A44CF','#1A75CA','#1AAED1','#1ACAB9', + '#D3841A','#D5BB1A','#B5D31A', + '#7FD31A','#1AD31C','#1ACA84'] + + size = 0.4 + #fig1, ax1 = plt.subplots() + plt.pie(outer_sizes, radius=1, startangle=90, labels=outer_labels, colors = outer_colors, autopct='%1.1f%%', + wedgeprops=dict(width=size, edgecolor='w')) + + plt.pie(inner_sizes, radius=1-size, startangle=90, labels=inner_labels, colors = inner_colors, autopct='%1.1f%%', + wedgeprops=dict(width=size, edgecolor='w')) + + plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. + plt.title(title) + plt.grid(True,alpha=0.3) + plt.legend(loc='upper right') + plt.show() \ No newline at end of file diff --git a/atdb_stats.py b/atdb_stats.py index 751136d..79d8cd6 100644 --- a/atdb_stats.py +++ b/atdb_stats.py @@ -398,7 +398,13 @@ def do_time_used(args): "ERROR: " + str(response.status_code) + ", " + str(response.reason) + ', ' + str(response.content))) # plot the results - atdb_plot.do_time_used_plot(args.title, args.y_axis_title,time_used_data) + #atdb_plot.do_time_used_plot(args.title, args.y_axis_title,time_used_data) + report_type = time_used_data['report_type'] + if 'system_pie' in report_type: + atdb_plot.do_time_used_system_pie_plot(args.title, args.y_axis_title,time_used_data) + + elif 'science_pi' in report_type: + atdb_plot.do_time_used_science_pie_plot(args.title, args.y_axis_title, time_used_data) diff --git a/data/speeds_today_vm.args b/data/speeds_today_vm.args index 5e6fb36..eb062d1 100644 --- a/data/speeds_today_vm.args +++ b/data/speeds_today_vm.args @@ -1,9 +1,9 @@ --presentation=speeds --atdb_host=http://192.168.22.22/atdb --title=I/O speeds on wcudata1 from ATDB ---subtitle=1 - 8 jun 2019 +--subtitle=18 - 23 july 2019 --y_axis_title=I/O Speed in Gbps --query=taskID__contains=190607 ---query=taskID__gte=190610000&taskID__lte=190613000 ---query=starttime__gt=2019-06-01T00:00:00Z&starttime__lt=2019-06-08T00:00:00Z +--query=taskID__gte=190718000&taskID__lte=190723000 +--query=starttime__gt=2019-07-18T00:00:00Z&starttime__lt=2019-07-23T00:00:00Z --plot_engine=mathplotlib diff --git a/data/time_used_july_vm.args b/data/time_used_july_vm.args deleted file mode 100644 index 8cbcf31..0000000 --- a/data/time_used_july_vm.args +++ /dev/null @@ -1,5 +0,0 @@ ---presentation=time_used ---atdb_host=http://192.168.22.22/atdb ---title=APERTIF On Sky - July 2019 ---subtitle=July 2019 ---query=from=2019-07-01&to=2019-07-30 \ No newline at end of file diff --git a/data/time_used_science_pie_jul2019_vm.args b/data/time_used_science_pie_jul2019_vm.args new file mode 100644 index 0000000..418a7e1 --- /dev/null +++ b/data/time_used_science_pie_jul2019_vm.args @@ -0,0 +1,5 @@ +--presentation=time_used +--atdb_host=http://192.168.22.22/atdb +--title=APERTIF Science Pie - July 2019 +--subtitle=July 2019 +--query=from=2019-07-01T00:00:00Z&to=2019-07-30T00:00:00Z&report_type=time_used_science_pie \ No newline at end of file diff --git a/data/time_used_system_pi_nov2018_localhost.args b/data/time_used_system_pi_nov2018_localhost.args new file mode 100644 index 0000000..19c7000 --- /dev/null +++ b/data/time_used_system_pi_nov2018_localhost.args @@ -0,0 +1,5 @@ +--presentation=time_used +--atdb_host=http://localhost:8000/atdb +--title=APERTIF System Pi - November 2018 +--subtitle=November 2018 +--query=from=2018-11-01&to=2018-11-30&report_type=system_pie \ No newline at end of file diff --git a/data/time_used_system_pie_jul2019_vm.args b/data/time_used_system_pie_jul2019_vm.args new file mode 100644 index 0000000..8742bbc --- /dev/null +++ b/data/time_used_system_pie_jul2019_vm.args @@ -0,0 +1,5 @@ +--presentation=time_used +--atdb_host=http://192.168.22.22/atdb +--title=APERTIF Science Pie - July 2019 +--subtitle=July 2019 +--query=from=2019-07-01T00:00:00Z&to=2019-07-30T00:00:00Z&report_type=time_used_system_pie \ No newline at end of file diff --git a/data/times_today_prod.args b/data/times_today_prod.args index 9334680..7d2dc72 100644 --- a/data/times_today_prod.args +++ b/data/times_today_prod.args @@ -1,7 +1,6 @@ --presentation=times --atdb_host=http://atdb.astron.nl/atdb --title=I/O speeds from ATDB ---subtitle=12 to 15 july 2019 +--subtitle=18 - 23 july 2019 --y_axis_title=I/O Speed in Gbps ---query=taskID__contains=190608 ---query=starttime__gt=2019-07-12T00:00:00Z&starttime__lt=2019-07-15T00:00:00Z +--query=starttime__gt=2019-07-18T00:00:00Z&starttime__lt=2019-07-23T00:00:00Z -- GitLab