#!/usr/bin/env python3 """analyze-log - Generate a model from performance benchmarks log files foo """ import argparse import dfatool.cli import dfatool.plotter import dfatool.utils from dfatool.model import AnalyticModel from dfatool.validation import CrossValidator import re def kv_to_param(kv_str, cast): key, value = kv_str.split("=") value = cast(value) return key, value def kv_to_param_f(kv_str): return kv_to_param(kv_str, dfatool.utils.soft_cast_float) def kv_to_param_i(kv_str): return kv_to_param(kv_str, dfatool.utils.soft_cast_int) def parse_logfile(filename): observations = list() with open(filename, "r") as f: for line in f: m = re.search(r"\[::\] *([^|]*?) *[|] *([^|]*?) *[|] *(.*)", line) if m: name_str = m.group(1) param_str = m.group(2) attr_str = m.group(3) param = dict(map(kv_to_param_i, param_str.split(" "))) attr = dict(map(kv_to_param_f, attr_str.split(" "))) observations.append( { "name": name_str, "param": param, "attribute": attr, } ) return observations def main(): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=__doc__ ) dfatool.cli.add_standard_arguments(parser) parser.add_argument( "--plot-unparam", metavar="::[;::