import os import numpy as np # implemented with list because of memory issues def read_cascades(name: str, with_cascade_id=False): num_of_nodes = -1 cascades = [] finish_time = 0 if os.path.isfile('./{}'.format(name)): with open(name, 'r') as outfile: for line in outfile: if line.strip() == '': pass elif ';' in line: cascade = [] if with_cascade_id: stripped = line.strip().split(';')[1].split(',') for i in range(len(stripped)): if i % 2 == 0: cascade += [(int(stripped[i]), float(stripped[i + 1]))] if cascade[-1][1] > finish_time: finish_time = cascade[-1][1] else: # cascades += [[(int(event.split(',')[0]), float(event.split(',')[1])) for event in # line.strip().split(';')]] for event in line.strip().split(';'): cascade += [(int(event.split(',')[0]), float(event.split(',')[1]))] if cascade[-1][1] > finish_time: finish_time = cascade[-1][1] cascades += [cascade] else: num_of_nodes += 1 print(cascades) print(num_of_nodes) print(finish_time) return num_of_nodes, finish_time, cascades def read_result(name: str, num_of_nodes: int = 32): mat = np.zeros([num_of_nodes, num_of_nodes]) if os.path.isfile('./{}'.format(name)): with open(name, 'r') as outfile: for line in outfile: if '.' in line: stripped = line.split(',') i = int(stripped[0]) j = int(stripped[1]) mat[i][j] = float(stripped[-1]) return mat def print_mat(mat, num_of_nodes=32): for i in range(num_of_nodes): for j in range(num_of_nodes): if mat[i][j] != 0: print((i, j, mat[i][j]), end=' ') print() def new_print(mat): for x in mat: print(x) def normalize(mat): mean = np.mean(mat) return np.vectorize(lambda val: 1. if val >= mean else 0.)(np.repeat(mat, 1, axis=1))