Lukas Prause 3 anos atrás
pai
commit
e3d3c755a4
1 arquivos alterados com 41 adições e 14 exclusões
  1. +41
    -14
      analyse_udp.py

+ 41
- 14
analyse_udp.py Ver arquivo

from argparse import ArgumentParser from argparse import ArgumentParser
from datetime import datetime from datetime import datetime


import matplotlib
import pandas as pd import pandas as pd
import matplotlib.pyplot as plt import matplotlib.pyplot as plt


matplotlib.use('TkAgg')



def plot_packet_arrivals(csv_file):
direction = "uplink" if "uplink" in csv_file else "downlink"
def plot_single_transmission(csv_file):
global direction
if direction is None:
direction = "uplink" if "uplink" in csv_file else "downlink"
bitrate = csv_file.split("bitrate")[1].split("_")[0] bitrate = csv_file.split("bitrate")[1].split("_")[0]
transmission_df = pd.read_csv(csv_file) transmission_df = pd.read_csv(csv_file)
if len(transmission_df) == 0:
print("Empty csv.")
return
transmission_df["departure_time"] = transmission_df["departure_time"] - transmission_df["departure_time"].iloc[0] transmission_df["departure_time"] = transmission_df["departure_time"] - transmission_df["departure_time"].iloc[0]
transmission_df["arrival_time"] = transmission_df["arrival_time"] - transmission_df["arrival_time"].iloc[0] transmission_df["arrival_time"] = transmission_df["arrival_time"] - transmission_df["arrival_time"].iloc[0]




print("Packetloss: {}%".format((len(lossed_packets.departure_time) / len(transmission_df.departure_time)) * 100 )) print("Packetloss: {}%".format((len(lossed_packets.departure_time) / len(transmission_df.departure_time)) * 100 ))




#axes = transmission_df.plot(x="arrival_time", y="data.len_received_cum")

fig, all_axes = plt.subplots(2, 1) fig, all_axes = plt.subplots(2, 1)
fig.suptitle("CBR {} {}".format(bitrate, direction)) fig.suptitle("CBR {} {}".format(bitrate, direction))
fig.subplots_adjust(hspace=0.3) fig.subplots_adjust(hspace=0.3)
transmission_df.plot(ax=axes, x="departure_time", y="data.len_send_cum") transmission_df.plot(ax=axes, x="departure_time", y="data.len_send_cum")
transmission_df.plot(ax=axes, x="arrival_time", y="data.len_received_cum") transmission_df.plot(ax=axes, x="arrival_time", y="data.len_received_cum")
lossed_packets.plot.scatter(ax=axes, x="departure_time", y="data.len_send_cum", color="y", marker="X") lossed_packets.plot.scatter(ax=axes, x="departure_time", y="data.len_send_cum", color="y", marker="X")
#axes = transmission_df.boxplot(column="delay")


axes.legend(["D(t)", "A(t)"]) axes.legend(["D(t)", "A(t)"])
axes.set_ylabel("Byte") axes.set_ylabel("Byte")


delay_axes = axes.twinx() delay_axes = axes.twinx()
delay_axes.set_ylabel("delay [s]") delay_axes.set_ylabel("delay [s]")
delay_axes.set_ylim([0, 0.4])
transmission_df.plot(ax=delay_axes, x="arrival_time", y="delay", color="g", linestyle="dotted") transmission_df.plot(ax=delay_axes, x="arrival_time", y="delay", color="g", linestyle="dotted")


transmission_df.boxplot(ax=axes_boxplot, column="delay", vert=False) transmission_df.boxplot(ax=axes_boxplot, column="delay", vert=False)
axes_boxplot.set_xlabel("[s]") axes_boxplot.set_xlabel("[s]")


#fig = axes.get_figure()
#fig.suptitle("CBR {} {}".format(bitrate, direction))
#fig.show()
fig.savefig(csv_file.replace(".csv", ".pdf")) fig.savefig(csv_file.replace(".csv", ".pdf"))
plt.close("all")

global all_delays_dict
if bitrate not in all_delays_dict:
all_delays_dict[bitrate] = list()
all_delays_dict[bitrate] += transmission_df["delay"].tolist()




if __name__ == "__main__": if __name__ == "__main__":
args = parser.parse_args() args = parser.parse_args()


csv_list = list() csv_list = list()
all_delays_dict = dict()
direction = None


if args.use_subdirs: if args.use_subdirs:
sub_dirs = os.listdir(args.folder) sub_dirs = os.listdir(args.folder)
if filename.endswith(".csv") and args.name_contains in filename: if filename.endswith(".csv") and args.name_contains in filename:
csv_list.append(filename) csv_list.append(filename)


csv_list.sort()
for csv in csv_list: for csv in csv_list:
plot_packet_arrivals("{}/{}".format(args.folder, csv))
print(csv)
plot_single_transmission("{}/{}".format(args.folder, csv))

if len(all_delays_dict) > 0:
fig, axes = plt.subplots()
label_list = list()
unit = None
datas = list()
for bitrate, l in all_delays_dict.items():
if unit is None:
if "K" in bitrate:
unit = "Kbit/s"
elif "M" in bitrate:
unit = "Mbit/s"
else:
unit = "Gbit/s"
label_list.append(bitrate.replace("K", "").replace("M", "").replace("G", ""))
datas.append(l)
axes.boxplot(datas)
#axes.set_xticklabels(label_list)
axes.set_xlabel("cbr bitrate [{}]".format(unit))
axes.set_ylabel("delay [s]")
fig.suptitle("CBR {}".format(direction))
fig.savefig("{}/all_delays_{}_boxplot.pdf".format(args.folder, direction))

Carregando…
Cancelar
Salvar