| serial_df.index = pd.to_datetime(serial_df.index) | serial_df.index = pd.to_datetime(serial_df.index) | ||||
| serial_df.sort_index() | serial_df.sort_index() | ||||
| transmission_df = pd.merge_asof( | |||||
| transmission_df, | |||||
| serial_df, | |||||
| tolerance=pd.Timedelta("1milliseconds"), | |||||
| right_index=True, | |||||
| left_index=True, | |||||
| ) | |||||
| # Select DataFrame rows between two dates | |||||
| mask = (serial_df.index >= transmission_df.index[0]) & (serial_df.index <= transmission_df.index[-1]) | |||||
| serial_df = serial_df.loc[mask] | |||||
| transmission_df.index = transmission_df["arrival_time"] | transmission_df.index = transmission_df["arrival_time"] | ||||
| # filter active state | # filter active state | ||||
| for i in range(1, 5): | for i in range(1, 5): | ||||
| transmission_df["LTE_SCC{}_effective_bw".format(i)] = transmission_df[ | |||||
| serial_df["LTE_SCC{}_effective_bw".format(i)] = serial_df[ | |||||
| "LTE_SCC{}_bw".format(i) | "LTE_SCC{}_bw".format(i) | ||||
| ] | ] | ||||
| mask = transmission_df["LTE_SCC{}_state".format(i)].isin(["ACTIVE"]) | |||||
| transmission_df["LTE_SCC{}_effective_bw".format(i)] = transmission_df[ | |||||
| mask = serial_df["LTE_SCC{}_state".format(i)].isin(["ACTIVE"]) | |||||
| serial_df["LTE_SCC{}_effective_bw".format(i)] = serial_df[ | |||||
| "LTE_SCC{}_effective_bw".format(i) | "LTE_SCC{}_effective_bw".format(i) | ||||
| ].where(mask, other=0) | ].where(mask, other=0) | ||||
| # filter if sc is usesd for uplink | # filter if sc is usesd for uplink | ||||
| for i in range(1, 5): | for i in range(1, 5): | ||||
| mask = transmission_df["LTE_SCC{}_UL_Configured".format(i)].isin([False]) | |||||
| transmission_df["LTE_SCC{}_effective_bw".format(i)] = transmission_df[ | |||||
| mask = serial_df["LTE_SCC{}_UL_Configured".format(i)].isin([False]) | |||||
| serial_df["LTE_SCC{}_effective_bw".format(i)] = serial_df[ | |||||
| "LTE_SCC{}_effective_bw".format(i) | "LTE_SCC{}_effective_bw".format(i) | ||||
| ].where(mask, other=0) | ].where(mask, other=0) | ||||
| # sum all effective bandwidth for 5G and 4G | # sum all effective bandwidth for 5G and 4G | ||||
| transmission_df["SCC1_NR5G_effective_bw"] = transmission_df[ | |||||
| serial_df["SCC1_NR5G_effective_bw"] = serial_df[ | |||||
| "SCC1_NR5G_bw" | "SCC1_NR5G_bw" | ||||
| ].fillna(0) | ].fillna(0) | ||||
| transmission_df["lte_effective_bw_sum"] = ( | |||||
| transmission_df["LTE_SCC1_effective_bw"].fillna(0) | |||||
| + transmission_df["LTE_SCC2_effective_bw"].fillna(0) | |||||
| + transmission_df["LTE_SCC3_effective_bw"].fillna(0) | |||||
| + transmission_df["LTE_SCC4_effective_bw"].fillna(0) | |||||
| + transmission_df["LTE_bw"].fillna(0)) | |||||
| transmission_df["nr_effective_bw_sum"] = transmission_df["SCC1_NR5G_effective_bw"] | |||||
| serial_df["lte_effective_bw_sum"] = ( | |||||
| serial_df["LTE_SCC1_effective_bw"].fillna(0) | |||||
| + serial_df["LTE_SCC2_effective_bw"].fillna(0) | |||||
| + serial_df["LTE_SCC3_effective_bw"].fillna(0) | |||||
| + serial_df["LTE_SCC4_effective_bw"].fillna(0) | |||||
| + serial_df["LTE_bw"].fillna(0)) | |||||
| serial_df["nr_effective_bw_sum"] = serial_df["SCC1_NR5G_effective_bw"] | |||||
| transmission_df["effective_bw_sum"] = transmission_df["nr_effective_bw_sum"] + transmission_df[ | |||||
| serial_df["effective_bw_sum"] = serial_df["nr_effective_bw_sum"] + serial_df[ | |||||
| "lte_effective_bw_sum"] | "lte_effective_bw_sum"] | ||||
| # transmission timeline | # transmission timeline | ||||
| ax00 = ax[1] | ax00 = ax[1] | ||||
| snd_plot = ax0.plot( | snd_plot = ax0.plot( | ||||
| transmission_df["snd_cwnd"].dropna(), | transmission_df["snd_cwnd"].dropna(), | ||||
| color="lime", | color="lime", | ||||
| ) | ) | ||||
| # sum all effective bandwidth for 5G and 4G | # sum all effective bandwidth for 5G and 4G | ||||
| transmission_df["SCC1_NR5G_effective_bw"] = transmission_df["SCC1_NR5G_bw"].fillna(0) | |||||
| transmission_df["effective_bw_sum"] = ( | |||||
| transmission_df["SCC1_NR5G_effective_bw"] | |||||
| + transmission_df["LTE_SCC1_effective_bw"] | |||||
| + transmission_df["LTE_SCC2_effective_bw"] | |||||
| + transmission_df["LTE_SCC3_effective_bw"] | |||||
| + transmission_df["LTE_SCC4_effective_bw"] | |||||
| + transmission_df["LTE_bw"] | |||||
| serial_df["SCC1_NR5G_effective_bw"] = serial_df["SCC1_NR5G_bw"].fillna(0) | |||||
| serial_df["effective_bw_sum"] = ( | |||||
| serial_df["SCC1_NR5G_effective_bw"] | |||||
| + serial_df["LTE_SCC1_effective_bw"] | |||||
| + serial_df["LTE_SCC2_effective_bw"] | |||||
| + serial_df["LTE_SCC3_effective_bw"] | |||||
| + serial_df["LTE_SCC4_effective_bw"] | |||||
| + serial_df["LTE_bw"] | |||||
| ) | ) | ||||
| bw_cols = [ | bw_cols = [ | ||||
| "SCC1_NR5G_effective_bw", | "SCC1_NR5G_effective_bw", | ||||
| "LTE_SCC4_effective_bw", | "LTE_SCC4_effective_bw", | ||||
| ] | ] | ||||
| serial_df["time_rel"] = serial_df["time"] - serial_df["time"].iloc[0] | |||||
| serial_df.index = serial_df["time_rel"] / 60 | |||||
| transmission_df.to_csv("{}{}_plot.csv".format(args.save, csv.replace(".csv", ""))) | |||||
| exit() | |||||
| ax_stacked = transmission_df[bw_cols].plot.area(stacked=True, linewidth=0, ax=ax00) | |||||
| ax_stacked = serial_df[bw_cols].plot.area(stacked=True, linewidth=0, ax=ax00) | |||||
| ax00.set_ylabel("bandwidth [MHz]") | ax00.set_ylabel("bandwidth [MHz]") | ||||
| #ax.set_xlabel("time [minutes]") | #ax.set_xlabel("time [minutes]") | ||||
| #ax00.set_xlim([0, transmission_df.index[-1]]) | #ax00.set_xlim([0, transmission_df.index[-1]]) |