Report, trending
[csit.git] / resources / tools / presentation / generator_CPTA.py
index 54679a2..c3784e9 100644 (file)
@@ -164,19 +164,21 @@ def _evaluate_results(in_data, trimmed_data, window=10):
 
     if len(in_data) > 2:
         win_size = in_data.size if in_data.size < window else window
-        results = [0.0, ] * win_size
+        results = [0.0, ]
         median = in_data.rolling(window=win_size).median()
         stdev_t = trimmed_data.rolling(window=win_size, min_periods=2).std()
         m_vals = median.values
         s_vals = stdev_t.values
         d_vals = in_data.values
-        for day in range(win_size, in_data.size):
-            if np.isnan(m_vals[day - 1]) or np.isnan(s_vals[day - 1]):
+        for day in range(1, in_data.size):
+            if np.isnan(m_vals[day]) \
+                    or np.isnan(s_vals[day]) \
+                    or np.isnan(d_vals[day]):
                 results.append(0.0)
-            elif d_vals[day] < (m_vals[day - 1] - 3 * s_vals[day - 1]):
+            elif d_vals[day] < (m_vals[day] - 3 * s_vals[day]):
                 results.append(0.33)
-            elif (m_vals[day - 1] - 3 * s_vals[day - 1]) <= d_vals[day] <= \
-                    (m_vals[day - 1] + 3 * s_vals[day - 1]):
+            elif (m_vals[day] - 3 * s_vals[day]) <= d_vals[day] <= \
+                    (m_vals[day] + 3 * s_vals[day]):
                 results.append(0.66)
             else:
                 results.append(1.0)
@@ -232,31 +234,31 @@ def _generate_trending_traces(in_data, build_info, period, moving_win_size=10,
         in_data = _select_data(in_data, period,
                                fill_missing=fill_missing,
                                use_first=use_first)
-    try:
-        data_x = ["{0}/{1}".format(key, build_info[str(key)][1].split("~")[-1])
-                  for key in in_data.keys()]
-    except KeyError:
-        data_x = [key for key in in_data.keys()]
-    hover_text = ["vpp-build: {0}".format(x[1].split("~")[-1])
-                  for x in build_info.values()]
-    data_x = [key for key in in_data.keys()]
+    try:
+        data_x = ["{0}/{1}".format(key, build_info[str(key)][1].split("~")[-1])
+                  for key in in_data.keys()]
+    except KeyError:
+        data_x = [key for key in in_data.keys()]
+    hover_text = ["vpp-build: {0}".format(x[1].split("~")[-1])
+                  for x in build_info.values()]
+    data_x = [key for key in in_data.keys()]
 
     data_y = [val for val in in_data.values()]
     data_pd = pd.Series(data_y, index=data_x)
 
-    t_data, outliers = find_outliers(data_pd)
+    t_data, outliers = find_outliers(data_pd, outlier_const=1.5)
 
     results = _evaluate_results(data_pd, t_data, window=moving_win_size)
 
     anomalies = pd.Series()
     anomalies_res = list()
     for idx, item in enumerate(in_data.items()):
-        item_pd = pd.Series([item[1], ],
-                            index=["{0}/{1}".
-                            format(item[0],
-                                   build_info[str(item[0])][1].split("~")[-1]),
-                                   ])
-        #item_pd = pd.Series([item[1], ], index=[item[0], ])
+        item_pd = pd.Series([item[1], ],
+                            index=["{0}/{1}".
+                            format(item[0],
+                                   build_info[str(item[0])][1].split("~")[-1]),
+                                   ])
+        item_pd = pd.Series([item[1], ], index=[item[0], ])
         if item[0] in outliers.keys():
             anomalies = anomalies.append(item_pd)
             anomalies_res.append(0.0)
@@ -288,8 +290,8 @@ def _generate_trending_traces(in_data, build_info, period, moving_win_size=10,
             "color": color,
             "symbol": "circle",
         },
-        text=hover_text,
-        hoverinfo="x+y+text+name"
+        text=hover_text,
+        hoverinfo="x+y+text+name"
     )
     traces = [trace_samples, ]
 
@@ -387,7 +389,7 @@ def _generate_all_charts(spec, input_data):
             builds_lst.append(str(build["build"]))
 
     # Get "build ID": "date" dict:
-    build_info = dict()
+    build_info = OrderedDict()
     for build in builds_lst:
         try:
             build_info[build] = (
@@ -396,6 +398,9 @@ def _generate_all_charts(spec, input_data):
             )
         except KeyError:
             build_info[build] = ("", "")
+        logging.info("{}: {}, {}".format(build,
+                                         build_info[build][0],
+                                         build_info[build][1]))
 
     # Create the header:
     csv_table = list()
@@ -442,7 +447,7 @@ def _generate_all_charts(spec, input_data):
         for period in chart["periods"]:
             # Generate traces:
             traces = list()
-            win_size = 10 if period == 1 else 5 if period < 20 else 3
+            win_size = 14 if period == 1 else 5 if period < 20 else 3
             idx = 0
             for test_name, test_data in chart_data.items():
                 if not test_data: