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