Skip to content
Snippets Groups Projects

pydtn agkmeans and version 1.0

Merged Hunter McConnell (rtm534) requested to merge summer2022 into develop
7 files
+ 123
59
Compare changes
  • Side-by-side
  • Inline
Files
7
+ 44
18
@@ -8,17 +8,16 @@ from os import path
from multiprocessing import Pool
from random import randint
from typing import ChainMap
from progress.bar import Bar
import sys
import os
import copy
import csv
import time
import pandas as pd
import matplotlib.pyplot as plt
import yaml
from progress.bar import Bar
from numpy import mean
from pydtnsim import Network, RandomTraffic, CSVTrace
from pydtnsim import gui as g
@@ -42,9 +41,13 @@ def run_simulation(simulation):
}
if simulation.traffic_options["start"] < simulation.node_options["epoch"]:
simulation.traffic_options["start"] = simulation.node_options["epoch"] # otherwise get none type error when clustering
simulation.traffic_options["start"] = simulation.node_options[
"epoch"
] # otherwise get none type error when clustering
traffic = RandomTraffic(nodes, **ChainMap(simulation.traffic_options, {"seed":simulation.seed}))
traffic = RandomTraffic(
nodes, **ChainMap(simulation.traffic_options, {"seed": simulation.seed})
)
network = Network(nodes, trace, traffic)
network.run()
@@ -53,9 +56,16 @@ def run_simulation(simulation):
with open("_packets_.txt", "a", encoding="utf-8") as file:
file.write("__" + str(simulation.node_type) + "__" + simulation.trace + "__\n")
for packet in network.stats["packets"]:
#if packet["source"] is None or packet["destination"] is None:
file.write("S" + str(packet["source"].name) + "\tD" + str(packet["destination"].name) +
"\ttrace: " + packet["traceroute"] + "\n")
# if packet["source"] is None or packet["destination"] is None:
file.write(
"S"
+ str(packet["source"].name)
+ "\tD"
+ str(packet["destination"].name)
+ "\ttrace: "
+ packet["traceroute"]
+ "\n"
)
stats = {
"trace": simulation.trace,
@@ -75,6 +85,7 @@ def bar_plot(graphing_options, results):
bar plot sim results
todo: error bars?
"""
#pylint:disable=invalid-name
choice = graphing_options["choice"]
dependant = graphing_options["dependant"]
data = [[inp] for inp in graphing_options["input"]]
@@ -109,7 +120,15 @@ def bar_plot(graphing_options, results):
dat.append(mean(batch))
pd.DataFrame(this_data, columns=columns).plot(
x=choice, kind="bar", stacked=False, rot=0, ylabel=dep, ax=ax, colormap="Purples", edgecolor="black", legend=False
x=choice,
kind="bar",
stacked=False,
rot=0,
ylabel=dep,
ax=ax,
colormap="Purples",
edgecolor="black",
legend=False,
)
else:
for node, stats in ordered_results:
@@ -126,7 +145,13 @@ def bar_plot(graphing_options, results):
dat.append(mean(batch))
pd.DataFrame(data, columns=columns).plot(
x=choice, kind="bar", stacked=False, rot=0, ylabel=dependant[0], colormap="Purples", edgecolor="black"
x=choice,
kind="bar",
stacked=False,
rot=0,
ylabel=dependant[0],
colormap="Purples",
edgecolor="black",
)
plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left", borderaxespad=0)
@@ -183,7 +208,6 @@ def create_sim_list(config):
{"start": config["NodeOptions"]["epoch"]}, config["TrafficOptions"]
)
batch = config["SimOptions"]["batch"]
# use user seeds first, if insufficient for batch number add random seeds
@@ -270,8 +294,13 @@ def main(args):
simulations = create_sim_list(config)
results = {}
with Bar("Progress:", max = len(simulations), suffix='sim:%(index)d/%(max)d\testimated time remaining: %(eta_td)s\n\t\telapsed time: %(elapsed_td)s') as bar:
with Bar(
"Progress:",
max=len(simulations),
# pylint:disable=line-too-long
suffix="sim:%(index)d/%(max)d\testimated time remaining: %(eta_td)s\n\t\telapsed time: %(elapsed_td)s",
) as bar:
for stats in pool.imap_unordered(run_simulation, simulations):
node_type = stats["node_type"]
if node_type not in results:
@@ -280,7 +309,7 @@ def main(args):
bar.next()
try:
# dump stats in csv
# dump stats in csv
with open("testing.csv", "w", newline="") as results_file:
for node_type in results:
fieldnames = results[node_type][0].keys()
@@ -294,10 +323,7 @@ def main(args):
pass
# graph results
#bar_plot(config["GraphingOptions"], results)
# bar_plot(config["GraphingOptions"], results)
def parse_args(args):
Loading