+ fig_tput = None
+ fig_lat = None
+
+ tput_traces = list()
+ y_tput_max = 0
+ lat_traces = list()
+ y_lat_max = 0
+ x_lat = list()
+ show_latency = False
+ show_tput = False
+ for idx, itm in enumerate(sel):
+ itm_data = select_iterative_data(data, itm)
+ if itm_data.empty:
+ continue
+ phy = itm["phy"].split("-")
+ topo_arch = f"{phy[0]}-{phy[1]}" if len(phy) == 4 else str()
+ norm_factor = 2.0 / _FREQURENCY[topo_arch] if normalize else 1.0
+ if itm["testtype"] == "mrr":
+ y_data_raw = itm_data[_VALUE[itm["testtype"]]].to_list()[0]
+ y_data = [y * norm_factor for y in y_data_raw]
+ if len(y_data) > 0:
+ y_tput_max = \
+ max(y_data) if max(y_data) > y_tput_max else y_tput_max
+ else:
+ y_data_raw = itm_data[_VALUE[itm["testtype"]]].to_list()
+ y_data = [y * norm_factor for y in y_data_raw]
+ if y_data:
+ y_tput_max = \
+ max(y_data) if max(y_data) > y_tput_max else y_tput_max
+ nr_of_samples = len(y_data)
+ tput_kwargs = dict(
+ y=y_data,
+ name=(
+ f"{idx + 1}. "
+ f"({nr_of_samples:02d} "
+ f"run{'s' if nr_of_samples > 1 else ''}) "
+ f"{itm['id']}"
+ ),
+ hoverinfo=u"y+name",
+ boxpoints="all",
+ jitter=0.3,
+ marker=dict(color=_get_color(idx))
+ )
+ tput_traces.append(go.Box(**tput_kwargs))
+ show_tput = True
+
+ if itm["testtype"] == "pdr":
+ y_lat_row = itm_data[_VALUE["pdr-lat"]].to_list()
+ y_lat = [y * norm_factor for y in y_lat_row]
+ if y_lat:
+ y_lat_max = max(y_lat) if max(y_lat) > y_lat_max else y_lat_max
+ nr_of_samples = len(y_lat)
+ lat_kwargs = dict(
+ y=y_lat,
+ name=(
+ f"{idx + 1}. "
+ f"({nr_of_samples:02d} "
+ f"run{u's' if nr_of_samples > 1 else u''}) "
+ f"{itm['id']}"
+ ),
+ hoverinfo="all",
+ boxpoints="all",
+ jitter=0.3,
+ marker=dict(color=_get_color(idx))
+ )
+ x_lat.append(idx + 1)
+ lat_traces.append(go.Box(**lat_kwargs))
+ show_latency = True
+ else:
+ lat_traces.append(go.Box())