Skip to content
Snippets Groups Projects
processing_projection_data.py 2.27 KiB
Newer Older
from global_types.parametric.Generators import ParametricKinds
from parser.InputParser import get_tplv_gt_from_file
import time
from math import trunc
import numpy as np
import glob


def write_avg_mst_results(folder_name):
    write_mst_averages_to_file(ParametricKinds.LOAD_BALANCER, folder_name)
    write_mst_averages_to_file(ParametricKinds.LOGGING, folder_name)
    write_mst_averages_to_file(ParametricKinds.MAP_REDUCE, folder_name)
    write_mst_averages_to_file(ParametricKinds.MEM_CACHE, folder_name)
    write_mst_averages_to_file(ParametricKinds.P2P_BROADCAST, folder_name)
    write_mst_averages_to_file(ParametricKinds.TREE_BROADCAST, folder_name)


def write_param_size(folder_name):
    write_param_file_to_file(ParametricKinds.LOAD_BALANCER, folder_name)
    write_param_file_to_file(ParametricKinds.LOGGING, folder_name)
    write_param_file_to_file(ParametricKinds.MAP_REDUCE, folder_name)
    write_param_file_to_file(ParametricKinds.MEM_CACHE, folder_name)
    write_param_file_to_file(ParametricKinds.P2P_BROADCAST, folder_name)
    write_param_file_to_file(ParametricKinds.TREE_BROADCAST, folder_name)


def write_mst_averages_to_file(directory, kind):
    prefix = "*evaluation"
    out_filename = directory + "a_summary_" + kind.value + ".txt"
    pattern = directory + prefix + "*.txt"
    files = glob.glob(pattern)
    data = [np.loadtxt(f, skiprows=1) for f in files]
    x = np.array([d[:, 2] for d in data])
    # use mask to exclude max and min
    # x_mask = np.logical_or(x == x.max(1, keepdims=1), x == x.min(1, keepdims=1))
    # x_masked = np.ma.masked_array(x, x_mask)
    # m = np.(x_masked, axis=0)
    m = np.mean(x, axis=0)
    snd = data[0][:, 1]     # use [0, 1] instead of 1 for size of type
    without_size = np.column_stack([snd, m])
    np.savetxt(out_filename, without_size)


def write_param_file_to_file(directory, kind):
    prefix = "*evaluation"
    out_filename = directory + "a_mapping_" + kind.value + ".txt"
    pattern = directory + prefix + "*.txt"
    files = glob.glob(pattern)
    file = files[0]
    data = np.loadtxt(file, skiprows=1)
    size = data[:, 0]
    param = data[:, 1]
    param_size = np.column_stack([param, size])
    np.savetxt(out_filename, param_size)


# helper function
def get_unified_repr_floats(number):
    return "%10.3f" % number