Source code for symupy.parser.csvparser

"""
CSV Parser
==========
A module to parse information from SymuFlow output CSVs
"""
# ============================================================================
# STANDARD  IMPORTS
# ============================================================================

import re
from collections import defaultdict, OrderedDict


# ============================================================================
# INTERNAL IMPORTS
# ============================================================================

# ============================================================================
# CLASS AND DEFINITIONS
# ============================================================================


[docs]def get_iteration_PPaths(file): file = open(file) nb_iter = defaultdict(OrderedDict) start = 0 prev_line = None for count, line in enumerate(file): if "Total travel time on the assignment period is" in line: # nb_iter.append([start, count-3]) col = prev_line.split(";") nb_iter[int(col[0])][int(col[1])] = [start, count - 1] start = count + 3 prev_line = line return dict(nb_iter)
[docs]def get_iteration_final_PPaths(file): file = open(file) nb_iter = OrderedDict() start = 0 prev_line = None for count, line in enumerate(file): if "Total travel time on the assignment period is" in line: # nb_iter.append([start, count-3]) col = prev_line.split(";") nb_iter[int(col[0])] = [start, count - 1] start = count + 3 prev_line = line return dict(nb_iter)
[docs]def get_iteration_distribution(file): file = open(file) nb_iter = defaultdict(lambda: defaultdict(OrderedDict)) start = 1 prev_line = "" prev_prev_line = None inner_loop = 0 outer_loop = 0 for count, line in enumerate(file): # if line.strip() == '' and prev_line.strip() == '': if (line + prev_line).strip() == "": period = int(prev_prev_line.split(";")[0]) outer_loop = int(prev_prev_line.split(";")[1]) inner_loop = int(prev_prev_line.split(";")[2]) nb_iter[period][outer_loop][inner_loop] = [start, count - 2] start = count + 1 prev_prev_line = prev_line prev_line = line return {key: dict(val) for key, val in nb_iter.items()}