Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import numpy
import json
import os
import pandas as pd
# megnezni hogy hogy megy a kimentese...
# megszamolni, hogy hany elem van a key-ek kozott
# ha at kell irni a kimentest: csak a rosszul klasszifalt fajl nevet kiirni, minden más csak sub dolog legyen
AXIS_CONVERTION = {
'0': "axial",
'1': "coronial",
'2': "sagittal"
}
#file_name = "comparision_N1_N2_N3_graphs/resnet18_basic_N1_misclassified_test_set_N3.json"
folder_path = "comparision_N1_N2_N3_graphs/misclassified_data/"
for item in os.listdir(folder_path):
file_name = os.path.join(folder_path, item) # Get full path
print(file_name)
with open(file_name, 'r') as file:
data = json.load(file)
all_mistake = 0
individual_mistakes = 0
mistake_positions = {"sagittal": [], "axial": [], "coronial": []}
good_positions = {"sagittal": [], "axial": [], "coronial": []}
mistakes = {"sagittal": 0, "axial": 0, "coronial": 0}
mistakes_all = {"sagittal": 0, "axial": 0, "coronial": 0}
mistake_types = {"FLAIR": 0, "FLAIRCE": 0, "OTHER": 0, "T1w": 0, "T1wCE": 0, "T2star": 0, "T2w": 0}
if not "averaging" in file_name:
for ground_truth, base_names in data.items():
for base_name, axes in base_names.items():
individual_mistakes += 1
for axis, axis_data in axes.items():
slice_positions = axis_data["slice_position"]
if isinstance(slice_positions, str):
slice_positions = int(slice_positions)
mistake_count = 1
mistake_positions[axis].append(slice_positions)
else:
mistake_count = len(slice_positions)
for i in range(mistake_count):
mistake_positions[axis].append(int(slice_positions[i]))
print(f"{int(slice_positions[i])},len: {mistake_count} type: {type(int(slice_positions[i]))}")
all_mistake += mistake_count
mistakes_all[axis] += mistake_count
mistake_types[ground_truth] += mistake_count
if len(axes) != 3:
mistakes[axis] += mistake_count
print("Mistakes by axis: ", mistakes)
print("Mistakes by axis: ", mistakes_all)
#Mistakes by axis: {'sagittal': 378, 'axial': 118, 'coronial': 260}
#Mistakes by axis: {'sagittal': 460, 'axial': 209, 'coronial': 355}
else:
for base_name, values in data.items():
individual_mistakes += 1
gt = values["gt"]
each_pred = values["each_pred"]
indexes = [index for index, element in enumerate(each_pred) if element == gt]
for i in range(len(each_pred)):
axis = AXIS_CONVERTION[values["axis"][i]]
slice_pos = int(values["slice_position"][i])
if i in indexes:
good_positions[axis].append(slice_pos)
else:
all_mistake += 1
mistake_positions[axis].append(slice_pos)
mistakes_all[axis] += 1
for key in good_positions:
good_positions[key] = sorted(good_positions[key], key=int)
print("Good slice positions by axis:",good_positions)
for key in mistake_positions:
mistake_positions[key] = sorted(mistake_positions[key], key=int)
print("Mistake slice positions by axis:", mistake_positions)
print("All mistakes:", all_mistake)
print("Individual mistake: ", individual_mistakes)
attributes = ["file_name","all_mistake", "individual_mistakes", "mistakes_sagittal", "mistakes_axial" ,"mistakes_coronial",
"mistakes_all_sagittal", "mistakes_all_axial" ,"mistakes_all_coronial", "FLAIR", "FLAIRCE", "OTHER", "T1w",
"T1wCE", "T2star", "T2w"]
new_row = {
"file_name": item,
"all_mistake": all_mistake,
"individual_mistakes": individual_mistakes,
"mistakes_sagittal":mistakes["sagittal"],
"mistakes_coronial":mistakes["coronial"],
"mistakes_axial":mistakes["axial"],
"mistakes_all_sagittal":mistakes_all["sagittal"],
"mistakes_all_coronial":mistakes_all["coronial"],
"mistakes_all_axial":mistakes_all["axial"],
"FLAIR": mistake_types["FLAIR"],
"FLAIRCE": mistake_types["FLAIRCE"],
"OTHER": mistake_types["OTHER"],
"T1w": mistake_types["T1w"],
"T1wCE": mistake_types["T1wCE"],
"T2star": mistake_types["T2star"],
"T2w": mistake_types["T2w"]
}
table_name = "comparision_N1_N2_N3_graphs/misclassified_evaluation.xlsx"
if os.path.exists(table_name):
existing_df = pd.read_excel(table_name)
else:
existing_df = pd.DataFrame(columns=attributes)
existing_df = pd.concat([existing_df, pd.DataFrame([new_row])], ignore_index=True)
existing_df.to_excel(table_name, index=False)
print(f"Table updated and saved to {table_name}")
all_slices = {"good_positions": good_positions,
"mistake_positions": mistake_positions}
with open("comparision_N1_N2_N3_graphs/slices_evaluation/"+item[:-5] + "slices_ev.json", "w") as file:
json.dump(all_slices, file, indent=4)
print("Multiple dictionaries saved to multiple_dicts.json")