From ae4d500ba62b9f1de4c5189139eb91d5a8807592 Mon Sep 17 00:00:00 2001 From: KunoiSayami Date: Sun, 18 Jun 2023 16:14:36 +0800 Subject: feat(exp): Add more function in analysis0617 Signed-off-by: KunoiSayami --- analysis0617.py | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/analysis0617.py b/analysis0617.py index 3e62482..58356f8 100755 --- a/analysis0617.py +++ b/analysis0617.py @@ -1,5 +1,6 @@ #!/usr/bin/env python import argparse +import ast import asyncio import random @@ -32,6 +33,28 @@ def grab_limit(limit: str) -> tuple[int, int]: return 10, int(limit) +def get_list_average(array: list[float]) -> float: + return int(sum(array) / len(array) * 1000000) / 1000000 + + +def analysis(data: dict[int, dict[int, dict[str, list[float]]]]) -> dict[int, dict[int, dict[str, float]]]: + new_dict = {} + for key, value in data.items(): + new_dict.update({key: {}}) + for key2, value2 in value.items(): + new_dict[key].update( + {key2: {'normal': get_list_average(value2['normal']), 'custom': get_list_average(value2['custom'])}}) + return new_dict + + +def print_excel(data: dict[int, dict[int, dict[str, list[float]]]]) -> None: + result = analysis(data) + print('sample', 'search', 'normal', 'custom', sep=',') + for key, value in result.items(): + for key2, value2 in value.items(): + print(key, key2, value2['normal'], value2['custom'], sep=',') + + async def main(matches: argparse.Namespace) -> None: def pow2(n: int) -> int: return 2 ** n @@ -71,13 +94,22 @@ async def main(matches: argparse.Namespace) -> None: result[sample][search]['custom'].append(custom) print(fault_run, '/', total_run) print(result) + print(analysis(result)) if __name__ == '__main__': arg_ = argparse.ArgumentParser() - arg_.add_argument("exec1") - arg_.add_argument("exec2") - arg_.add_argument("sample_limit") - arg_.add_argument("limit") + sub_ = arg_.add_subparsers(title='sub', dest='sub') + run_ = sub_.add_parser('run') + sub_.add_parser('excel') + run_.add_argument("exec1") + run_.add_argument("exec2") + run_.add_argument("sample_limit") + run_.add_argument("limit") parser_ = arg_.parse_args() - asyncio.run(main(parser_)) + if parser_.sub == 'run': + asyncio.run(main(parser_)) + elif parser_.sub == 'excel': + print_excel(ast.literal_eval(input())) + else: + print(analysis(ast.literal_eval(input()))) -- cgit v1.3.1