Skip to content
Snippets Groups Projects

pydtn agkmeans and version 1.0

Merged Hunter McConnell (rtm534) requested to merge summer2022 into develop
2 files
+ 38
12
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 30
4
"""Example to run a batch of simlations on SHED data."""
__author__ = 'Jarrod Pas <j.pas@usask.ca>'
__authors__ = 'Jarrod Pas <j.pas@usask.ca>, Hunter McConnell <hunter.mcconnell@usask.ca>'
import os
import sys
import csv
from argparse import ArgumentParser
from collections import namedtuple
from multiprocessing import Pool
@@ -68,7 +70,7 @@ def main(args):
trace = args['shed']
node_types = [
Node,
Node, # direct delivery
EpidemicNode,
BubbleKCliqueNode,
HCBFKCliqueNode,
@@ -77,12 +79,35 @@ def main(args):
]
for seed in args['seeds']:
if seed is not None:
seed = seed[0] #hacky, gets rid of TypeError: unhashable type: 'list'
for node_type in node_types:
sim = Simulation(trace=trace, node_type=node_type, seed=seed)
simulations.append(sim)
results = {}
for stats in pool.imap_unordered(run_simulation, simulations):
log(stats)
if not args['quiet']:
log(stats)
type = stats['node_type']
if type not in results:
results[type] = []
results[type].append(stats)
# find unused filename
i = 0
while os.path.exists(f"results{i}.csv"):
i += 1
# dump sim stats in csv
with open(f"results{i}.csv", 'w', newline='') as results_file:
for node_type in results:
fieldnames = results[node_type][0].keys()
writer = csv.DictWriter(results_file, fieldnames=fieldnames)
writer.writeheader()
for result in results[node_type]:
writer.writerow(result)
def parse_args(args):
@@ -91,8 +116,9 @@ def parse_args(args):
parser.add_argument('shed')
parser.add_argument('--pretty', action='store_true')
parser.add_argument('--quiet', '-q', action='store_true')
parser.add_argument('--seeds', '-s',
metavar='SEED', type=int, nargs='+', default=[None])
action='append', metavar='SEED', type=int, nargs='+', default=[None])
args = parser.parse_args(args)
return vars(args)
Loading