diff --git a/exam/000/test_save_result.py b/exam/000/test_save_result.py index f2c8706..f66b9d5 100644 --- a/exam/000/test_save_result.py +++ b/exam/000/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) @@ -450,5 +474,5 @@ if __name__ == '__main__': for exam_index, test_exam_path in enumerate(all_output_path): # test_exam_path = exam_path / test_exam_path set_environment(exam_index) - # test_and_analysis_and_visual(dataset_type="test") + test_and_analysis_and_visual(dataset_type="test") test_and_analysis_and_visual(dataset_type="all_test") diff --git a/exam/001/test_save_result.py b/exam/001/test_save_result.py index 784ffb8..f66b9d5 100644 --- a/exam/001/test_save_result.py +++ b/exam/001/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) @@ -446,9 +470,9 @@ def segment_to_event(df_segment, dataset_type): # shap_values = explainer.shap_values() if __name__ == '__main__': - all_output_path = list(exam_path.rglob("KFold_0")) + all_output_path = list(exam_path.rglob("KFold_*")) for exam_index, test_exam_path in enumerate(all_output_path): # test_exam_path = exam_path / test_exam_path set_environment(exam_index) - # test_and_analysis_and_visual(dataset_type="test") + test_and_analysis_and_visual(dataset_type="test") test_and_analysis_and_visual(dataset_type="all_test") diff --git a/exam/002/test_save_result.py b/exam/002/test_save_result.py index 784ffb8..f66b9d5 100644 --- a/exam/002/test_save_result.py +++ b/exam/002/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) @@ -446,9 +470,9 @@ def segment_to_event(df_segment, dataset_type): # shap_values = explainer.shap_values() if __name__ == '__main__': - all_output_path = list(exam_path.rglob("KFold_0")) + all_output_path = list(exam_path.rglob("KFold_*")) for exam_index, test_exam_path in enumerate(all_output_path): # test_exam_path = exam_path / test_exam_path set_environment(exam_index) - # test_and_analysis_and_visual(dataset_type="test") + test_and_analysis_and_visual(dataset_type="test") test_and_analysis_and_visual(dataset_type="all_test") diff --git a/exam/003/test_save_result.py b/exam/003/test_save_result.py index ae722a0..f66b9d5 100644 --- a/exam/003/test_save_result.py +++ b/exam/003/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) diff --git a/exam/004/test_save_result.py b/exam/004/test_save_result.py index ae722a0..f66b9d5 100644 --- a/exam/004/test_save_result.py +++ b/exam/004/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) diff --git a/exam/005/test_save_result.py b/exam/005/test_save_result.py index ae722a0..f66b9d5 100644 --- a/exam/005/test_save_result.py +++ b/exam/005/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) diff --git a/exam/011/test_save_result.py b/exam/011/test_save_result.py index 784ffb8..f66b9d5 100644 --- a/exam/011/test_save_result.py +++ b/exam/011/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) @@ -446,9 +470,9 @@ def segment_to_event(df_segment, dataset_type): # shap_values = explainer.shap_values() if __name__ == '__main__': - all_output_path = list(exam_path.rglob("KFold_0")) + all_output_path = list(exam_path.rglob("KFold_*")) for exam_index, test_exam_path in enumerate(all_output_path): # test_exam_path = exam_path / test_exam_path set_environment(exam_index) - # test_and_analysis_and_visual(dataset_type="test") + test_and_analysis_and_visual(dataset_type="test") test_and_analysis_and_visual(dataset_type="all_test") diff --git a/exam/012/test_save_result.py b/exam/012/test_save_result.py index ae722a0..f66b9d5 100644 --- a/exam/012/test_save_result.py +++ b/exam/012/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) diff --git a/exam/013/test_save_result.py b/exam/013/test_save_result.py index ae722a0..f66b9d5 100644 --- a/exam/013/test_save_result.py +++ b/exam/013/test_save_result.py @@ -7,7 +7,7 @@ @email:2021022362@m.scnu.edu.cn @time:2022/02/21 """ - +import logging import os import sys @@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"] columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN", "acc", "recall", "spec", "pre", "NPV", "F1score", "support"] +logging.getLogger('matplotlib.font_manager').disabled = True +logging.getLogger('matplotlib.ticker').disabled = True +logger = logging.getLogger() +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s")) +logger.addHandler(ch) + +if (exam_path / "test.log").exists(): + (exam_path / "test.log").unlink() +fh = logging.FileHandler(exam_path / "test.log", mode='a') +fh.setLevel(logging.INFO) +fh.setFormatter(logging.Formatter("%(message)s")) +logger.addHandler(fh) +logger.info("------------------------------------") + def set_environment(i): global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \ model, model_name, train_set, test_set output_path = all_output_path[i] - print(output_path) + logger.info(output_path) segments_results_save_path = (output_path / "segments_results") segments_results_save_path.mkdir(exist_ok=True) events_results_save_path = (output_path / "events_results") @@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type): sampNo = train_set elif dataset_type == "all_test": sampNo = test_set + else: + sampNo = None + logger.info("出错了") + + exam_name = Path("./").absolute().name + test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type, segment_augment=my_segment_augment) test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0) @@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type): test_loss /= len(test_loader) calc_metrics.compute() - print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) + logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}") + logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test")) calc_metrics.reset() df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy() @@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type): def analysis_results(df_result, base_path, dataset_type, is_event=False): if df_result.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return None (base_path / dataset_type).mkdir(exist_ok=True, parents=True) @@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False): def confusionMatrix(df_analysis, base_path, dataset_type): if df_analysis is None: - print(base_path, dataset_type, "is None") + logger.info(base_path, dataset_type, "is None") return if df_analysis.empty: - print(base_path, dataset_type, "is_empty") + logger.info(base_path, dataset_type, "is_empty") return classes = ["normal", "SA"] (base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True) @@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]], columns=columns), ignore_index=True) - if value > 30: - print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) + # if value > 30: + # logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]]) # 长度不够 else: df["thresh_Pred"][SP:EP] = 0 @@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type): df_event = df_event.append(pd.DataFrame( [[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30, (segment_no + 1) * 30, 0]], columns=columns), - ignore_index=True) + ignore_index=True) df_all_event = df_all_event.append(df_event, ignore_index=True) diff --git a/exam/试验记录.txt b/exam/试验记录.txt index bb88feb..b2f60f2 100644 --- a/exam/试验记录.txt +++ b/exam/试验记录.txt @@ -5,9 +5,11 @@ ------------------------------------------------- 000 学习率 1e-4 epoch 20 过早(epoch 6)过拟合 - +------------------------------------------------ 001 学习率 1e-5 epoch 50 可以 + +----------------------------------------------- 002 学习率 1e-6 epoch 50 比较合适,就是太慢了 @@ -63,7 +65,34 @@ 数据集减去平均值外,使用每个片段的混叠信号Z-score整理数据集 -------------------------------------------------------- 013 -学习率 1e-5 epoch 50 +BEST TEST 学习率 1e-5 epoch 50 + Acc Rec Pre Spe F1 + all 84.56 85.53 65.01 84.22 73.87 + +EXAM_NAME: 013 SampNO: [582, 1000] +test epoch: 0 loss: 1.1915464037836785 lr: None + Acc Rec Pre Spe F1 + all 60.04 11.88 4.92 66.96 6.96 + +EXAM_NAME: 013 SampNO: [286, 1009] +test epoch: 0 loss: 0.6172940751263513 lr: None + Acc Rec Pre Spe F1 + all 77.71 61.15 62.02 84.55 61.58 + +EXAM_NAME: 013 SampNO: [282, 966] +test epoch: 0 loss: 1.210226387001914 lr: None + Acc Rec Pre Spe F1 + all 39.09 95.56 0.23 39.01 0.46 + +EXAM_NAME: 013 SampNO: [726, 1006] +test epoch: 0 loss: 0.603616701004974 lr: None + Acc Rec Pre Spe F1 + all 73.5 56.9 41.81 78.1 48.21 + +EXAM_NAME: 013 SampNO: [229, 1004] +test epoch: 0 loss: 0.3528211629552555 lr: None + Acc Rec Pre Spe F1 + all 84.68 17.63 4.82 87.15 7.56 --------------------------------------------------------