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()