|
a |
|
b/src/normalize_uncertainty.py |
|
|
1 |
import os |
|
|
2 |
import numpy as np |
|
|
3 |
from src.dataset.utils.nifi_volume import load_nifi_volume_return_nib, save_segmask_as_nifi_volume, load_nifi_volume |
|
|
4 |
from src.uncertainty.uncertainty import brats_normalize |
|
|
5 |
from tqdm import tqdm |
|
|
6 |
|
|
|
7 |
|
|
|
8 |
if __name__ == "__main__": |
|
|
9 |
|
|
|
10 |
setx = "valid" |
|
|
11 |
task = "uncertainty_task_tta/" |
|
|
12 |
model_id = "model_1598640035" |
|
|
13 |
|
|
|
14 |
gen_path = "/mnt/gpid07/users/laura.mora/" |
|
|
15 |
model_path = f"{gen_path}/results/checkpoints/{model_id}/" |
|
|
16 |
ground_truth_path = f"{gen_path}/datasets/2020/train/no_patch" |
|
|
17 |
input_dir = os.path.join(model_path, f"{task}/{setx}") |
|
|
18 |
|
|
|
19 |
output_dir = os.path.join(model_path, f"{task}/{setx}/normalized") |
|
|
20 |
if not os.path.exists(output_dir): |
|
|
21 |
os.makedirs(output_dir) |
|
|
22 |
|
|
|
23 |
file_list = sorted([file for file in os.listdir(input_dir) if "unc" in file and "nii.gz"]) |
|
|
24 |
file_list_all = sorted([file for file in os.listdir(input_dir) if "nii.gz" in file]) |
|
|
25 |
|
|
|
26 |
max_uncertainty = 0 |
|
|
27 |
min_uncertainty = 10000 |
|
|
28 |
|
|
|
29 |
for uncertainty_map in tqdm(file_list, total=len(file_list), desc="Getting min and max"): |
|
|
30 |
|
|
|
31 |
# Load Uncertainty maps |
|
|
32 |
patient_name = uncertainty_map.split(".")[0].split("_unc")[0] |
|
|
33 |
path_gt = os.path.join(ground_truth_path, patient_name, f"{patient_name}_flair.nii.gz") |
|
|
34 |
flair = load_nifi_volume(path_gt, normalize=False) |
|
|
35 |
brain_mask = np.zeros(flair.shape, np.float) |
|
|
36 |
brain_mask[flair > 0] = 1 |
|
|
37 |
|
|
|
38 |
path = os.path.join(input_dir, uncertainty_map) |
|
|
39 |
unc_map, _ = load_nifi_volume_return_nib(path, normalize=False) |
|
|
40 |
|
|
|
41 |
tmp_max = np.max(unc_map[brain_mask == 1]) |
|
|
42 |
tmp_min = np.min(unc_map[brain_mask == 1]) |
|
|
43 |
|
|
|
44 |
if tmp_max > max_uncertainty: |
|
|
45 |
max_uncertainty = tmp_max |
|
|
46 |
|
|
|
47 |
if tmp_min < min_uncertainty: |
|
|
48 |
min_uncertainty = tmp_min |
|
|
49 |
|
|
|
50 |
for uncertainty_map_path in tqdm(file_list_all, total=len(file_list_all), desc="Normalizing.."): |
|
|
51 |
|
|
|
52 |
path = os.path.join(input_dir, uncertainty_map_path) |
|
|
53 |
output_path = os.path.join(output_dir, uncertainty_map_path) |
|
|
54 |
|
|
|
55 |
unc_map, nib_data = load_nifi_volume_return_nib(path, normalize=False) |
|
|
56 |
|
|
|
57 |
if "unc" in uncertainty_map_path: |
|
|
58 |
uncertainty_map_normalized = brats_normalize(unc_map, max_unc=max_uncertainty, min_unc=min_uncertainty) |
|
|
59 |
print(f"Saving to: {output_path}") |
|
|
60 |
save_segmask_as_nifi_volume(uncertainty_map_normalized, nib_data.affine, output_path) |
|
|
61 |
else: |
|
|
62 |
save_segmask_as_nifi_volume(unc_map, nib_data.affine, output_path) |