single_case_eval.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import os
  2. import sys
  3. import pandas as pd
  4. import numpy as np
  5. import requests
  6. import json
  7. import yaml
  8. import traceback
  9. import single_case_run
  10. from collections import defaultdict
  11. from pathlib import Path
  12. root_path = Path(__file__).resolve().parent.parent
  13. sys.path.append(str(root_path))
  14. from models.common import data_process
  15. from models.common import common
  16. from models.common import log
  17. from config import config
  18. log_path = config.LOG_PATH
  19. logger = log.get_logger(log_path)
  20. def single_case_eval( case_name, mode_label):
  21. print(f'case_name is {case_name}')
  22. logger.info(f"[case:{case_name}] SINGLE_CASE_EVAL: Start running...")
  23. data_path = os.path.join(config.PROCESSED_DATA_PATH, case_name)
  24. reportPath = config.REPORT_PATH
  25. case_path = os.path.join(reportPath, case_name)
  26. if not os.path.exists(case_path):
  27. os.makedirs(case_path)
  28. if not os.path.exists(data_path):
  29. print('Invalid dataPath!')
  30. logger.error(f"[case:{case_name}] SINGLE_CASE_EVAL: Invalid dataPath!")
  31. sys.exit(1)
  32. try:
  33. logger.info(f"[case:{case_name}] data_precheck: Start running...")
  34. is_good_data = data_process.data_precheck(data_path, case_name)
  35. if not is_good_data:
  36. logger.error(f"[case:{case_name}] Serious data frame loss!")
  37. sys.exit(-1)
  38. except Exception as e:
  39. traceback.print_exc()
  40. logger.error(f"[case:{case_name}] SINGLE_CASE_EVAL: Data processed ERROR: {repr(e)}!", exc_info=True)
  41. sys.exit(-1)
  42. # 单用例评价,并生成报告
  43. try:
  44. data = data_process.DataPreprocessing(case_name, mode_label)
  45. case_dict = single_case_run.single_case_run(data, case_name)
  46. single_case_dict = single_case_run.single_case_statistic(case_dict) # 对单用例结果增加内容,并生成报告
  47. full_reportPath = os.path.join(case_path, f'{case_name}_single_report.json')
  48. common.dict2json(single_case_dict, full_reportPath)
  49. except Exception as e:
  50. traceback.print_exc()
  51. logger.error(f"[case:{case_name}] SINGLE_CASE_EVAL: Single case run ERROR: {repr(e)}!", exc_info=True)
  52. sys.exit(-1)
  53. if __name__ == '__main__':
  54. mode_label = 'real_car'
  55. case_name = 1
  56. single_case_eval(case_name, mode_label)