Switch to unified view

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)