sleep_apnea_hybrid/utils/Draw_Result.py
2022-10-14 22:33:34 +08:00

121 lines
4.8 KiB
Python

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:andrew
@file:Draw_Result.py
@email:admin@marques22.com
@email:2021022362@m.scnu.edu.cn
@time:2022/10/07
"""
from pathlib import Path
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import patchworklib as pw
# import seaborn as sns
import yaml
from plotnine import *
# from matplotlib import pyplot as plt
#
# plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
# plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
from tqdm import tqdm
base_path = Path("../exam")
save_path = Path("../output/20221007")
save_path.mkdir(exist_ok=True, parents=True)
# 比较对象
all_exam_path = list(base_path.iterdir())
compare_path = [
# '001',
'002',
# '003',
# '004',
'005',
'011',
'012',
'013',
]
#
# compare_path = [
# '001',
# '002',
# '003',
# '004',
# ]
def load_data():
columns = ["exam_name", "Fold_index", "sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T",
"F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
df_event_all_test_result = pd.DataFrame(columns=columns)
df_segment_all_test_result = pd.DataFrame(columns=columns)
df_event_test_result = pd.DataFrame(columns=columns)
df_segment_test_result = pd.DataFrame(columns=columns)
for index, exam_name in enumerate(compare_path):
exam_path = base_path / exam_name / 'output'
# all_sub_exam_path = list(exam_path.glob(f'*output*'))
exam_path = list(exam_path.glob(f'output_*'))[0]
print(exam_path)
sub_fold_path = list(exam_path.glob("KFold_*"))
sub_fold_path.sort()
for sub_index, sub_exam_path in enumerate(sub_fold_path):
segment_result_path = sub_exam_path / "segments_results"
segment_test_result_path = segment_result_path / "test"
segment_all_test_result_path = segment_result_path / "all_test"
event_result_path = sub_exam_path / "events_results"
event_test_result_path = event_result_path / "test"
event_all_test_result_path = event_result_path / "all_test"
for sub_samp in segment_test_result_path.glob("*_test_segment_all_metrics.csv"):
df_temp = pd.read_csv(sub_samp, encoding="gbk")
df_segment_test_result.loc[len(df_segment_test_result)] = [exam_name, sub_exam_path.name,
*df_temp.iloc[0].tolist()]
for i in range(5, len(df_temp)):
df_segment_test_result.loc[len(df_segment_test_result)] = [exam_name, sub_exam_path.name,
*df_temp.iloc[i].tolist()]
for sub_samp in segment_all_test_result_path.glob("*_all_test_segment_all_metrics.csv"):
df_temp = pd.read_csv(sub_samp, encoding="gbk")
for i in range(0, len(df_temp)):
df_segment_all_test_result.loc[len(df_segment_all_test_result)] = [exam_name, sub_exam_path.name,
*df_temp.iloc[i].tolist()]
for sub_samp in event_test_result_path.glob("*_test_event_all_metrics.csv"):
df_temp = pd.read_csv(sub_samp, encoding="gbk")
df_event_test_result.loc[len(df_event_test_result)] = [exam_name, sub_exam_path.name,
*df_temp.iloc[0].tolist()]
for i in range(5, len(df_temp)):
df_event_test_result.loc[len(df_event_test_result)] = [exam_name, sub_exam_path.name,
*df_temp.iloc[i].tolist()]
for sub_samp in event_all_test_result_path.glob("*_all_test_event_all_metrics.csv"):
df_temp = pd.read_csv(sub_samp, encoding="gbk")
for i in range(0, len(df_temp)):
df_event_all_test_result.loc[len(df_event_all_test_result)] = [exam_name, sub_exam_path.name,
*df_temp.iloc[i].tolist()]
df_event_test_result.to_csv(save_path / "event_test_result_metrics.csv", index=False, encoding="GBK")
df_segment_test_result.to_csv(save_path / "segment_test_result_metrics.csv", index=False, encoding="GBK")
df_event_all_test_result.to_csv(save_path / "event_all_test_result_metrics.csv", index=False, encoding="GBK")
df_segment_all_test_result.to_csv(save_path / "segment_all_test_segment_metrics.csv", index=False,
encoding="GBK")
return
if __name__ == '__main__':
pass