Newer
Older
"""Example to run a batch of simlations on SHED data."""
__author__ = 'Jarrod Pas <j.pas@usask.ca>'
from pydtn import Network, RandomTraffic, Node, EpidemicNode, CSVTrace
from pydtn.community import BubbleKCliqueNode, BubbleLouvainNode
from pydtn.community import HCBFKCliqueNode, HCBFLouvainNode
from pydtn.community import HCBFAGKmeansNode, BubbleAGKmeansNode
Simulation = namedtuple('Simulation', ['trace', 'node_type', 'seed'])
def run_simulation(simulation):
"""Run a simulation."""
seed = simulation.seed
csv = path.join(simulation.trace, 'contact.csv')
metadata = path.join(simulation.trace, 'metadata.json')
trace = CSVTrace(csv, metadata=metadata)
traffic_options = {
'seed': seed,
'start': epoch,
traffic = RandomTraffic(nodes, **traffic_options)
network = Network(nodes, traffic=traffic, trace=trace)
network.run()
stats = {
'node_type': node_type.__name__,
'seed': seed,
}
stats.update(network.stats_summary)
# return stats because we can't pickle the network as it is a generator.
BubbleAGKmeansNode,
HCBFAGKmeansNode,
BubbleLouvainNode,
HCBFLouvainNode,
BubbleKCliqueNode,
HCBFKCliqueNode,
sim = Simulation(trace=trace, node_type=node_type, seed=seed)
simulations.append(sim)
for stats in pool.imap_unordered(run_simulation, simulations):
parser = ArgumentParser()
parser.add_argument('shed')