Loading parse_pytest_json2.py 0 → 100644 +97 −0 Original line number Diff line number Diff line import argparse from pathlib import Path import os import uuid import requests import pandas as pd from glob import glob import subprocess import re import platform import numpy as np import shutil import matplotlib.pyplot as pplt import json import math def parse_pytest_json(filename): mld_thresh = 1.0 ssnr_thresh = 50.0 num_tests = 0 mld_bel_th = 0 ssnr_above_th = 0 all_mld = np.empty(0) all_ssnr = np.empty(0) with open(filename) as jd: data = json.load(jd) df = pd.DataFrame(data['tests']) #breakpoint() df1 = pd.DataFrame(df['user_properties']) dt = df1['user_properties'] for i in range(0, len(dt)): ent = dt[i] if isinstance(ent, float) == False: for i in range(0, len(ent)): val = ent[i] if 'MLD' in val: num_tests = num_tests + 1 mld = val['MLD'] all_mld = np.append(all_mld, float(mld)) if 'MIN_SSNR' in val: ssnr = val['MIN_SSNR'] if ssnr != 'inf' and ssnr != 'nan': all_ssnr = np.append(all_ssnr, float(ssnr)) else: ssnr_above_th = ssnr_above_th + 1 all_ssnr = np.append(all_ssnr, 1000.0) print('MAX MLD is ', str(np.max(all_mld))) print('MIN SSNR is ', str(np.min(all_ssnr))) ## print MLD stats mld_th = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) mld_hist = np.empty(0) for i in range(0, mld_th.size): all_mld_1 = all_mld[all_mld < mld_th[i]] mld_hist = np.append(mld_hist, all_mld_1.size) mld_perc = 100*mld_hist/num_tests print(mld_hist) print(mld_perc) ## print SSNR stats ssnr_th = np.array([50.0, 55.0, 60.0, 65.0, 70.0]) ssnr_hist = np.empty(0) for i in range(0, ssnr_th.size): all_ssnr_1 = all_ssnr[all_ssnr > ssnr_th[i]] ssnr_hist = np.append(ssnr_hist, all_ssnr_1.size) ssnr_perc = 100*ssnr_hist/num_tests print(ssnr_hist) print(ssnr_perc) # Save to CSV filename2 = os.path.basename(filename) idx2 = filename2.find('.json'); csv_file = filename2[:idx2] + '_mld_stats' + '.csv'; mld_perc = np.append(mld_perc, np.max(all_mld)) np.savetxt(csv_file, mld_perc.T, delimiter=",", fmt="%f", header=', '.join(map(str, mld_th)), comments="") csv_file = filename2[:idx2] + '_ssnr_stats' + '.csv'; ssnr_perc = np.append(ssnr_perc, np.max(np.min(all_ssnr))) np.savetxt(csv_file, ssnr_perc.T, delimiter=",", fmt="%f", header=', '.join(map(str, ssnr_th)), comments="") if __name__ == "__main__": parser = argparse.ArgumentParser("Parse pytests json script") parser.add_argument("--filename", type=Path, required=True, help=".json file with pytest output. ") args = parser.parse_args() filename:Path = args.filename parse_pytest_json(args.filename) Loading
parse_pytest_json2.py 0 → 100644 +97 −0 Original line number Diff line number Diff line import argparse from pathlib import Path import os import uuid import requests import pandas as pd from glob import glob import subprocess import re import platform import numpy as np import shutil import matplotlib.pyplot as pplt import json import math def parse_pytest_json(filename): mld_thresh = 1.0 ssnr_thresh = 50.0 num_tests = 0 mld_bel_th = 0 ssnr_above_th = 0 all_mld = np.empty(0) all_ssnr = np.empty(0) with open(filename) as jd: data = json.load(jd) df = pd.DataFrame(data['tests']) #breakpoint() df1 = pd.DataFrame(df['user_properties']) dt = df1['user_properties'] for i in range(0, len(dt)): ent = dt[i] if isinstance(ent, float) == False: for i in range(0, len(ent)): val = ent[i] if 'MLD' in val: num_tests = num_tests + 1 mld = val['MLD'] all_mld = np.append(all_mld, float(mld)) if 'MIN_SSNR' in val: ssnr = val['MIN_SSNR'] if ssnr != 'inf' and ssnr != 'nan': all_ssnr = np.append(all_ssnr, float(ssnr)) else: ssnr_above_th = ssnr_above_th + 1 all_ssnr = np.append(all_ssnr, 1000.0) print('MAX MLD is ', str(np.max(all_mld))) print('MIN SSNR is ', str(np.min(all_ssnr))) ## print MLD stats mld_th = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) mld_hist = np.empty(0) for i in range(0, mld_th.size): all_mld_1 = all_mld[all_mld < mld_th[i]] mld_hist = np.append(mld_hist, all_mld_1.size) mld_perc = 100*mld_hist/num_tests print(mld_hist) print(mld_perc) ## print SSNR stats ssnr_th = np.array([50.0, 55.0, 60.0, 65.0, 70.0]) ssnr_hist = np.empty(0) for i in range(0, ssnr_th.size): all_ssnr_1 = all_ssnr[all_ssnr > ssnr_th[i]] ssnr_hist = np.append(ssnr_hist, all_ssnr_1.size) ssnr_perc = 100*ssnr_hist/num_tests print(ssnr_hist) print(ssnr_perc) # Save to CSV filename2 = os.path.basename(filename) idx2 = filename2.find('.json'); csv_file = filename2[:idx2] + '_mld_stats' + '.csv'; mld_perc = np.append(mld_perc, np.max(all_mld)) np.savetxt(csv_file, mld_perc.T, delimiter=",", fmt="%f", header=', '.join(map(str, mld_th)), comments="") csv_file = filename2[:idx2] + '_ssnr_stats' + '.csv'; ssnr_perc = np.append(ssnr_perc, np.max(np.min(all_ssnr))) np.savetxt(csv_file, ssnr_perc.T, delimiter=",", fmt="%f", header=', '.join(map(str, ssnr_th)), comments="") if __name__ == "__main__": parser = argparse.ArgumentParser("Parse pytests json script") parser.add_argument("--filename", type=Path, required=True, help=".json file with pytest output. ") args = parser.parse_args() filename:Path = args.filename parse_pytest_json(args.filename)