Changes goodput calculation.
This commit is contained in:
@@ -44,6 +44,24 @@ def chunk(it, size):
|
||||
return iter(lambda: tuple(islice(it, size)), ())
|
||||
|
||||
|
||||
def plot_cdf(dataframe, column_name):
|
||||
stats_df = dataframe \
|
||||
.groupby(column_name) \
|
||||
[column_name] \
|
||||
.agg("count") \
|
||||
.pipe(pd.DataFrame) \
|
||||
.rename(columns={column_name: "frequency"})
|
||||
|
||||
# PDF
|
||||
stats_df["pdf"] = stats_df["frequency"] / sum(stats_df["frequency"])
|
||||
|
||||
# CDF
|
||||
stats_df["cdf"] = stats_df["pdf"].cumsum()
|
||||
stats_df = stats_df.reset_index()
|
||||
|
||||
stats_df.plot(x=column_name, y=["cdf"], grid=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument("-f", "--gps_file", required=True, help="GPS csv file.")
|
||||
@@ -126,7 +144,16 @@ if __name__ == "__main__":
|
||||
transmission_df = transmission_df.sort_index()
|
||||
|
||||
print("Calculate goodput...")
|
||||
transmission_df["goodput"] = transmission_df["payload_size"].rolling("{}s".format(args.interval)).sum()
|
||||
|
||||
range_start_time = transmission_df["datetime"].min()
|
||||
range_sum_interval = "{}s".format(args.interval)
|
||||
|
||||
# create timedelta range with maximum timedelta
|
||||
time_range = pd.timedelta_range(pd.Timedelta(range_start_time), transmission_df["datetime"].max(), freq=range_sum_interval)
|
||||
|
||||
# create bins by pd.cut, aggregate sum
|
||||
transmission_df = transmission_df.groupby(pd.cut(transmission_df["datetime"], bins=time_range, labels=time_range[:-1]))["goodput"].sum().reset_index()
|
||||
#transmission_df["goodput"] = transmission_df["payload_size"].rolling("{}s".format(args.interval)).sum()
|
||||
transmission_df["goodput"] = transmission_df["goodput"].apply(
|
||||
lambda x: ((x * 8) / args.interval) / 10**6
|
||||
)
|
||||
@@ -191,26 +218,9 @@ if __name__ == "__main__":
|
||||
plt.clf()
|
||||
|
||||
print("Calculate and polt CDF...")
|
||||
# Get the frequency, PDF and CDF for each value in the series
|
||||
|
||||
# Frequency
|
||||
stats_df = transmission_df \
|
||||
.groupby("goodput") \
|
||||
["goodput"] \
|
||||
.agg("count") \
|
||||
.pipe(pd.DataFrame) \
|
||||
.rename(columns={"goodput": "frequency"})
|
||||
|
||||
# PDF
|
||||
stats_df["pdf"] = stats_df["frequency"] / sum(stats_df["frequency"])
|
||||
|
||||
# CDF
|
||||
stats_df["cdf"] = stats_df["pdf"].cumsum()
|
||||
stats_df = stats_df.reset_index()
|
||||
|
||||
stats_df.plot(x="goodput", y=["cdf"], grid=True)
|
||||
plot_cdf(transmission_df, "goodput")
|
||||
|
||||
if args.save:
|
||||
plt.savefig("{}cdf_plot.pdf".format(args.save))
|
||||
plt.savefig("{}{}_cdf_plot.pdf".format(args.save, "goodput"))
|
||||
else:
|
||||
plt.show()
|
||||
Reference in New Issue
Block a user