Newer
Older
import csv
from .trace import Trace
class CSVTrace(Trace):
def __init__(self, path=None):
self.file = open(path)
self.reader = csv.reader(self.file)
time, a, b, state = next(self.reader)
if not time == 'time' and a == 'a' and b == 'b' and state == 'state':
raise ValueError('improperly formatted csv')
# first row of data is csv is [duration, -1, -1, nodes]
duration, _, _, nodes = map(int, next(self.reader))
super().__init__(duration, nodes)
def process(self, network):
''''''
env = self.env
for row in self.reader:
time, a, b, state = map(int, row)
if time > env.now:
yield env.timeout(time - env.now)
network.set_link(a, b, bool(state))
self.file.close()