plot progress per run
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
eb4f451303
commit
dc51727b32
|
@ -3,6 +3,7 @@
|
||||||
import networkx as nx
|
import networkx as nx
|
||||||
import logging, random
|
import logging, random
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
import matplotlib
|
||||||
from functools import partial, partialmethod
|
from functools import partial, partialmethod
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from DAS.tools import *
|
from DAS.tools import *
|
||||||
|
@ -13,7 +14,7 @@ from DAS.validator import *
|
||||||
class Simulator:
|
class Simulator:
|
||||||
"""This class implements the main DAS simulator."""
|
"""This class implements the main DAS simulator."""
|
||||||
|
|
||||||
def __init__(self, shape, config):
|
def __init__(self, shape, config, execID):
|
||||||
"""It initializes the simulation with a set of parameters (shape)."""
|
"""It initializes the simulation with a set of parameters (shape)."""
|
||||||
self.shape = shape
|
self.shape = shape
|
||||||
self.config = config
|
self.config = config
|
||||||
|
@ -24,6 +25,7 @@ class Simulator:
|
||||||
self.logLevel = config.logLevel
|
self.logLevel = config.logLevel
|
||||||
self.proposerID = 0
|
self.proposerID = 0
|
||||||
self.glob = []
|
self.glob = []
|
||||||
|
self.execID = execID
|
||||||
|
|
||||||
# In GossipSub the initiator might push messages without participating in the mesh.
|
# In GossipSub the initiator might push messages without participating in the mesh.
|
||||||
# proposerPublishOnly regulates this behavior. If set to true, the proposer is not
|
# proposerPublishOnly regulates this behavior. If set to true, the proposer is not
|
||||||
|
@ -240,6 +242,16 @@ class Simulator:
|
||||||
progress = pd.DataFrame(progressVector)
|
progress = pd.DataFrame(progressVector)
|
||||||
if self.config.saveProgress:
|
if self.config.saveProgress:
|
||||||
self.result.addMetric("progress", progress.to_dict(orient='list'))
|
self.result.addMetric("progress", progress.to_dict(orient='list'))
|
||||||
|
if self.config.plotProgress:
|
||||||
|
progress.plot.line(subplots = [[cnS, cnN, cnV], [cnT0], [cnT1, cnR1, cnD1], [cnT2, cnR2, cnD2]],
|
||||||
|
title = str(self.shape))
|
||||||
|
if not os.path.exists("results"):
|
||||||
|
os.makedirs("results")
|
||||||
|
if not os.path.exists("results/"+self.execID):
|
||||||
|
os.makedirs("results/"+self.execID)
|
||||||
|
filePath = "results/"+self.execID+"/"+str(self.shape)+".png"
|
||||||
|
matplotlib.pyplot.savefig(filePath)
|
||||||
|
|
||||||
self.result.populate(self.shape, missingVector)
|
self.result.populate(self.shape, missingVector)
|
||||||
return self.result
|
return self.result
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@ dumpXML = 1
|
||||||
|
|
||||||
# save progress vectors to XML
|
# save progress vectors to XML
|
||||||
saveProgress = 1
|
saveProgress = 1
|
||||||
|
|
||||||
|
# plot progress for each run to PNG
|
||||||
|
plotProgress = 1
|
||||||
|
|
||||||
visualization = 1
|
visualization = 1
|
||||||
logLevel = logging.INFO
|
logLevel = logging.INFO
|
||||||
|
|
||||||
|
|
2
study.py
2
study.py
|
@ -28,7 +28,7 @@ def runOnce(config, shape, execID):
|
||||||
shape.setSeed(config.randomSeed+"-"+str(shape))
|
shape.setSeed(config.randomSeed+"-"+str(shape))
|
||||||
random.seed(shape.randomSeed)
|
random.seed(shape.randomSeed)
|
||||||
|
|
||||||
sim = Simulator(shape, config)
|
sim = Simulator(shape, config, execID)
|
||||||
sim.initLogger()
|
sim.initLogger()
|
||||||
sim.initValidators()
|
sim.initValidators()
|
||||||
sim.initNetwork()
|
sim.initNetwork()
|
||||||
|
|
Loading…
Reference in New Issue