Python 读取文本格式的 golden 和 target 数据对比写出报告

news/2025/1/16 2:43:07/

文章目录

    • 前言
    • golden 和 target 数据格式
    • 程序

前言

Python 读取文本格式的 golden 和 target 数据对比并将报告写入到文本文件中

golden 和 target 数据格式

case1 result 0.2
case2 result 0.3
case3 result 0.35
case4 result 0.012

程序


import os
import sys
import math
import argparse
import pprint
from collections import OrderedDictdef CommandParser():parser = argparse.ArgumentParser()parser.add_argument('--golden', '-g', type=str, required=True, help='given ref(golden) file for analysis')parser.add_argument('--target', '-t', type=str, required=True, help='given target file for analysis')parser.add_argument('--out', '-o', type=str, required=False, default='anaysis_result.txt', help='output filename, default is "anaysis_result.txt"')return parser.parse_args()def readFile(file_name):valMap = OrderedDict()f = open(file_name)lines = f.readlines()for line in lines :line = line.strip('\n')line = line.split(' ')case = line[0]value = float(line[2])valMap[case] = valuef.close()return valMapdef generate_report(golden, target, file_name):f = open(file_name, 'w')errors = []f.write('{0:<30s} | {1:<8s} {2:<8s} | {3:<8s}\n'.format('case', 'golden', 'target', 'error'))for case in golden:gol = golden[case]if case not in target:f.write('{0:<30s} | {1:<8.3f} {2:<8s} | {3:<8s}\n'.format(case, gol, '--', '--'))else:tar = target[case]err = gol/tar - 1.0errors.append(err)f.write('{0:<30s} | {1:<8.3f} {2:<8.3f} | {3:<8.2%}\n'.format(case, gol, tar, err))mean = sum(errors)/len(errors)var = sum([pow(err-mean, 2) for err in errors]) / len(errors)std2 = 2.0*math.sqrt(var)max_error = max(errors)min_error = min(errors)outP5 = sum([1 if err > 0.05 else 0 for err in errors])outN5 = sum([1 if err <- 0.05 else 0 for err in errors])f.write('\n')f.write('mean : {0:8.2%}\n'.format(mean)) f.write('2sigma : {0:8.2%}\n'.format(std2)) f.write('max : {0:8.2%}\n'.format(max_error)) f.write('min : {0:8.2%}\n'.format(min_errorf.close()if __name__ == '__main__':args = CommandParser()if  not os.path.exists(args.golden) : print(args.golden, " is not exit, please check it.")if  not os.path.exists(args.target) : print(args.target, " is not exit, please check it.")golden = readFile(args.golden)target = readFile(args.target)#print(golden)#print(target)generate_report(golden, target, args.out)

http://www.ppmy.cn/news/1297255.html

相关文章

自承载 Self-Host ASP.NET Web API 1 (C#)

本教程介绍如何在控制台应用程序中托管 Web API。 ASP.NET Web API不需要 IIS。 可以在自己的主机进程中自托管 Web API。 创建控制台应用程序项目 启动 Visual Studio&#xff0c;然后从“开始”页中选择“新建项目”。 或者&#xff0c;从“ 文件 ”菜单中选择“ 新建 ”&a…

2. Mybatis 中SQL 执行原理

这里有两种方式&#xff0c;一种为常用的 Spring 依赖注入 Mapper 的方式。另一种为直接使用 SqlSessionTemplate 执行 Sql 的方式。 Spring 依赖注入 Mapper 的方式 Mapper 接口注入 SpringIOC 容器 Spring 容器在扫描 BeanDefinition 阶段会扫描 Mapper 接口类&#xff0c…

玩转Mysql 五(MySQL索引)

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 一、索引的数据结构 1、MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是…

华为OD机试 - 火星文计算2(Java JS Python C)

题目描述 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y = 4*x+3*y+2x$y = 2*x+y+3其中 x、y 是无符号整数地球人公式按C语言规则计算火星人公式中,#的优先级高于$,相同的运算符,按从左到右的顺序计算现有一段火星人的字符串报文,请你来翻译并计算结果。…

解决Vue.js not detected的问题

"Vue.js not detected"通常是由于Vue Devtools无法检测到你的Vue.js应用程序而引起的。这个问题可能有几种原因&#xff0c;下面是一些建议的解决方法&#xff1a; 1. **安装Vue Devtools浏览器插件:** - 确保你已经安装了Vue Devtools浏览器插件。你可以在Chrom…

大模型笔记【2】 LLM in Flash

Apple最近发表了一篇文章&#xff0c;可以在iphone, MAC 上运行大模型&#xff1a;【LLM in a flash: Efficient Large Language Model Inference with Limited Memory】。 主要解决的问题是在DRAM中无法存放完整的模型和计算&#xff0c;但是Flash Memory可以存放完整的模型。…

web左侧伸缩菜单栏/导航栏

效果展示&#xff1a; 百度网盘链接下载全部资源&#xff1a; http://链接&#xff1a;https://pan.baidu.com/s/1ZnKdWxTH49JhqZ7Xd-cJIA?pwd4332 提取码&#xff1a;4332 html/JQuery代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head&g…

【C/C++】轻量级跨平台 开源串口库 CSerialPort

文章目录 1、简介2、支持的平台3、已经支持的功能4、Linux下使用5、使用vcpkg安装CSerialPort6、交叉编译7、效果图8、基于CSerialPort的应用8.1、CommMaster通信大师8.2、CommLite串口调试器 1、简介 Qt 的QSerialPort 已经是跨平台的解决方案&#xff0c;但Qt开发后端需要 Q…