Anirudh Balaraman commited on
Commit
f1a8b97
·
1 Parent(s): a1cc9d3

push latest changes

Browse files
.gitignore CHANGED
@@ -10,3 +10,5 @@ __pycache__/
10
  .mypy_cache/
11
  .pytest_cache/
12
  site/
 
 
 
10
  .mypy_cache/
11
  .pytest_cache/
12
  site/
13
+ updated_segmentations.zip
14
+ updated_segmentations
check_tum_datatset.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
config/config_cspca_test.yaml CHANGED
@@ -1,5 +1,5 @@
1
- data_root: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/COMFORT_data_mpMRI/processed/t2_registered
2
- dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/test_data_updated_with_psa.json
3
  num_classes: !!int 4
4
  mil_mode: att_trans
5
  tile_count: !!int 40
@@ -7,7 +7,8 @@ tile_size: !!int 48
7
  depth: !!int 3
8
  use_heatmap: !!bool True
9
  workers: !!int 2
10
- checkpoint_cspca: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/logs/cspca_train_psa/models/cspca_model_57.pth
 
11
  batch_size: !!int 8
12
 
13
 
 
1
+ data_root:
2
+ dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/cspca_train.json
3
  num_classes: !!int 4
4
  mil_mode: att_trans
5
  tile_count: !!int 40
 
7
  depth: !!int 3
8
  use_heatmap: !!bool True
9
  workers: !!int 2
10
+ checkpoint_cspca: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/logs/cspca_train_randmodel_newtrain_tcia/models/cspca_model_71.pth
11
+ num_seeds: !!int 10
12
  batch_size: !!int 8
13
 
14
 
config/config_cspca_train.yaml CHANGED
@@ -1,16 +1,15 @@
1
- data_root: /sc-projects/sc-proj-cc06-ag-ki-radiologie/pirad_model_test_PICAI/processed/t2_registered/
2
- dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/PICAI_cspca_updated_with_psa.json
3
  mil_mode: att_trans
4
  tile_count: !!int 40
5
  tile_size: !!int 48
6
  depth: !!int 3
7
- use_heatmap: !!bool True
8
- workers: !!int 2
9
- checkpoint_pirads: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/logs/pirads_training_new/model_44.pt
10
- epochs: !!int 80
11
  batch_size: !!int 8
12
- optim_lr: !!float 2e-5
13
- num_seeds: !!int 5
 
14
 
15
 
16
 
 
1
+ data_root:
2
+ dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/cspca_train_tcia.json
3
  mil_mode: att_trans
4
  tile_count: !!int 40
5
  tile_size: !!int 48
6
  depth: !!int 3
7
+ workers: !!int 1
8
+ checkpoint_pirads: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/logs/pirads_training_resnet18-rand-new/model_55.pt
 
 
9
  batch_size: !!int 8
10
+ optim_lr: !!float 1e-5
11
+ epochs: !!int 100
12
+ num_classes: !!int 4
13
 
14
 
15
 
config/config_pirads_test.yaml CHANGED
@@ -8,7 +8,7 @@ tile_size: !!int 48
8
  depth: !!int 3
9
  use_heatmap: !!bool True
10
  workers: !!int 8
11
- checkpoint: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/logs/pirads_training_new/model_44.pt
12
  amp: !!bool True
13
 
14
 
 
8
  depth: !!int 3
9
  use_heatmap: !!bool True
10
  workers: !!int 8
11
+ checkpoint: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/logs/pirads_training_resnet18-rand-new/model_67.pt
12
  amp: !!bool True
13
 
14
 
config/config_pirads_train.yaml CHANGED
@@ -1,15 +1,15 @@
1
  data_root: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate-foundation/processed/t2_registered
2
  dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/PI-RADS_data_updated.json
3
- num_classes: !!int 4
4
  mil_mode: att_trans
5
  tile_count: !!int 40
6
  tile_size: !!int 48
7
  depth: !!int 3
8
  use_heatmap: !!bool True
9
- workers: !!int 4
10
  epochs: !!int 100
11
  batch_size: !!int 8
12
- optim_lr: !!float 2e-4
13
  weight_decay: !!float 1e-5
14
  amp: !!bool True
15
  wandb: !!bool True
 
1
  data_root: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate-foundation/processed/t2_registered
2
  dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/PI-RADS_data_updated.json
3
+ num_classes: !!int 3
4
  mil_mode: att_trans
5
  tile_count: !!int 40
6
  tile_size: !!int 48
7
  depth: !!int 3
8
  use_heatmap: !!bool True
9
+ workers: !!int 2
10
  epochs: !!int 100
11
  batch_size: !!int 8
12
+ optim_lr: !!float 2e-5
13
  weight_decay: !!float 1e-5
14
  amp: !!bool True
15
  wandb: !!bool True
config/config_preprocess.yaml CHANGED
@@ -1,7 +1,7 @@
1
- t2_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/COMFORT_data_mpMRI/t2w_nrrd
2
- dwi_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/COMFORT_data_mpMRI/dwi_nrrd
3
- adc_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/COMFORT_data_mpMRI/adc_nrrd
4
- output_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/COMFORT_data_mpMRI/processed
5
 
6
 
7
 
 
1
+ t2_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/t2
2
+ dwi_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/dwi
3
+ adc_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/adc
4
+ output_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed
5
 
6
 
7
 
dataset/TCIA_test_data.json ADDED
The diff for this file is too large to render. See raw diff
 
dataset/TCIA_test_data_updated_mask.json ADDED
The diff for this file is too large to render. See raw diff
 
dataset/TUM_test.json ADDED
The diff for this file is too large to render. See raw diff
 
dataset/TUM_test_updated.json ADDED
@@ -0,0 +1,953 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "test": [
3
+ {
4
+ "image": "117182577.nrrd",
5
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/117182577.nrrd",
6
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/117182577.nrrd",
7
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/117182577.nrrd",
8
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/117182577.nrrd",
9
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/117182577.nrrd",
10
+ "psa": [
11
+ 7.42,
12
+ 73.14278400000002
13
+ ],
14
+ "label": 0.0
15
+ },
16
+ {
17
+ "image": "40125295.nrrd",
18
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/40125295.nrrd",
19
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/40125295.nrrd",
20
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/40125295.nrrd",
21
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/40125295.nrrd",
22
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/40125295.nrrd",
23
+ "psa": [
24
+ 12.7,
25
+ 111.99651840000003
26
+ ],
27
+ "label": 1.0
28
+ },
29
+ {
30
+ "image": "131281281.nrrd",
31
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/131281281.nrrd",
32
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/131281281.nrrd",
33
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/131281281.nrrd",
34
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/131281281.nrrd",
35
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/131281281.nrrd",
36
+ "psa": [
37
+ 9.89,
38
+ 42.708556800000004
39
+ ],
40
+ "label": 1.0
41
+ },
42
+ {
43
+ "image": "157418473.nrrd",
44
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157418473.nrrd",
45
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157418473.nrrd",
46
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157418473.nrrd",
47
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157418473.nrrd",
48
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157418473.nrrd",
49
+ "psa": [
50
+ 8.8,
51
+ 59.439744000000005
52
+ ],
53
+ "label": 1.0
54
+ },
55
+ {
56
+ "image": "89236863.nrrd",
57
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/89236863.nrrd",
58
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/89236863.nrrd",
59
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/89236863.nrrd",
60
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/89236863.nrrd",
61
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/89236863.nrrd",
62
+ "psa": [
63
+ 11.8,
64
+ 73.78076160000002
65
+ ],
66
+ "label": 1.0
67
+ },
68
+ {
69
+ "image": "157178228.nrrd",
70
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157178228.nrrd",
71
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157178228.nrrd",
72
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157178228.nrrd",
73
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157178228.nrrd",
74
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157178228.nrrd",
75
+ "psa": [
76
+ 4.07,
77
+ 31.79105280000001
78
+ ],
79
+ "label": 1.0
80
+ },
81
+ {
82
+ "image": "197871303.nrrd",
83
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/197871303.nrrd",
84
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/197871303.nrrd",
85
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/197871303.nrrd",
86
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/197871303.nrrd",
87
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/197871303.nrrd",
88
+ "psa": [
89
+ 4.44,
90
+ 41.333760000000005
91
+ ],
92
+ "label": 1.0
93
+ },
94
+ {
95
+ "image": "166430557.nrrd",
96
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/166430557.nrrd",
97
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/166430557.nrrd",
98
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/166430557.nrrd",
99
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/166430557.nrrd",
100
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/166430557.nrrd",
101
+ "psa": [
102
+ 10.4,
103
+ 46.51745280000001
104
+ ],
105
+ "label": 1.0
106
+ },
107
+ {
108
+ "image": "124172999.nrrd",
109
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/124172999.nrrd",
110
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/124172999.nrrd",
111
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/124172999.nrrd",
112
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/124172999.nrrd",
113
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/124172999.nrrd",
114
+ "psa": [
115
+ 1.39,
116
+ 40.985568
117
+ ],
118
+ "label": 1.0
119
+ },
120
+ {
121
+ "image": "209065382.nrrd",
122
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/209065382.nrrd",
123
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/209065382.nrrd",
124
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/209065382.nrrd",
125
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/209065382.nrrd",
126
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/209065382.nrrd",
127
+ "psa": [
128
+ 3.29,
129
+ 35.463168
130
+ ],
131
+ "label": 1.0
132
+ },
133
+ {
134
+ "image": "98949688.nrrd",
135
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/98949688.nrrd",
136
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/98949688.nrrd",
137
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/98949688.nrrd",
138
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/98949688.nrrd",
139
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/98949688.nrrd",
140
+ "psa": [
141
+ 7.7,
142
+ 41.693184000000024
143
+ ],
144
+ "label": 0.0
145
+ },
146
+ {
147
+ "image": "157948077.nrrd",
148
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157948077.nrrd",
149
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157948077.nrrd",
150
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157948077.nrrd",
151
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157948077.nrrd",
152
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157948077.nrrd",
153
+ "psa": [
154
+ 47.3,
155
+ 81.46944000000002
156
+ ],
157
+ "label": 1.0
158
+ },
159
+ {
160
+ "image": "90893592.nrrd",
161
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/90893592.nrrd",
162
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/90893592.nrrd",
163
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/90893592.nrrd",
164
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/90893592.nrrd",
165
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/90893592.nrrd",
166
+ "psa": [
167
+ 7.69,
168
+ 42.98711039999999
169
+ ],
170
+ "label": 0.0
171
+ },
172
+ {
173
+ "image": "206955637.nrrd",
174
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/206955637.nrrd",
175
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/206955637.nrrd",
176
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/206955637.nrrd",
177
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/206955637.nrrd",
178
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/206955637.nrrd",
179
+ "psa": [
180
+ 4.99,
181
+ 42.02265600000001
182
+ ],
183
+ "label": 1.0
184
+ },
185
+ {
186
+ "image": "209300602.nrrd",
187
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/209300602.nrrd",
188
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/209300602.nrrd",
189
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/209300602.nrrd",
190
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/209300602.nrrd",
191
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/209300602.nrrd",
192
+ "psa": [
193
+ 3.69,
194
+ 42.044620800000004
195
+ ],
196
+ "label": 0.0
197
+ },
198
+ {
199
+ "image": "165961870.nrrd",
200
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/165961870.nrrd",
201
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/165961870.nrrd",
202
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/165961870.nrrd",
203
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/165961870.nrrd",
204
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/165961870.nrrd",
205
+ "psa": [
206
+ 13.7,
207
+ 46.549401599999996
208
+ ],
209
+ "label": 1.0
210
+ },
211
+ {
212
+ "image": "161128213.nrrd",
213
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/161128213.nrrd",
214
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/161128213.nrrd",
215
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/161128213.nrrd",
216
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/161128213.nrrd",
217
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/161128213.nrrd",
218
+ "psa": [
219
+ 11.7,
220
+ 49.99587840000001
221
+ ],
222
+ "label": 1.0
223
+ },
224
+ {
225
+ "image": "41633158.nrrd",
226
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/41633158.nrrd",
227
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/41633158.nrrd",
228
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/41633158.nrrd",
229
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/41633158.nrrd",
230
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/41633158.nrrd",
231
+ "psa": [
232
+ 11.0,
233
+ 73.31450880000003
234
+ ],
235
+ "label": 1.0
236
+ },
237
+ {
238
+ "image": "158458345.nrrd",
239
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/158458345.nrrd",
240
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/158458345.nrrd",
241
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/158458345.nrrd",
242
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/158458345.nrrd",
243
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/158458345.nrrd",
244
+ "psa": [
245
+ 5.0,
246
+ 31.71168
247
+ ],
248
+ "label": 1.0
249
+ },
250
+ {
251
+ "image": "205333684.nrrd",
252
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/205333684.nrrd",
253
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/205333684.nrrd",
254
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/205333684.nrrd",
255
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/205333684.nrrd",
256
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/205333684.nrrd",
257
+ "psa": [
258
+ 4.4,
259
+ 26.996736000000002
260
+ ],
261
+ "label": 1.0
262
+ },
263
+ {
264
+ "image": "110498822.nrrd",
265
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/110498822.nrrd",
266
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/110498822.nrrd",
267
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/110498822.nrrd",
268
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/110498822.nrrd",
269
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/110498822.nrrd",
270
+ "psa": [
271
+ 7.2,
272
+ 27.172454400000007
273
+ ],
274
+ "label": 1.0
275
+ },
276
+ {
277
+ "image": "156663622.nrrd",
278
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/156663622.nrrd",
279
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/156663622.nrrd",
280
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/156663622.nrrd",
281
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/156663622.nrrd",
282
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/156663622.nrrd",
283
+ "psa": [
284
+ 4.6,
285
+ 28.684031999999995
286
+ ],
287
+ "label": 1.0
288
+ },
289
+ {
290
+ "image": "180637259.nrrd",
291
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/180637259.nrrd",
292
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/180637259.nrrd",
293
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/180637259.nrrd",
294
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/180637259.nrrd",
295
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/180637259.nrrd",
296
+ "psa": [
297
+ 5.27,
298
+ 52.18836480000001
299
+ ],
300
+ "label": 1.0
301
+ },
302
+ {
303
+ "image": "37790894.nrrd",
304
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/37790894.nrrd",
305
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/37790894.nrrd",
306
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/37790894.nrrd",
307
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/37790894.nrrd",
308
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/37790894.nrrd",
309
+ "psa": [
310
+ 14.7,
311
+ 35.38429440000001
312
+ ],
313
+ "label": 1.0
314
+ },
315
+ {
316
+ "image": "158458296.nrrd",
317
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/158458296.nrrd",
318
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/158458296.nrrd",
319
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/158458296.nrrd",
320
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/158458296.nrrd",
321
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/158458296.nrrd",
322
+ "psa": [
323
+ 5.1,
324
+ 57.849292800000015
325
+ ],
326
+ "label": 1.0
327
+ },
328
+ {
329
+ "image": "39200701.nrrd",
330
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/39200701.nrrd",
331
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/39200701.nrrd",
332
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/39200701.nrrd",
333
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/39200701.nrrd",
334
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/39200701.nrrd",
335
+ "psa": [
336
+ 14.7,
337
+ 26.050752000000003
338
+ ],
339
+ "label": 1.0
340
+ },
341
+ {
342
+ "image": "160796776.nrrd",
343
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/160796776.nrrd",
344
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/160796776.nrrd",
345
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/160796776.nrrd",
346
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/160796776.nrrd",
347
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/160796776.nrrd",
348
+ "psa": [
349
+ 5.98,
350
+ 72.345312
351
+ ],
352
+ "label": 1.0
353
+ },
354
+ {
355
+ "image": "156848492.nrrd",
356
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/156848492.nrrd",
357
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/156848492.nrrd",
358
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/156848492.nrrd",
359
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/156848492.nrrd",
360
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/156848492.nrrd",
361
+ "psa": [
362
+ 6.4,
363
+ 44.939980800000015
364
+ ],
365
+ "label": 1.0
366
+ },
367
+ {
368
+ "image": "39531576.nrrd",
369
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/39531576.nrrd",
370
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/39531576.nrrd",
371
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/39531576.nrrd",
372
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/39531576.nrrd",
373
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/39531576.nrrd",
374
+ "psa": [
375
+ 11.0,
376
+ 199.7498880000001
377
+ ],
378
+ "label": 1.0
379
+ },
380
+ {
381
+ "image": "156873199.nrrd",
382
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/156873199.nrrd",
383
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/156873199.nrrd",
384
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/156873199.nrrd",
385
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/156873199.nrrd",
386
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/156873199.nrrd",
387
+ "psa": [
388
+ 7.8,
389
+ 71.515392
390
+ ],
391
+ "label": 1.0
392
+ },
393
+ {
394
+ "image": "202320128.nrrd",
395
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/202320128.nrrd",
396
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/202320128.nrrd",
397
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/202320128.nrrd",
398
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/202320128.nrrd",
399
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/202320128.nrrd",
400
+ "psa": [
401
+ 3.81,
402
+ 39.783744
403
+ ],
404
+ "label": 1.0
405
+ },
406
+ {
407
+ "image": "157341179.nrrd",
408
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157341179.nrrd",
409
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157341179.nrrd",
410
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157341179.nrrd",
411
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157341179.nrrd",
412
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157341179.nrrd",
413
+ "psa": [
414
+ 4.15,
415
+ 61.67715840000001
416
+ ],
417
+ "label": 0.0
418
+ },
419
+ {
420
+ "image": "157419103.nrrd",
421
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157419103.nrrd",
422
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157419103.nrrd",
423
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157419103.nrrd",
424
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157419103.nrrd",
425
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157419103.nrrd",
426
+ "psa": [
427
+ 4.2,
428
+ 72.54074880000002
429
+ ],
430
+ "label": 1.0
431
+ },
432
+ {
433
+ "image": "43391901.nrrd",
434
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/43391901.nrrd",
435
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/43391901.nrrd",
436
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/43391901.nrrd",
437
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/43391901.nrrd",
438
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/43391901.nrrd",
439
+ "psa": [
440
+ 86.4,
441
+ 100.48147200000001
442
+ ],
443
+ "label": 1.0
444
+ },
445
+ {
446
+ "image": "40942757.nrrd",
447
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/40942757.nrrd",
448
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/40942757.nrrd",
449
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/40942757.nrrd",
450
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/40942757.nrrd",
451
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/40942757.nrrd",
452
+ "psa": [
453
+ 25.02,
454
+ 175.40490240000003
455
+ ],
456
+ "label": 1.0
457
+ },
458
+ {
459
+ "image": "156753931.nrrd",
460
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/156753931.nrrd",
461
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/156753931.nrrd",
462
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/156753931.nrrd",
463
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/156753931.nrrd",
464
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/156753931.nrrd",
465
+ "psa": [
466
+ 5.2,
467
+ 109.25890560000002
468
+ ],
469
+ "label": 1.0
470
+ },
471
+ {
472
+ "image": "156873202.nrrd",
473
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/156873202.nrrd",
474
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/156873202.nrrd",
475
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/156873202.nrrd",
476
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/156873202.nrrd",
477
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/156873202.nrrd",
478
+ "psa": [
479
+ 9.3,
480
+ 52.90721280000001
481
+ ],
482
+ "label": 1.0
483
+ },
484
+ {
485
+ "image": "105462884.nrrd",
486
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/105462884.nrrd",
487
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/105462884.nrrd",
488
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/105462884.nrrd",
489
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/105462884.nrrd",
490
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/105462884.nrrd",
491
+ "psa": [
492
+ 3.65,
493
+ 41.46954240000001
494
+ ],
495
+ "label": 1.0
496
+ },
497
+ {
498
+ "image": "202320085.nrrd",
499
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/202320085.nrrd",
500
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/202320085.nrrd",
501
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/202320085.nrrd",
502
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/202320085.nrrd",
503
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/202320085.nrrd",
504
+ "psa": [
505
+ 4.2,
506
+ 22.05815040000001
507
+ ],
508
+ "label": 1.0
509
+ },
510
+ {
511
+ "image": "158110530.nrrd",
512
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/158110530.nrrd",
513
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/158110530.nrrd",
514
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/158110530.nrrd",
515
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/158110530.nrrd",
516
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/158110530.nrrd",
517
+ "psa": [
518
+ 10.4,
519
+ 99.47059200000001
520
+ ],
521
+ "label": 1.0
522
+ },
523
+ {
524
+ "image": "157255508.nrrd",
525
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157255508.nrrd",
526
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157255508.nrrd",
527
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157255508.nrrd",
528
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157255508.nrrd",
529
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157255508.nrrd",
530
+ "psa": [
531
+ 9.13,
532
+ 40.51906560000001
533
+ ],
534
+ "label": 0.0
535
+ },
536
+ {
537
+ "image": "171501199.nrrd",
538
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/171501199.nrrd",
539
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/171501199.nrrd",
540
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/171501199.nrrd",
541
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/171501199.nrrd",
542
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/171501199.nrrd",
543
+ "psa": [
544
+ 3.4,
545
+ 28.234752000000004
546
+ ],
547
+ "label": 1.0
548
+ },
549
+ {
550
+ "image": "221486580.nrrd",
551
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/221486580.nrrd",
552
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/221486580.nrrd",
553
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/221486580.nrrd",
554
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/221486580.nrrd",
555
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/221486580.nrrd",
556
+ "psa": [
557
+ 3.04,
558
+ 0.07413120000000002
559
+ ],
560
+ "label": 1.0
561
+ },
562
+ {
563
+ "image": "157178223.nrrd",
564
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157178223.nrrd",
565
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157178223.nrrd",
566
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157178223.nrrd",
567
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157178223.nrrd",
568
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157178223.nrrd",
569
+ "psa": [
570
+ 5.9,
571
+ 40.87449600000001
572
+ ],
573
+ "label": 1.0
574
+ },
575
+ {
576
+ "image": "41549608.nrrd",
577
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/41549608.nrrd",
578
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/41549608.nrrd",
579
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/41549608.nrrd",
580
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/41549608.nrrd",
581
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/41549608.nrrd",
582
+ "psa": [
583
+ 14.9,
584
+ 134.10109440000002
585
+ ],
586
+ "label": 1.0
587
+ },
588
+ {
589
+ "image": "30124411.nrrd",
590
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/30124411.nrrd",
591
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/30124411.nrrd",
592
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/30124411.nrrd",
593
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/30124411.nrrd",
594
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/30124411.nrrd",
595
+ "psa": [
596
+ 65.88,
597
+ 299.24294399999997
598
+ ],
599
+ "label": 1.0
600
+ },
601
+ {
602
+ "image": "41635973.nrrd",
603
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/41635973.nrrd",
604
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/41635973.nrrd",
605
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/41635973.nrrd",
606
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/41635973.nrrd",
607
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/41635973.nrrd",
608
+ "psa": [
609
+ 12.7,
610
+ 66.04416000000002
611
+ ],
612
+ "label": 1.0
613
+ },
614
+ {
615
+ "image": "153649143.nrrd",
616
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/153649143.nrrd",
617
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/153649143.nrrd",
618
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/153649143.nrrd",
619
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/153649143.nrrd",
620
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/153649143.nrrd",
621
+ "psa": [
622
+ 5.49,
623
+ 49.704345600000025
624
+ ],
625
+ "label": 0.0
626
+ },
627
+ {
628
+ "image": "157255454.nrrd",
629
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/157255454.nrrd",
630
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/157255454.nrrd",
631
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/157255454.nrrd",
632
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/157255454.nrrd",
633
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/157255454.nrrd",
634
+ "psa": [
635
+ 10.5,
636
+ 35.45418240000001
637
+ ],
638
+ "label": 1.0
639
+ },
640
+ {
641
+ "image": "196244801.nrrd",
642
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/196244801.nrrd",
643
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/196244801.nrrd",
644
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/196244801.nrrd",
645
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/196244801.nrrd",
646
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/196244801.nrrd",
647
+ "psa": [
648
+ 3.9,
649
+ 54.062611200000006
650
+ ],
651
+ "label": 0.0
652
+ },
653
+ {
654
+ "image": "44282370.nrrd",
655
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/44282370.nrrd",
656
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/44282370.nrrd",
657
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/44282370.nrrd",
658
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/44282370.nrrd",
659
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/44282370.nrrd",
660
+ "psa": [
661
+ 0.72,
662
+ 41.53344
663
+ ],
664
+ "label": 1.0
665
+ },
666
+ {
667
+ "image": "158458298.nrrd",
668
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/158458298.nrrd",
669
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/158458298.nrrd",
670
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/158458298.nrrd",
671
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/158458298.nrrd",
672
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/158458298.nrrd",
673
+ "psa": [
674
+ 5.8,
675
+ 38.054016000000004
676
+ ],
677
+ "label": 1.0
678
+ },
679
+ {
680
+ "image": "108724699.nrrd",
681
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/108724699.nrrd",
682
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/108724699.nrrd",
683
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/108724699.nrrd",
684
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/108724699.nrrd",
685
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/108724699.nrrd",
686
+ "psa": [
687
+ 3.5,
688
+ 49.02543360000001
689
+ ],
690
+ "label": 0.0
691
+ },
692
+ {
693
+ "image": "43501021.nrrd",
694
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/43501021.nrrd",
695
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/43501021.nrrd",
696
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/43501021.nrrd",
697
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/43501021.nrrd",
698
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/43501021.nrrd",
699
+ "psa": [
700
+ 14.9,
701
+ 25.075814400000002
702
+ ],
703
+ "label": 1.0
704
+ },
705
+ {
706
+ "image": "189638607.nrrd",
707
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/189638607.nrrd",
708
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/189638607.nrrd",
709
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/189638607.nrrd",
710
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/189638607.nrrd",
711
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/189638607.nrrd",
712
+ "psa": [
713
+ 8.1,
714
+ 43.354521600000005
715
+ ],
716
+ "label": 1.0
717
+ },
718
+ {
719
+ "image": "35676325.nrrd",
720
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/35676325.nrrd",
721
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/35676325.nrrd",
722
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/35676325.nrrd",
723
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/35676325.nrrd",
724
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/35676325.nrrd",
725
+ "psa": [
726
+ 35.79,
727
+ 45.302400000000006
728
+ ],
729
+ "label": 1.0
730
+ },
731
+ {
732
+ "image": "158363661.nrrd",
733
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/158363661.nrrd",
734
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/158363661.nrrd",
735
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/158363661.nrrd",
736
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/158363661.nrrd",
737
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/158363661.nrrd",
738
+ "psa": [
739
+ 5.7,
740
+ 42.45696
741
+ ],
742
+ "label": 1.0
743
+ },
744
+ {
745
+ "image": "121414478.nrrd",
746
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/121414478.nrrd",
747
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/121414478.nrrd",
748
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/121414478.nrrd",
749
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/121414478.nrrd",
750
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/121414478.nrrd",
751
+ "psa": [
752
+ 5.45,
753
+ 39.097344000000014
754
+ ],
755
+ "label": 0.0
756
+ },
757
+ {
758
+ "image": "37269047.nrrd",
759
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/37269047.nrrd",
760
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/37269047.nrrd",
761
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/37269047.nrrd",
762
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/37269047.nrrd",
763
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/37269047.nrrd",
764
+ "psa": [
765
+ 35.79,
766
+ 28.346572800000004
767
+ ],
768
+ "label": 1.0
769
+ },
770
+ {
771
+ "image": "44762365.nrrd",
772
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/44762365.nrrd",
773
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/44762365.nrrd",
774
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/44762365.nrrd",
775
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/44762365.nrrd",
776
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/44762365.nrrd",
777
+ "psa": [
778
+ 12.1,
779
+ 58.85568000000001
780
+ ],
781
+ "label": 0.0
782
+ },
783
+ {
784
+ "image": "182654162.nrrd",
785
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/182654162.nrrd",
786
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/182654162.nrrd",
787
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/182654162.nrrd",
788
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/182654162.nrrd",
789
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/182654162.nrrd",
790
+ "psa": [
791
+ 3.95,
792
+ 47.880268799999996
793
+ ],
794
+ "label": 0.0
795
+ },
796
+ {
797
+ "image": "33396953.nrrd",
798
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/33396953.nrrd",
799
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/33396953.nrrd",
800
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/33396953.nrrd",
801
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/33396953.nrrd",
802
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/33396953.nrrd",
803
+ "psa": [
804
+ 6.68,
805
+ 38.683008
806
+ ],
807
+ "label": 0.0
808
+ },
809
+ {
810
+ "image": "161339683.nrrd",
811
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/161339683.nrrd",
812
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/161339683.nrrd",
813
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/161339683.nrrd",
814
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/161339683.nrrd",
815
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/161339683.nrrd",
816
+ "psa": [
817
+ 5.97,
818
+ 49.55258880000001
819
+ ],
820
+ "label": 1.0
821
+ },
822
+ {
823
+ "image": "32285423.nrrd",
824
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/32285423.nrrd",
825
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/32285423.nrrd",
826
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/32285423.nrrd",
827
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/32285423.nrrd",
828
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/32285423.nrrd",
829
+ "psa": [
830
+ 13.2,
831
+ 152.9708544
832
+ ],
833
+ "label": 1.0
834
+ },
835
+ {
836
+ "image": "189626198.nrrd",
837
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/189626198.nrrd",
838
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/189626198.nrrd",
839
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/189626198.nrrd",
840
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/189626198.nrrd",
841
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/189626198.nrrd",
842
+ "psa": [
843
+ 3.61,
844
+ 37.05811200000001
845
+ ],
846
+ "label": 1.0
847
+ },
848
+ {
849
+ "image": "187308282.nrrd",
850
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/187308282.nrrd",
851
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/187308282.nrrd",
852
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/187308282.nrrd",
853
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/187308282.nrrd",
854
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/187308282.nrrd",
855
+ "psa": [
856
+ 3.9,
857
+ 61.2144
858
+ ],
859
+ "label": 1.0
860
+ },
861
+ {
862
+ "image": "158110532.nrrd",
863
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/158110532.nrrd",
864
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/158110532.nrrd",
865
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/158110532.nrrd",
866
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/158110532.nrrd",
867
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/158110532.nrrd",
868
+ "psa": [
869
+ 6.8,
870
+ 65.1036672
871
+ ],
872
+ "label": 1.0
873
+ },
874
+ {
875
+ "image": "129647990.nrrd",
876
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/129647990.nrrd",
877
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/129647990.nrrd",
878
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/129647990.nrrd",
879
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/129647990.nrrd",
880
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/129647990.nrrd",
881
+ "psa": [
882
+ 3.75,
883
+ 51.21792
884
+ ],
885
+ "label": 1.0
886
+ },
887
+ {
888
+ "image": "130259806.nrrd",
889
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/130259806.nrrd",
890
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/130259806.nrrd",
891
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/130259806.nrrd",
892
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/130259806.nrrd",
893
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/130259806.nrrd",
894
+ "psa": [
895
+ 3.62,
896
+ 42.45696
897
+ ],
898
+ "label": 1.0
899
+ },
900
+ {
901
+ "image": "42462900.nrrd",
902
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/42462900.nrrd",
903
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/42462900.nrrd",
904
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/42462900.nrrd",
905
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/42462900.nrrd",
906
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/42462900.nrrd",
907
+ "psa": [
908
+ 0.72,
909
+ 41.41363200000001
910
+ ],
911
+ "label": 1.0
912
+ },
913
+ {
914
+ "image": "199903825.nrrd",
915
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/199903825.nrrd",
916
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/199903825.nrrd",
917
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/199903825.nrrd",
918
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/199903825.nrrd",
919
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/199903825.nrrd",
920
+ "psa": [
921
+ 4.06,
922
+ 46.665215999999994
923
+ ],
924
+ "label": 1.0
925
+ },
926
+ {
927
+ "image": "38789145.nrrd",
928
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/38789145.nrrd",
929
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/38789145.nrrd",
930
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/38789145.nrrd",
931
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/38789145.nrrd",
932
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/38789145.nrrd",
933
+ "psa": [
934
+ 25.02,
935
+ 40.934400000000004
936
+ ],
937
+ "label": 1.0
938
+ },
939
+ {
940
+ "image": "38579441.nrrd",
941
+ "mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/prostate_mask/38579441.nrrd",
942
+ "dwi": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/DWI_registered/38579441.nrrd",
943
+ "adc": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/ADC_clipped/38579441.nrrd",
944
+ "heatmap": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/heatmaps/38579441.nrrd",
945
+ "smooth_mask": "/sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/TUM/data_prostate_test/processed/smooth_prostate_mask/38579441.nrrd",
946
+ "psa": [
947
+ 23.0,
948
+ 36.66873600000002
949
+ ],
950
+ "label": 1.0
951
+ }
952
+ ]
953
+ }
dataset/cspca_train.json ADDED
The diff for this file is too large to render. See raw diff
 
dataset/cspca_train_tcia.json ADDED
The diff for this file is too large to render. See raw diff
 
dataset/cspca_train_tcia_tum.json ADDED
The diff for this file is too large to render. See raw diff
 
job_scripts/preprocess.sh CHANGED
@@ -1,5 +1,5 @@
1
  #!/bin/bash
2
- #SBATCH --job-name=preprocess_picai # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
 
1
  #!/bin/bash
2
+ #SBATCH --job-name=preprocess_tum # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
job_scripts/test_cspca.sh CHANGED
@@ -1,5 +1,5 @@
1
  #!/bin/bash
2
- #SBATCH --job-name=cspca_test_psa_64_59 # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
 
1
  #!/bin/bash
2
+ #SBATCH --job-name=cspca_test_tum_rand_model_55 # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
job_scripts/train_cspca.sh CHANGED
@@ -1,5 +1,5 @@
1
  #!/bin/bash
2
- #SBATCH --job-name=cspca_train_psa_64 # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
 
1
  #!/bin/bash
2
+ #SBATCH --job-name=cspca_train_randmodel_newtrain_tcia_withattn # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
job_scripts/train_pirads.sh CHANGED
@@ -1,5 +1,5 @@
1
  #!/bin/bash
2
- #SBATCH --job-name=pirads_training_new # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
 
1
  #!/bin/bash
2
+ #SBATCH --job-name=pirads_training_ordinal_loss # Specify job name
3
  #SBATCH --partition=gpu # Specify partition name
4
  #SBATCH --mem=128G
5
  #SBATCH --gres=gpu:1
run_cspca.py CHANGED
@@ -25,7 +25,7 @@ def main_worker(args):
25
  scaler = StandardScaler()
26
  with open(os.path.join(args.project_dir, "dataset", "PICAI_cspca_updated_with_psa.json")) as f:
27
  dataset_json = json.load(f)
28
- train_clinical = [i['psa'] for i in dataset_json['train']]
29
  _ = scaler.fit_transform(train_clinical)
30
  args.psa_mean = scaler.mean_.tolist()
31
  args.psa_std = scaler.scale_.tolist()
@@ -57,10 +57,10 @@ def main_worker(args):
57
 
58
  old_loss = float("inf")
59
  for epoch in range(args.epochs):
60
- train_loss, train_auc = train_epoch(
61
  cspca_model, train_loader, optimizer, epoch=epoch, args=args
62
  )
63
- logging.info(f"EPOCH {epoch} TRAIN loss: {train_loss:.4f} AUC: {train_auc:.4f}")
64
  val_metric = val_epoch(cspca_model, valid_loader, epoch=epoch, args=args)
65
  logging.info(
66
  f"EPOCH {epoch} VAL loss: {val_metric['loss']:.4f} AUC: {val_metric['auc']:.4f}"
@@ -69,35 +69,34 @@ def main_worker(args):
69
  old_loss = val_metric["loss"]
70
  save_cspca_checkpoint(cspca_model, val_metric, model_dir)
71
 
72
- args.checkpoint_cspca = os.path.join(model_dir, "cspca_model.pth")
73
  if cache_dir_path.exists() and cache_dir_path.is_dir():
74
  shutil.rmtree(cache_dir_path)
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
- cspca_model = CSPCAModel(backbone=mil_model).to(args.device)
77
- checkpt = torch.load(args.checkpoint_cspca, map_location="cpu")
78
- cspca_model.load_state_dict(checkpt["state_dict"])
79
- cspca_model = cspca_model.to(args.device)
80
- if "auc" in checkpt and "sensitivity" in checkpt and "specificity" in checkpt:
81
- auc, sens, spec = checkpt["auc"], checkpt["sensitivity"], checkpt["specificity"]
82
- logging.info(
83
- f"csPCa Model loaded from {args.checkpoint_cspca} with AUC: {auc}, Sensitivity: {sens}, Specificity: {spec} on the test set."
84
- )
85
- else:
86
- logging.info(f"csPCa Model loaded from {args.checkpoint_cspca}.")
87
-
88
- metrics_dict = {"auc": [], "sensitivity": [], "specificity": []}
89
- for st in list(range(args.num_seeds)):
90
- set_determinism(seed=st)
91
- test_loader = get_dataloader(args, split="test")
92
- test_metric = val_epoch(cspca_model, test_loader, epoch=0, args=args)
93
- metrics_dict["auc"].append(test_metric["auc"])
94
- metrics_dict["sensitivity"].append(test_metric["sensitivity"])
95
- metrics_dict["specificity"].append(test_metric["specificity"])
96
-
97
- if cache_dir_path.exists() and cache_dir_path.is_dir():
98
- shutil.rmtree(cache_dir_path)
99
 
100
- get_metrics(metrics_dict)
101
 
102
 
103
  def parse_args():
@@ -145,7 +144,6 @@ def parse_args():
145
  parser.set_defaults(use_heatmap=True)
146
  parser.add_argument("--use_psa", default=True, type=bool)
147
  parser.add_argument("--workers", default=2, type=int, help="number of workers for data loading")
148
- # parser.add_argument("--dry-run", action="store_true")
149
  parser.add_argument("--checkpoint_pirads", default=None, help="Load PI-RADS model")
150
  parser.add_argument(
151
  "--epochs", "--max_epochs", default=30, type=int, help="number of training epochs"
 
25
  scaler = StandardScaler()
26
  with open(os.path.join(args.project_dir, "dataset", "PICAI_cspca_updated_with_psa.json")) as f:
27
  dataset_json = json.load(f)
28
+ train_clinical = [i['psa'] for i in dataset_json['test']]
29
  _ = scaler.fit_transform(train_clinical)
30
  args.psa_mean = scaler.mean_.tolist()
31
  args.psa_std = scaler.scale_.tolist()
 
57
 
58
  old_loss = float("inf")
59
  for epoch in range(args.epochs):
60
+ train_loss, train_attn_loss, train_auc = train_epoch(
61
  cspca_model, train_loader, optimizer, epoch=epoch, args=args
62
  )
63
+ logging.info(f"EPOCH {epoch} TRAIN loss: {train_loss:.4f} TRAIN ATTN LOSS: {train_attn_loss:.4f} TRAIN AUC: {train_auc:.4f}")
64
  val_metric = val_epoch(cspca_model, valid_loader, epoch=epoch, args=args)
65
  logging.info(
66
  f"EPOCH {epoch} VAL loss: {val_metric['loss']:.4f} AUC: {val_metric['auc']:.4f}"
 
69
  old_loss = val_metric["loss"]
70
  save_cspca_checkpoint(cspca_model, val_metric, model_dir)
71
 
 
72
  if cache_dir_path.exists() and cache_dir_path.is_dir():
73
  shutil.rmtree(cache_dir_path)
74
+ elif args.mode == "test":
75
+ cspca_model = CSPCAModel(backbone=mil_model).to(args.device)
76
+ checkpt = torch.load(args.checkpoint_cspca, map_location="cpu")
77
+ cspca_model.load_state_dict(checkpt["state_dict"])
78
+ cspca_model = cspca_model.to(args.device)
79
+ if "auc" in checkpt and "sensitivity" in checkpt and "specificity" in checkpt:
80
+ auc, sens, spec = checkpt["auc"], checkpt["sensitivity"], checkpt["specificity"]
81
+ logging.info(
82
+ f"csPCa Model loaded from {args.checkpoint_cspca} with AUC: {auc}, Sensitivity: {sens}, Specificity: {spec} on the test set."
83
+ )
84
+ else:
85
+ logging.info(f"csPCa Model loaded from {args.checkpoint_cspca}.")
86
 
87
+ metrics_dict = {"auc": [], "sensitivity": [], "specificity": []}
88
+ for st in list(range(args.num_seeds)):
89
+ set_determinism(seed=st)
90
+ test_loader = get_dataloader(args, split="test")
91
+ test_metric = val_epoch(cspca_model, test_loader, epoch=0, args=args)
92
+ metrics_dict["auc"].append(test_metric["auc"])
93
+ metrics_dict["sensitivity"].append(test_metric["sensitivity"])
94
+ metrics_dict["specificity"].append(test_metric["specificity"])
95
+ logging.info(f"AUC: {test_metric['auc']}.")
96
+ if cache_dir_path.exists() and cache_dir_path.is_dir():
97
+ shutil.rmtree(cache_dir_path)
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
+ get_metrics(metrics_dict)
100
 
101
 
102
  def parse_args():
 
144
  parser.set_defaults(use_heatmap=True)
145
  parser.add_argument("--use_psa", default=True, type=bool)
146
  parser.add_argument("--workers", default=2, type=int, help="number of workers for data loading")
 
147
  parser.add_argument("--checkpoint_pirads", default=None, help="Load PI-RADS model")
148
  parser.add_argument(
149
  "--epochs", "--max_epochs", default=30, type=int, help="number of training epochs"
run_pirads.py CHANGED
@@ -12,6 +12,8 @@ import wandb
12
  import yaml
13
  from monai.utils import set_determinism
14
  from torch.utils.tensorboard import SummaryWriter
 
 
15
 
16
  from src.data.data_loader import get_dataloader
17
  from src.model.mil import MILModel3D
@@ -43,6 +45,15 @@ def main_worker(args):
43
  cache_dir_ = os.path.join(args.logdir, "cache")
44
  model.to(args.device)
45
  params = model.parameters()
 
 
 
 
 
 
 
 
 
46
  if args.mode == "train":
47
  train_loader = get_dataloader(args, split="train")
48
  valid_loader = get_dataloader(args, split="test")
 
12
  import yaml
13
  from monai.utils import set_determinism
14
  from torch.utils.tensorboard import SummaryWriter
15
+ from sklearn.preprocessing import StandardScaler
16
+ import json
17
 
18
  from src.data.data_loader import get_dataloader
19
  from src.model.mil import MILModel3D
 
45
  cache_dir_ = os.path.join(args.logdir, "cache")
46
  model.to(args.device)
47
  params = model.parameters()
48
+
49
+ scaler = StandardScaler()
50
+ with open(os.path.join(args.project_dir, "dataset", "PICAI_cspca_updated_with_psa.json")) as f:
51
+ dataset_json = json.load(f)
52
+ train_clinical = [i['psa'] for i in dataset_json['test']]
53
+ _ = scaler.fit_transform(train_clinical)
54
+ args.psa_mean = scaler.mean_.tolist()
55
+ args.psa_std = scaler.scale_.tolist()
56
+
57
  if args.mode == "train":
58
  train_loader = get_dataloader(args, split="train")
59
  valid_loader = get_dataloader(args, split="test")
src/data/custom_transforms.py CHANGED
@@ -15,6 +15,39 @@ from monai.utils.enums import TransformBackends
15
  from monai.utils.type_conversion import convert_data_type, convert_to_dst_type, convert_to_tensor
16
  from scipy.ndimage import binary_dilation
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  class DilateAndSaveMaskd(MapTransform):
20
  """
 
15
  from monai.utils.type_conversion import convert_data_type, convert_to_dst_type, convert_to_tensor
16
  from scipy.ndimage import binary_dilation
17
 
18
+ class LabelEncodeIntegerGraded(MapTransform):
19
+ """
20
+ Convert an integer label to encoded array representation of length num_classes,
21
+ with 1 filled in up to label index, and 0 otherwise. For example for num_classes=5,
22
+ embedding of 2 -> (0,0,0), 3 -> (0,0,1)...
23
+
24
+ Args:
25
+ num_classes: the number of classes to convert to encoded format.
26
+ keys: keys of the corresponding items to be transformed. Defaults to ``'label'``.
27
+ allow_missing_keys: don't raise exception if key is missing.
28
+
29
+ """
30
+
31
+ def __init__(
32
+ self,
33
+ num_classes: int,
34
+ keys: KeysCollection = "label",
35
+ allow_missing_keys: bool = False,
36
+ ):
37
+ super().__init__(keys, allow_missing_keys)
38
+ self.num_classes = num_classes
39
+
40
+ def __call__(self, data):
41
+ d = dict(data)
42
+ for key in self.keys:
43
+ label = int(d[key])
44
+
45
+ lz = np.zeros(self.num_classes , dtype=np.float32)
46
+ lz[:label] = 1.0
47
+ # alternative oneliner lz=(np.arange(self.num_classes)<int(label)).astype(np.float32) #same oneliner
48
+ d[key] = lz
49
+
50
+ return d
51
 
52
  class DilateAndSaveMaskd(MapTransform):
53
  """
src/data/data_loader.py CHANGED
@@ -17,6 +17,8 @@ from monai.transforms import (
17
  ToTensord,
18
  Transform,
19
  Transposed,
 
 
20
  )
21
  from torch.utils.data.dataloader import default_collate
22
 
@@ -25,6 +27,8 @@ from .custom_transforms import (
25
  ElementwiseProductd,
26
  NormalizeIntensity_customd,
27
  NormalizePSAd,
 
 
28
  )
29
  from sklearn.preprocessing import StandardScaler
30
 
@@ -47,7 +51,77 @@ def list_data_collate(batch: list):
47
  batch[i] = data
48
  return default_collate(batch)
49
 
 
 
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  def data_transform(args: argparse.Namespace) -> Transform:
52
  if args.use_heatmap:
53
  if args.use_psa:
@@ -99,6 +173,7 @@ def data_transform(args: argparse.Namespace) -> Transform:
99
  keys=["image", "dwi", "adc"], name="image", dim=0
100
  ), # stacks to (3, H, W)
101
  ElementwiseProductd(keys=["heatmap", "smooth_mask"], output_key="final_heatmap"),
 
102
  RandCropByPosNegLabeld(
103
  keys=["image", "final_heatmap", "smooth_mask"],
104
  label_key="smooth_mask",
@@ -176,6 +251,7 @@ def data_transform(args: argparse.Namespace) -> Transform:
176
  ]
177
  )
178
  return transform
 
179
 
180
 
181
  def get_dataloader(
@@ -187,11 +263,15 @@ def get_dataloader(
187
  data_list_key=split,
188
  base_dir=args.data_root,
189
  )
 
 
 
 
190
  cache_dir_ = os.path.join(args.logdir, "cache")
191
  os.makedirs(os.path.join(cache_dir_, split), exist_ok=True)
192
- transform = data_transform(args)
193
  dataset = PersistentDataset(
194
- data=data_list, transform=transform, cache_dir=os.path.join(cache_dir_, split)
195
  )
196
  loader = torch.utils.data.DataLoader(
197
  dataset,
 
17
  ToTensord,
18
  Transform,
19
  Transposed,
20
+ RandFlipd,
21
+ RandRotate90d,
22
  )
23
  from torch.utils.data.dataloader import default_collate
24
 
 
27
  ElementwiseProductd,
28
  NormalizeIntensity_customd,
29
  NormalizePSAd,
30
+ LabelEncodeIntegerGraded,
31
+
32
  )
33
  from sklearn.preprocessing import StandardScaler
34
 
 
51
  batch[i] = data
52
  return default_collate(batch)
53
 
54
+ def data_transform(args: argparse.Namespace, split) -> Transform:
55
+ if split == "train":
56
 
57
+ transform = Compose(
58
+ [
59
+ LoadImaged(
60
+ keys=["image", "mask", "dwi", "adc", "heatmap","smooth_mask"],
61
+ reader="ITKReader",
62
+ ensure_channel_first=True,
63
+ dtype=np.float32,
64
+ ),
65
+ #LabelEncodeIntegerGraded(keys=["label"], num_classes=args.num_classes),
66
+ ClipMaskIntensityPercentilesd(keys=["image"], lower=0, upper=99.5, mask_key="mask"),
67
+ ClipMaskIntensityPercentilesd(keys=["dwi"], lower=0, upper=99.5, mask_key="mask"),
68
+ NormalizeIntensity_customd(keys=["image"], mask_key="mask"),
69
+ NormalizeIntensity_customd(keys=["dwi"], mask_key="mask"),
70
+ ConcatItemsd(
71
+ keys=["image", "dwi", "adc"], name="image", dim=0
72
+ ), # stacks to (3, H, W)
73
+ ElementwiseProductd(keys=["heatmap", "smooth_mask"], output_key="final_heatmap"),
74
+ RandCropByPosNegLabeld(
75
+ keys=["image", "final_heatmap", "smooth_mask"],
76
+ label_key="smooth_mask",
77
+ spatial_size=(args.tile_size, args.tile_size, args.depth),
78
+ pos=1,
79
+ neg=0,
80
+ num_samples=args.tile_count,
81
+ ),
82
+ RandRotate90d(keys=["image", "final_heatmap", "smooth_mask"], prob=0.6, spatial_axes=(0, 1), max_k=3),
83
+ NormalizePSAd(keys=["psa"], mean=args.psa_mean, std=args.psa_std),
84
+ EnsureTyped(keys=["label", "psa"], dtype=torch.float32),
85
+ Transposed(keys=["image"], indices=(0, 3, 1, 2)),
86
+ DeleteItemsd(keys=[ "dwi", "adc", "heatmap", "mask"]),
87
+ ToTensord(keys=["image", "label", "final_heatmap", "smooth_mask", "psa"]),
88
+ ]
89
+ )
90
+ else:
91
+ transform = Compose(
92
+ [
93
+ LoadImaged(
94
+ keys=["image", "mask", "dwi", "adc", "heatmap","smooth_mask"],
95
+ reader="ITKReader",
96
+ ensure_channel_first=True,
97
+ dtype=np.float32,
98
+ ),
99
+ #LabelEncodeIntegerGraded(keys=["label"], num_classes=args.num_classes),
100
+ ClipMaskIntensityPercentilesd(keys=["image"], lower=0, upper=99.5, mask_key="mask"),
101
+ ClipMaskIntensityPercentilesd(keys=["dwi"], lower=0, upper=99.5, mask_key="mask"),
102
+ NormalizeIntensity_customd(keys=["image"], mask_key="mask"),
103
+ NormalizeIntensity_customd(keys=["dwi"], mask_key="mask"),
104
+ ConcatItemsd(
105
+ keys=["image", "dwi", "adc"], name="image", dim=0
106
+ ), # stacks to (3, H, W)
107
+ ElementwiseProductd(keys=["heatmap", "smooth_mask"], output_key="final_heatmap"),
108
+ RandCropByPosNegLabeld(
109
+ keys=["image", "final_heatmap", "smooth_mask"],
110
+ label_key="smooth_mask",
111
+ spatial_size=(args.tile_size, args.tile_size, args.depth),
112
+ pos=1,
113
+ neg=0,
114
+ num_samples=args.tile_count,
115
+ ),
116
+ NormalizePSAd(keys=["psa"], mean=args.psa_mean, std=args.psa_std),
117
+ EnsureTyped(keys=["label", "psa"], dtype=torch.float32),
118
+ Transposed(keys=["image"], indices=(0, 3, 1, 2)),
119
+ DeleteItemsd(keys=[ "dwi", "adc", "heatmap", "mask"]),
120
+ ToTensord(keys=["image", "label", "final_heatmap", "smooth_mask", "psa"]),
121
+ ]
122
+ )
123
+ return transform
124
+ '''
125
  def data_transform(args: argparse.Namespace) -> Transform:
126
  if args.use_heatmap:
127
  if args.use_psa:
 
173
  keys=["image", "dwi", "adc"], name="image", dim=0
174
  ), # stacks to (3, H, W)
175
  ElementwiseProductd(keys=["heatmap", "smooth_mask"], output_key="final_heatmap"),
176
+ #RandRotate90d(keys=["image", "final_heatmap", "smooth_mask"], prob=0.5, spatial_axes=(0, 1)),
177
  RandCropByPosNegLabeld(
178
  keys=["image", "final_heatmap", "smooth_mask"],
179
  label_key="smooth_mask",
 
251
  ]
252
  )
253
  return transform
254
+ '''
255
 
256
 
257
  def get_dataloader(
 
263
  data_list_key=split,
264
  base_dir=args.data_root,
265
  )
266
+ data_list_updated = [
267
+ {**i, 'psa': i.get('psa', [0, 0])}
268
+ for i in data_list
269
+ ]
270
  cache_dir_ = os.path.join(args.logdir, "cache")
271
  os.makedirs(os.path.join(cache_dir_, split), exist_ok=True)
272
+ transform = data_transform(args, split)
273
  dataset = PersistentDataset(
274
+ data=data_list_updated, transform=transform, cache_dir=os.path.join(cache_dir_, split)
275
  )
276
  loader = torch.utils.data.DataLoader(
277
  dataset,
src/model/cspca_model.py CHANGED
@@ -27,7 +27,6 @@ class SimpleNN(nn.Module):
27
  nn.ReLU(),
28
  nn.Dropout(p=0.3),
29
  nn.Linear(128, 1),
30
- nn.Sigmoid(), # since binary classification
31
  )
32
 
33
  def forward(self, x):
@@ -88,9 +87,7 @@ class CSPCAModel(nn.Module):
88
  x = x.reshape(sh[0] * sh[1], sh[2], sh[3], sh[4], sh[5])
89
  x = self.backbone.net(x)
90
  x = x.reshape(sh[0], sh[1], -1)
91
- x = x.permute(1, 0, 2)
92
  x = self.backbone.transformer(x)
93
- x = x.permute(1, 0, 2)
94
  a = self.backbone.attention(x)
95
  a = torch.softmax(a, dim=1)
96
  x = torch.sum(x * a, dim=1)
 
27
  nn.ReLU(),
28
  nn.Dropout(p=0.3),
29
  nn.Linear(128, 1),
 
30
  )
31
 
32
  def forward(self, x):
 
87
  x = x.reshape(sh[0] * sh[1], sh[2], sh[3], sh[4], sh[5])
88
  x = self.backbone.net(x)
89
  x = x.reshape(sh[0], sh[1], -1)
 
90
  x = self.backbone.transformer(x)
 
91
  a = self.backbone.attention(x)
92
  a = torch.softmax(a, dim=1)
93
  x = torch.sum(x * a, dim=1)
src/model/mil.py CHANGED
@@ -130,7 +130,7 @@ class MILModel3D(nn.Module):
130
  self.attention = nn.Sequential(nn.Linear(nfc, 2048), nn.Tanh(), nn.Linear(2048, 1))
131
 
132
  elif self.mil_mode == "att_trans":
133
- transformer = nn.TransformerEncoderLayer(d_model=nfc, nhead=8, dropout=trans_dropout)
134
  self.transformer = nn.TransformerEncoder(transformer, num_layers=trans_blocks)
135
  self.attention = nn.Sequential(nn.Linear(nfc, 2048), nn.Tanh(), nn.Linear(2048, 1))
136
 
@@ -190,9 +190,8 @@ class MILModel3D(nn.Module):
190
  x = self.myfc(x)
191
 
192
  elif self.mil_mode == "att_trans" and self.transformer is not None:
193
- x = x.permute(1, 0, 2)
194
  x = self.transformer(x)
195
- x = x.permute(1, 0, 2)
196
 
197
  a = self.attention(x)
198
  a = torch.softmax(a, dim=1)
 
130
  self.attention = nn.Sequential(nn.Linear(nfc, 2048), nn.Tanh(), nn.Linear(2048, 1))
131
 
132
  elif self.mil_mode == "att_trans":
133
+ transformer = nn.TransformerEncoderLayer(d_model=nfc, nhead=8, dropout=trans_dropout, batch_first=True)
134
  self.transformer = nn.TransformerEncoder(transformer, num_layers=trans_blocks)
135
  self.attention = nn.Sequential(nn.Linear(nfc, 2048), nn.Tanh(), nn.Linear(2048, 1))
136
 
 
190
  x = self.myfc(x)
191
 
192
  elif self.mil_mode == "att_trans" and self.transformer is not None:
193
+
194
  x = self.transformer(x)
 
195
 
196
  a = self.attention(x)
197
  a = torch.softmax(a, dim=1)
src/preprocessing/clip_intensity.py CHANGED
@@ -17,6 +17,10 @@ def clip_adc(args: argparse.Namespace, adc_min = 0.0, adc_max = 3500.0):
17
  for file in tqdm(files):
18
 
19
  adc, header_adc = nrrd.read(os.path.join(args.adc_dir, file))
 
 
 
 
20
  adc_clipped = np.clip(adc, adc_min, adc_max)
21
  adc_normalized = adc_clipped / adc_max
22
  nrrd.write(os.path.join(clip_adc_dir, file), adc_normalized, header_adc)
 
17
  for file in tqdm(files):
18
 
19
  adc, header_adc = nrrd.read(os.path.join(args.adc_dir, file))
20
+
21
+ if np.percentile(adc, 99) < 100:
22
+ adc = adc * 100
23
+
24
  adc_clipped = np.clip(adc, adc_min, adc_max)
25
  adc_normalized = adc_clipped / adc_max
26
  nrrd.write(os.path.join(clip_adc_dir, file), adc_normalized, header_adc)
src/train/train_cspca.py CHANGED
@@ -2,43 +2,143 @@ import torch
2
  import torch.nn as nn
3
  from monai.metrics import Cumulative, CumulativeAverage
4
  from sklearn.metrics import confusion_matrix, roc_auc_score
 
5
 
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  def train_epoch(cspca_model, loader, optimizer, epoch, args):
 
 
 
8
  cspca_model.train()
9
- criterion = nn.BCELoss()
 
 
 
10
  loss = 0.0
11
  run_loss = CumulativeAverage()
12
  targets_cumulative = Cumulative()
13
  preds_cumulative = Cumulative()
14
 
15
  for _, batch_data in enumerate(loader):
 
16
  data = batch_data["image"].as_subclass(torch.Tensor).to(args.device)
17
  target = batch_data["label"].as_subclass(torch.Tensor).to(args.device)
18
  psa_data = batch_data["psa"].as_subclass(torch.Tensor).to(args.device)
19
-
 
 
 
 
 
 
 
 
20
  optimizer.zero_grad()
21
- output = cspca_model(x = data, psa_data = psa_data)
22
  output = output.squeeze(1)
23
- loss = criterion(output, target)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  loss.backward()
25
  optimizer.step()
26
 
27
  targets_cumulative.extend(target.detach().cpu())
28
  preds_cumulative.extend(output.detach().cpu())
29
  run_loss.append(loss.item())
 
30
 
31
  loss_epoch = run_loss.aggregate()
 
32
  target_list = targets_cumulative.get_buffer().cpu().numpy()
33
  pred_list = preds_cumulative.get_buffer().cpu().numpy()
34
  auc_epoch = roc_auc_score(target_list, pred_list)
35
 
36
- return loss_epoch, auc_epoch
37
 
38
 
39
  def val_epoch(cspca_model, loader, epoch, args):
40
  cspca_model.eval()
41
- criterion = nn.BCELoss()
42
  loss = 0.0
43
  run_loss = CumulativeAverage()
44
  targets_cumulative = Cumulative()
 
2
  import torch.nn as nn
3
  from monai.metrics import Cumulative, CumulativeAverage
4
  from sklearn.metrics import confusion_matrix, roc_auc_score
5
+ import argparse
6
 
7
 
8
+ def get_lambda_att(epoch: int, max_lambda: float = 2.0, warmup_epochs: int = 10) -> float:
9
+ if epoch < warmup_epochs:
10
+ return (epoch / warmup_epochs) * max_lambda
11
+ else:
12
+ return max_lambda
13
+
14
+ def get_attention_scores(
15
+ data: torch.Tensor,
16
+ target: torch.Tensor,
17
+ heatmap: torch.Tensor,
18
+ mask: torch.Tensor,
19
+ args: argparse.Namespace,
20
+ ) -> tuple[torch.Tensor, torch.Tensor]:
21
+ """
22
+ Compute attention scores from heatmaps and shuffle data accordingly.
23
+ This function generates attention scores based on spatial heatmaps, applies
24
+ sharpening, and creates shuffled versions of the input data and attention
25
+ labels. For PI-RADS 2 (target < 1), uniform attention scores are assigned.
26
+ Args:
27
+ data (torch.Tensor): Input data tensor of shape (batch_size, num_patches, ...).
28
+ target (torch.Tensor): Target labels tensor of shape (batch_size,).
29
+ heatmap (torch.Tensor): Attention heatmap tensor corresponding to input patches.
30
+ args: Arguments object containing device specification.
31
+ Returns:
32
+ tuple: A tuple containing:
33
+ - att_labels (torch.Tensor): Sharpened and normalized attention scores
34
+ of shape (batch_size, num_patches), moved to args.device.
35
+ - shuffled_images (torch.Tensor): Randomly permuted data samples
36
+ of shape (batch_size, num_patches, ...), moved to args.device.
37
+ Note:
38
+ - Attention scores are computed by summing heatmap values across spatial dimensions.
39
+ - Data and attention labels are shuffled with the same permutation per sample.
40
+ - PI-RADS 2 samples receive uniform attention distribution.
41
+ - Attention scores are squared for sharpening and then normalized.
42
+ """
43
+
44
+ attention_score = torch.zeros((data.shape[0], data.shape[1]))
45
+ for i in range(data.shape[0]):
46
+ sample = heatmap[i]
47
+ heatmap_patches = sample.squeeze(1)
48
+ raw_scores_unfil = heatmap_patches.view(len(heatmap_patches), -1).sum(dim=1)
49
+
50
+ prostate_mask = mask[i]
51
+ mask_patches = prostate_mask.squeeze(1)
52
+ valid_counts = (mask_patches != 0).sum(dim=(1, 2, 3))
53
+
54
+ raw_scores = raw_scores_unfil / valid_counts
55
+ attention_score[i] = raw_scores / raw_scores.sum()
56
+ shuffled_images = torch.empty_like(data).to(args.device)
57
+ att_labels = torch.empty_like(attention_score).to(args.device)
58
+ for i in range(data.shape[0]):
59
+ perm = torch.randperm(data.shape[1])
60
+ shuffled_images[i] = data[i, perm]
61
+ att_labels[i] = attention_score[i, perm]
62
+
63
+ att_labels[torch.argwhere(target < 1)] = torch.ones_like(att_labels[0]) / len(
64
+ att_labels[0]
65
+ ) # For PI-RADS 2, uniform scores across patches
66
+ att_labels = att_labels**4 # Sharpening
67
+ att_labels = att_labels / att_labels.sum(dim=1, keepdim=True)
68
+
69
+ return att_labels, shuffled_images
70
+
71
  def train_epoch(cspca_model, loader, optimizer, epoch, args):
72
+
73
+ lambda_att = get_lambda_att(epoch, warmup_epochs=25)
74
+
75
  cspca_model.train()
76
+ criterion = nn.BCEWithLogitsLoss()
77
+ att_criterion = nn.CosineSimilarity(dim=1, eps=1e-6)
78
+
79
+ run_att_loss = CumulativeAverage()
80
  loss = 0.0
81
  run_loss = CumulativeAverage()
82
  targets_cumulative = Cumulative()
83
  preds_cumulative = Cumulative()
84
 
85
  for _, batch_data in enumerate(loader):
86
+ eps = 1e-8
87
  data = batch_data["image"].as_subclass(torch.Tensor).to(args.device)
88
  target = batch_data["label"].as_subclass(torch.Tensor).to(args.device)
89
  psa_data = batch_data["psa"].as_subclass(torch.Tensor).to(args.device)
90
+
91
+ if args.use_heatmap:
92
+ att_labels, shuffled_images = get_attention_scores(
93
+ data, target, batch_data["final_heatmap"], batch_data["smooth_mask"], args
94
+ )
95
+ att_labels = att_labels + eps
96
+ else:
97
+ shuffled_images = data.to(args.device)
98
+
99
  optimizer.zero_grad()
100
+ output = cspca_model(x = shuffled_images, psa_data = psa_data)
101
  output = output.squeeze(1)
102
+ class_loss = criterion(output, target)
103
+ if args.use_heatmap:
104
+ sh = shuffled_images.shape
105
+ x = shuffled_images.reshape(sh[0] * sh[1], sh[2], sh[3], sh[4], sh[5])
106
+ x = cspca_model.backbone.net(x)
107
+ x = x.reshape(sh[0], sh[1], -1)
108
+ x = x.to(torch.float32)
109
+ x = cspca_model.backbone.transformer(x)
110
+ x_detach = x.detach()
111
+ a = cspca_model.backbone.attention(x_detach)
112
+ a = a.squeeze(-1)
113
+ a = a + eps
114
+ att_preds = torch.softmax(a, dim=1)
115
+ attn_loss = 1 - att_criterion(att_preds, att_labels).mean()
116
+ loss = class_loss + (lambda_att * attn_loss)
117
+ else:
118
+ loss = class_loss
119
+ attn_loss = torch.tensor(0.0)
120
+
121
+
122
  loss.backward()
123
  optimizer.step()
124
 
125
  targets_cumulative.extend(target.detach().cpu())
126
  preds_cumulative.extend(output.detach().cpu())
127
  run_loss.append(loss.item())
128
+ run_att_loss.append(attn_loss.item())
129
 
130
  loss_epoch = run_loss.aggregate()
131
+ attn_loss_epoch = run_att_loss.aggregate()
132
  target_list = targets_cumulative.get_buffer().cpu().numpy()
133
  pred_list = preds_cumulative.get_buffer().cpu().numpy()
134
  auc_epoch = roc_auc_score(target_list, pred_list)
135
 
136
+ return loss_epoch, attn_loss_epoch, auc_epoch
137
 
138
 
139
  def val_epoch(cspca_model, loader, epoch, args):
140
  cspca_model.eval()
141
+ criterion = nn.BCEWithLogitsLoss()
142
  loss = 0.0
143
  run_loss = CumulativeAverage()
144
  targets_cumulative = Cumulative()
src/train/train_pirads.py CHANGED
@@ -108,9 +108,7 @@ def train_epoch(model, loader, optimizer, scaler, epoch, args):
108
  # Classification Loss
109
  logits_attn = model(shuffled_images, no_head=True)
110
  x = logits_attn.to(torch.float32)
111
- x = x.permute(1, 0, 2)
112
  x = model.transformer(x)
113
- x = x.permute(1, 0, 2)
114
  a = model.attention(x)
115
  a = torch.softmax(a, dim=1)
116
  x = torch.sum(x * a, dim=1)
@@ -119,9 +117,8 @@ def train_epoch(model, loader, optimizer, scaler, epoch, args):
119
  # Attention Loss
120
  if args.use_heatmap:
121
  y = logits_attn.to(torch.float32)
122
- y = y.permute(1, 0, 2)
123
  y = model.transformer(y)
124
- y_detach = y.permute(1, 0, 2).detach()
125
  b = model.attention(y_detach)
126
  b = b.squeeze(-1)
127
  b = b + eps
 
108
  # Classification Loss
109
  logits_attn = model(shuffled_images, no_head=True)
110
  x = logits_attn.to(torch.float32)
 
111
  x = model.transformer(x)
 
112
  a = model.attention(x)
113
  a = torch.softmax(a, dim=1)
114
  x = torch.sum(x * a, dim=1)
 
117
  # Attention Loss
118
  if args.use_heatmap:
119
  y = logits_attn.to(torch.float32)
 
120
  y = model.transformer(y)
121
+ y_detach = y.detach()
122
  b = model.attention(y_detach)
123
  b = b.squeeze(-1)
124
  b = b + eps
tcia_dataset.ipynb ADDED
@@ -0,0 +1,886 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 7,
6
+ "id": "25801f80",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import os\n",
11
+ "import nrrd\n",
12
+ "import numpy as np\n",
13
+ "import nrrd\n",
14
+ "import SimpleITK as sitk\n",
15
+ "from AIAH_utility.viewer import BasicViewer\n",
16
+ "from tqdm import tqdm\n",
17
+ "import re\n",
18
+ "import pandas as pd\n",
19
+ "import json"
20
+ ]
21
+ },
22
+ {
23
+ "cell_type": "markdown",
24
+ "id": "e128f8a8",
25
+ "metadata": {},
26
+ "source": [
27
+ "### DICOM to NRRD"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "code",
32
+ "execution_count": 29,
33
+ "id": "94df8d07",
34
+ "metadata": {},
35
+ "outputs": [
36
+ {
37
+ "name": "stdout",
38
+ "output_type": "stream",
39
+ "text": [
40
+ "353\n"
41
+ ]
42
+ },
43
+ {
44
+ "data": {
45
+ "text/plain": [
46
+ "'\\nfor file in os.listdir(data_dir):\\n if not os.path.isfile(os.path.join(data_dir, file)):\\n if len(os.listdir(os.path.join(data_dir, file))) > 1:\\n print(file)\\n'"
47
+ ]
48
+ },
49
+ "execution_count": 29,
50
+ "metadata": {},
51
+ "output_type": "execute_result"
52
+ }
53
+ ],
54
+ "source": [
55
+ "data_dir = '/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/manifest-1777460989222/prostate_mri_us_biopsy'\n",
56
+ "out_dir = '/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/'\n",
57
+ "print(len(os.listdir(data_dir)))\n",
58
+ "'''\n",
59
+ "for file in os.listdir(data_dir):\n",
60
+ " if not os.path.isfile(os.path.join(data_dir, file)):\n",
61
+ " if len(os.listdir(os.path.join(data_dir, file))) > 1:\n",
62
+ " print(file)\n",
63
+ "''' "
64
+ ]
65
+ },
66
+ {
67
+ "cell_type": "code",
68
+ "execution_count": 18,
69
+ "id": "5be2e411",
70
+ "metadata": {},
71
+ "outputs": [],
72
+ "source": [
73
+ "\n",
74
+ "\n",
75
+ "def identify_mri_sequence(dicom_dir):\n",
76
+ " # 1. Get all DICOM files in the folder\n",
77
+ " reader = sitk.ImageSeriesReader()\n",
78
+ " series_IDs = reader.GetGDCMSeriesIDs(dicom_dir)\n",
79
+ " \n",
80
+ " if not series_IDs:\n",
81
+ " print(\"No DICOM files found.\")\n",
82
+ " return None\n",
83
+ "\n",
84
+ " # Get the filenames for the first series found\n",
85
+ " dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir, series_IDs[0])\n",
86
+ " first_file = dicom_names[0] # We only need to check the first slice's header\n",
87
+ "\n",
88
+ " # 2. Read only the header information (fast, doesn't load image pixels)\n",
89
+ " file_reader = sitk.ImageFileReader()\n",
90
+ " file_reader.SetFileName(first_file)\n",
91
+ " file_reader.ReadImageInformation()\n",
92
+ "\n",
93
+ " # 3. Extract the Series Description (DICOM Tag: 0008,103E)\n",
94
+ " # Using a try/except because occasionally some anonymized DICOMs strip this tag\n",
95
+ " try:\n",
96
+ " series_description = file_reader.GetMetaData(\"0008|103e\").lower()\n",
97
+ " except RuntimeError:\n",
98
+ " series_description = \"unknown (tag missing)\"\n",
99
+ "\n",
100
+ " #print(f\"Raw DICOM Series Description: '{series_description}'\")\n",
101
+ "\n",
102
+ " # 4. Keyword matching to identify the sequence\n",
103
+ " sequence_type = \"Unclassified\"\n",
104
+ " desc_lower = series_description.lower()\n",
105
+ " dwi_keywords = [\"dwi\", \"calc_bval\", \"ax\", \"bval\"]\n",
106
+ "\n",
107
+ " if \"t2\" in desc_lower:\n",
108
+ " sequence_type = \"t2\"\n",
109
+ " elif \"adc\" in desc_lower:\n",
110
+ " sequence_type = \"adc\"\n",
111
+ " elif any(word in desc_lower for word in dwi_keywords) or re.search(r'b\\d+', desc_lower):\n",
112
+ " sequence_type = \"dwi\"\n",
113
+ "\n",
114
+ " \n",
115
+ " #print(f\"Identified Sequence Type: {sequence_type}\")\n",
116
+ " return sequence_type, series_description\n",
117
+ "\n",
118
+ "\n",
119
+ "\n",
120
+ "def dicom_to_nrrd(dicom_dir, output_filepath):\n",
121
+ " # 1. Initialize the ImageSeriesReader\n",
122
+ " reader = sitk.ImageSeriesReader()\n",
123
+ "\n",
124
+ " # 2. Find the DICOM series within the folder\n",
125
+ " # A single folder might contain multiple scans (e.g., a T1 and a T2). \n",
126
+ " # This function groups them by their unique Series Instance UID.\n",
127
+ " series_IDs = reader.GetGDCMSeriesIDs(dicom_dir)\n",
128
+ " \n",
129
+ " if not series_IDs:\n",
130
+ " print(f\"Error: No DICOM series found in the directory {dicom_dir}.\")\n",
131
+ " return\n",
132
+ "\n",
133
+ " # Assuming you want the first (or only) series in the folder\n",
134
+ " series_ID = series_IDs[0]\n",
135
+ " \n",
136
+ " # 3. Get the list of files belonging to this specific series.\n",
137
+ " # SimpleITK automatically sorts them by spatial position/instance number here.\n",
138
+ " dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir, series_ID)\n",
139
+ " reader.SetFileNames(dicom_names)\n",
140
+ "\n",
141
+ " #print(f\"Found series {series_ID}\")\n",
142
+ " #print(f\"Reading {len(dicom_names)} DICOM files...\")\n",
143
+ "\n",
144
+ " # 4. Read the files into a single 3D image object\n",
145
+ " image = reader.Execute()\n",
146
+ " '''\n",
147
+ " # (Optional) Print out the header info that SimpleITK extracted\n",
148
+ " print(\"\\nExtracted Header Information:\")\n",
149
+ " print(f\"Size (X, Y, Z): {image.GetSize()}\")\n",
150
+ " print(f\"Spacing (X, Y, Z): {image.GetSpacing()}\")\n",
151
+ " print(f\"Origin (X, Y, Z): {image.GetOrigin()}\")\n",
152
+ " print(f\"Direction Cosine Matrix: {image.GetDirection()}\\n\")\n",
153
+ "\n",
154
+ " # 5. Write the 3D image to an NRRD file\n",
155
+ " # SimpleITK automatically translates the spatial metadata into the NRRD header format.\n",
156
+ " '''\n",
157
+ " sitk.WriteImage(image, output_filepath)\n",
158
+ " #print(f\"Successfully saved 3D volume to: {output_filepath}\")\n",
159
+ "\n",
160
+ "\n",
161
+ "\n",
162
+ "\n"
163
+ ]
164
+ },
165
+ {
166
+ "cell_type": "code",
167
+ "execution_count": 19,
168
+ "id": "0dc03ac0",
169
+ "metadata": {},
170
+ "outputs": [],
171
+ "source": [
172
+ "import logging\n",
173
+ "\n",
174
+ "\n",
175
+ "# Keep your basic logging config\n",
176
+ "logging.basicConfig(\n",
177
+ " filename='dicom_warnings.log',\n",
178
+ " filemode='a',\n",
179
+ " level=logging.WARNING,\n",
180
+ " format='%(asctime)s - %(levelname)s - %(message)s'\n",
181
+ ")\n",
182
+ "\n",
183
+ "class SimpleITKWarningTracker(sitk.LoggerBase):\n",
184
+ " def __init__(self, logger: logging.Logger = logging.getLogger(\"SimpleITK\")):\n",
185
+ " super().__init__()\n",
186
+ " self._logger = logger\n",
187
+ " \n",
188
+ " # --- NEW ADDITIONS ---\n",
189
+ " self.current_uid = None\n",
190
+ " self.problematic_uids = set() # Using a set so we don't get duplicates\n",
191
+ "\n",
192
+ " def DisplayWarningText(self, s):\n",
193
+ " # 1. Log to the file, but inject the UID so you know exactly which one failed\n",
194
+ " self._logger.warning(f\"[{self.current_uid}] {s.rstrip()}\")\n",
195
+ " \n",
196
+ " # 2. Capture the UID into our set\n",
197
+ " if self.current_uid is not None:\n",
198
+ " self.problematic_uids.add(self.current_uid)\n",
199
+ "\n",
200
+ " def DisplayErrorText(self, s):\n",
201
+ " self._logger.error(f\"[{self.current_uid}] {s.rstrip()}\")\n",
202
+ " if self.current_uid is not None:\n",
203
+ " self.problematic_uids.add(self.current_uid)\n",
204
+ "\n",
205
+ " # Standard passthroughs for everything else\n",
206
+ " def DisplayText(self, s): self._logger.info(s.rstrip())\n",
207
+ " def DisplayGenericOutputText(self, s): self._logger.info(s.rstrip())\n",
208
+ " def DisplayDebugText(self, s): self._logger.debug(s.rstrip())"
209
+ ]
210
+ },
211
+ {
212
+ "cell_type": "code",
213
+ "execution_count": 32,
214
+ "id": "71e971f6",
215
+ "metadata": {},
216
+ "outputs": [
217
+ {
218
+ "name": "stdout",
219
+ "output_type": "stream",
220
+ "text": [
221
+ "✅ SUCCESS: All three folders contain the exact same files.\n",
222
+ "Total files per folder: 336\n"
223
+ ]
224
+ }
225
+ ],
226
+ "source": [
227
+ "\n",
228
+ "\n",
229
+ "\n",
230
+ "def get_clean_file_set(folder_path):\n",
231
+ " \"\"\"\n",
232
+ " Returns a set of filenames in a folder, \n",
233
+ " ignoring hidden files like .DS_Store.\n",
234
+ " \"\"\"\n",
235
+ " if not os.path.exists(folder_path):\n",
236
+ " print(f\"Warning: Folder not found -> {folder_path}\")\n",
237
+ " return set()\n",
238
+ " \n",
239
+ " return set(f for f in os.listdir(folder_path) if not f.startswith('.'))\n",
240
+ "\n",
241
+ "def audit_mri_folders(t2_dir, dwi_dir, adc_dir):\n",
242
+ " # 1. Grab the sets of files from each folder\n",
243
+ " t2_files = get_clean_file_set(t2_dir)\n",
244
+ " dwi_files = get_clean_file_set(dwi_dir)\n",
245
+ " adc_files = get_clean_file_set(adc_dir)\n",
246
+ " \n",
247
+ " # 2. Check for absolute perfection\n",
248
+ " if t2_files == dwi_files == adc_files:\n",
249
+ " print(\"✅ SUCCESS: All three folders contain the exact same files.\")\n",
250
+ " print(f\"Total files per folder: {len(t2_files)}\")\n",
251
+ " return\n",
252
+ "\n",
253
+ " # 3. If they don't match, figure out exactly what went wrong\n",
254
+ " print(\"❌ MISMATCH DETECTED: The folders do not have the same files.\\n\")\n",
255
+ " \n",
256
+ " # Create a master list of EVERY unique file found across all three folders\n",
257
+ " all_known_files = t2_files | dwi_files | adc_files\n",
258
+ " print(f\"Total unique cases found across all folders: {len(all_known_files)}\\n\")\n",
259
+ " \n",
260
+ " # Subtracting a folder's files from the master list reveals exactly what it is missing\n",
261
+ " missing_from_t2 = all_known_files - t2_files\n",
262
+ " missing_from_dwi = all_known_files - dwi_files\n",
263
+ " missing_from_adc = all_known_files - adc_files\n",
264
+ " \n",
265
+ " # 4. Print the detailed report\n",
266
+ " if missing_from_t2:\n",
267
+ " print(f\"Missing from T2 ({len(missing_from_t2)} files):\")\n",
268
+ " for f in missing_from_t2: print(f\" - {f}\")\n",
269
+ " print()\n",
270
+ " \n",
271
+ " if missing_from_dwi:\n",
272
+ " print(f\"Missing from DWI ({len(missing_from_dwi)} files):\")\n",
273
+ " for f in missing_from_dwi: print(f\" - {f}\")\n",
274
+ " print()\n",
275
+ " \n",
276
+ " if missing_from_adc:\n",
277
+ " print(f\"Missing from ADC ({len(missing_from_adc)} files):\")\n",
278
+ " for f in missing_from_adc: print(f\" - {f}\")\n",
279
+ " print()\n",
280
+ "\n",
281
+ "# ==========================================\n",
282
+ "# Run the auditor\n",
283
+ "# ==========================================\n",
284
+ "\n",
285
+ "t2_folder = os.path.join(out_dir, \"t2\")\n",
286
+ "adc_folder = os.path.join(out_dir, \"adc\")\n",
287
+ "dwi_folder = os.path.join(out_dir, \"dwi\")\n",
288
+ "audit_mri_folders(t2_folder, dwi_folder, adc_folder)\n"
289
+ ]
290
+ },
291
+ {
292
+ "cell_type": "code",
293
+ "execution_count": 28,
294
+ "id": "bcf8ecfd",
295
+ "metadata": {},
296
+ "outputs": [
297
+ {
298
+ "name": "stdout",
299
+ "output_type": "stream",
300
+ "text": [
301
+ "--- Running in ACTIVE DELETE mode ---\n",
302
+ "\n",
303
+ "🧹 Cleaning T2 folder (6 orphan files found)...\n",
304
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.115783195095504090298691430241561836887.nrrd\n",
305
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.73817330564297277045402819763812121589.nrrd\n",
306
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.57998954095255348100273416607857947941.nrrd\n",
307
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.71945175083621641395573395567726460544.nrrd\n",
308
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.70790563074707380958612618193727014402.nrrd\n",
309
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.99743335712334762363647206251029743912.nrrd\n",
310
+ "🧹 Cleaning DWI folder (3 orphan files found)...\n",
311
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.188718538729460449753205424834579770704.nrrd\n",
312
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.263457364888301550375193480516807182751.nrrd\n",
313
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.338205517577935843058592556989878736092.nrrd\n",
314
+ "🧹 Cleaning ADC folder (3 orphan files found)...\n",
315
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.188718538729460449753205424834579770704.nrrd\n",
316
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.263457364888301550375193480516807182751.nrrd\n",
317
+ " [Deleted] -> /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.338205517577935843058592556989878736092.nrrd\n",
318
+ "\n",
319
+ "========================================\n",
320
+ "✅ Cleanup complete. 12 orphan files permanently deleted.\n",
321
+ "========================================\n"
322
+ ]
323
+ }
324
+ ],
325
+ "source": [
326
+ "\n",
327
+ "def get_clean_file_set(folder_path):\n",
328
+ " if not os.path.exists(folder_path):\n",
329
+ " return set()\n",
330
+ " return set(f for f in os.listdir(folder_path) if not f.startswith('.'))\n",
331
+ "\n",
332
+ "def remove_orphan_files(t2_dir, dwi_dir, adc_dir, dry_run=True):\n",
333
+ " # 1. Grab the sets of files from each folder\n",
334
+ " t2_files = get_clean_file_set(t2_dir)\n",
335
+ " dwi_files = get_clean_file_set(dwi_dir)\n",
336
+ " adc_files = get_clean_file_set(adc_dir)\n",
337
+ " \n",
338
+ " # 2. Find the \"Perfect Matches\" (files that exist in ALL three folders)\n",
339
+ " common_files = t2_files & dwi_files & adc_files\n",
340
+ " \n",
341
+ " # 3. Setup directories to check\n",
342
+ " directories = [\n",
343
+ " (\"T2\", t2_dir, t2_files),\n",
344
+ " (\"DWI\", dwi_dir, dwi_files),\n",
345
+ " (\"ADC\", adc_dir, adc_files)\n",
346
+ " ]\n",
347
+ " \n",
348
+ " total_deleted = 0\n",
349
+ " \n",
350
+ " print(f\"--- Running in {'DRY RUN (Safe)' if dry_run else 'ACTIVE DELETE'} mode ---\\n\")\n",
351
+ " \n",
352
+ " # 4. Loop through each folder and delete files that aren't in the common pool\n",
353
+ " for name, dir_path, files in directories:\n",
354
+ " orphans = files - common_files\n",
355
+ " \n",
356
+ " if not orphans:\n",
357
+ " print(f\"✅ {name} folder is already clean.\")\n",
358
+ " continue\n",
359
+ " \n",
360
+ " print(f\"🧹 Cleaning {name} folder ({len(orphans)} orphan files found)...\")\n",
361
+ " for orphan in orphans:\n",
362
+ " file_path = os.path.join(dir_path, orphan)\n",
363
+ " \n",
364
+ " if dry_run:\n",
365
+ " print(f\" [Would Delete] -> {file_path}\")\n",
366
+ " else:\n",
367
+ " try:\n",
368
+ " os.remove(file_path)\n",
369
+ " print(f\" [Deleted] -> {file_path}\")\n",
370
+ " total_deleted += 1\n",
371
+ " except Exception as e:\n",
372
+ " print(f\" [Error] -> Could not delete {file_path}: {e}\")\n",
373
+ " \n",
374
+ " # 5. Final Summary\n",
375
+ " print(\"\\n\" + \"=\"*40)\n",
376
+ " if dry_run:\n",
377
+ " print(\"🛑 This was a DRY RUN. No files were actually deleted.\")\n",
378
+ " print(\"To permanently delete these files, change 'dry_run=False' in the script.\")\n",
379
+ " else:\n",
380
+ " print(f\"✅ Cleanup complete. {total_deleted} orphan files permanently deleted.\")\n",
381
+ " print(\"=\"*40)\n",
382
+ "\n",
383
+ "\n",
384
+ "\n",
385
+ "# Run it once with True to see what will happen.\n",
386
+ "# Change to False when you are ready to delete.\n",
387
+ "remove_orphan_files(t2_folder, dwi_folder, adc_folder, dry_run=False)"
388
+ ]
389
+ },
390
+ {
391
+ "cell_type": "code",
392
+ "execution_count": 31,
393
+ "id": "eeeae4de",
394
+ "metadata": {},
395
+ "outputs": [
396
+ {
397
+ "name": "stdout",
398
+ "output_type": "stream",
399
+ "text": [
400
+ "--- Running in ACTIVE DELETE mode ---\n",
401
+ "\n",
402
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.271349975011933739358676771067980247539.nrrd\n",
403
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.271349975011933739358676771067980247539.nrrd\n",
404
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.271349975011933739358676771067980247539.nrrd\n",
405
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.271349975011933739358676771067980247539.nrrd\n",
406
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.157054200734545334178920696903308865130.nrrd\n",
407
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.157054200734545334178920696903308865130.nrrd\n",
408
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.157054200734545334178920696903308865130.nrrd\n",
409
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.157054200734545334178920696903308865130.nrrd\n",
410
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.200600558595197166260928361613464269449.nrrd\n",
411
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.200600558595197166260928361613464269449.nrrd\n",
412
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.200600558595197166260928361613464269449.nrrd\n",
413
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.200600558595197166260928361613464269449.nrrd\n",
414
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.289285689423372767351515144958159282808.nrrd\n",
415
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.289285689423372767351515144958159282808.nrrd\n",
416
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.289285689423372767351515144958159282808.nrrd\n",
417
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.289285689423372767351515144958159282808.nrrd\n",
418
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.35974516785743444930073912740842262500.nrrd\n",
419
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.35974516785743444930073912740842262500.nrrd\n",
420
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.35974516785743444930073912740842262500.nrrd\n",
421
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.35974516785743444930073912740842262500.nrrd\n",
422
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.222692088368162168440753904825013091532.nrrd\n",
423
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.222692088368162168440753904825013091532.nrrd\n",
424
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.222692088368162168440753904825013091532.nrrd\n",
425
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.222692088368162168440753904825013091532.nrrd\n",
426
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.293474077433499282588478960568109869597.nrrd\n",
427
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.293474077433499282588478960568109869597.nrrd\n",
428
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.293474077433499282588478960568109869597.nrrd\n",
429
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.293474077433499282588478960568109869597.nrrd\n",
430
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.27532522792473057810687373197700121309.nrrd\n",
431
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.27532522792473057810687373197700121309.nrrd\n",
432
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.27532522792473057810687373197700121309.nrrd\n",
433
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.27532522792473057810687373197700121309.nrrd\n",
434
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.239133116807588836296851847147700495752.nrrd\n",
435
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.239133116807588836296851847147700495752.nrrd\n",
436
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.239133116807588836296851847147700495752.nrrd\n",
437
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.239133116807588836296851847147700495752.nrrd\n",
438
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.227398582376562514609189345768801704404.nrrd\n",
439
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.227398582376562514609189345768801704404.nrrd\n",
440
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.227398582376562514609189345768801704404.nrrd\n",
441
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.227398582376562514609189345768801704404.nrrd\n",
442
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.17858146857447950947031599871374548190.nrrd\n",
443
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.17858146857447950947031599871374548190.nrrd\n",
444
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.17858146857447950947031599871374548190.nrrd\n",
445
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.17858146857447950947031599871374548190.nrrd\n",
446
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.58794500493878684077452076491488634390.nrrd\n",
447
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.58794500493878684077452076491488634390.nrrd\n",
448
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.58794500493878684077452076491488634390.nrrd\n",
449
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.58794500493878684077452076491488634390.nrrd\n",
450
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.81532906654688928393462620176242817061.nrrd\n",
451
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.81532906654688928393462620176242817061.nrrd\n",
452
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.81532906654688928393462620176242817061.nrrd\n",
453
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.81532906654688928393462620176242817061.nrrd\n",
454
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.191423027298795057608214686303929880649.nrrd\n",
455
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.191423027298795057608214686303929880649.nrrd\n",
456
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.191423027298795057608214686303929880649.nrrd\n",
457
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.191423027298795057608214686303929880649.nrrd\n",
458
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.126258218767968455484960185246643285805.nrrd\n",
459
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.126258218767968455484960185246643285805.nrrd\n",
460
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.126258218767968455484960185246643285805.nrrd\n",
461
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.126258218767968455484960185246643285805.nrrd\n",
462
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.269756171143806913587962183077398983517.nrrd\n",
463
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.269756171143806913587962183077398983517.nrrd\n",
464
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.269756171143806913587962183077398983517.nrrd\n",
465
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.269756171143806913587962183077398983517.nrrd\n",
466
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.2559995703676043679243885739443956302.nrrd\n",
467
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.2559995703676043679243885739443956302.nrrd\n",
468
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.2559995703676043679243885739443956302.nrrd\n",
469
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.2559995703676043679243885739443956302.nrrd\n",
470
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.303594905040699125673449924926620511136.nrrd\n",
471
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.303594905040699125673449924926620511136.nrrd\n",
472
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.303594905040699125673449924926620511136.nrrd\n",
473
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.303594905040699125673449924926620511136.nrrd\n",
474
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.180804642082221780467908983684463723846.nrrd\n",
475
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.180804642082221780467908983684463723846.nrrd\n",
476
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.180804642082221780467908983684463723846.nrrd\n",
477
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.180804642082221780467908983684463723846.nrrd\n",
478
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.66056987725403634915688248148006143729.nrrd\n",
479
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.66056987725403634915688248148006143729.nrrd\n",
480
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.66056987725403634915688248148006143729.nrrd\n",
481
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.66056987725403634915688248148006143729.nrrd\n",
482
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.166203233136016003612123639659775561310.nrrd\n",
483
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.166203233136016003612123639659775561310.nrrd\n",
484
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.166203233136016003612123639659775561310.nrrd\n",
485
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.166203233136016003612123639659775561310.nrrd\n",
486
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.316568402619756678511945455287211834297.nrrd\n",
487
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.316568402619756678511945455287211834297.nrrd\n",
488
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.316568402619756678511945455287211834297.nrrd\n",
489
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.316568402619756678511945455287211834297.nrrd\n",
490
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.61883652307704129385239767933223238210.nrrd\n",
491
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.61883652307704129385239767933223238210.nrrd\n",
492
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.61883652307704129385239767933223238210.nrrd\n",
493
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.61883652307704129385239767933223238210.nrrd\n",
494
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.76984882504559873118066683047314715566.nrrd\n",
495
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.76984882504559873118066683047314715566.nrrd\n",
496
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.76984882504559873118066683047314715566.nrrd\n",
497
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.76984882504559873118066683047314715566.nrrd\n",
498
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.6472933400809907963632821901296644146.nrrd\n",
499
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.6472933400809907963632821901296644146.nrrd\n",
500
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.6472933400809907963632821901296644146.nrrd\n",
501
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.6472933400809907963632821901296644146.nrrd\n",
502
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.123852469207623629143713323014693546787.nrrd\n",
503
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.123852469207623629143713323014693546787.nrrd\n",
504
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.123852469207623629143713323014693546787.nrrd\n",
505
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.123852469207623629143713323014693546787.nrrd\n",
506
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.139333718917371128605552042413390118594.nrrd\n",
507
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.139333718917371128605552042413390118594.nrrd\n",
508
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.139333718917371128605552042413390118594.nrrd\n",
509
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.139333718917371128605552042413390118594.nrrd\n",
510
+ "Targeting: 1.3.6.1.4.1.14519.5.2.1.193542470393177903430906454740944922059.nrrd\n",
511
+ " [T2] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/t2/1.3.6.1.4.1.14519.5.2.1.193542470393177903430906454740944922059.nrrd\n",
512
+ " [DWI] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/dwi/1.3.6.1.4.1.14519.5.2.1.193542470393177903430906454740944922059.nrrd\n",
513
+ " [ADC] -> [Deleted]: /sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/adc/1.3.6.1.4.1.14519.5.2.1.193542470393177903430906454740944922059.nrrd\n",
514
+ "\n",
515
+ "========================================\n",
516
+ "✅ Cleanup complete. 84 files permanently deleted.\n",
517
+ "========================================\n"
518
+ ]
519
+ }
520
+ ],
521
+ "source": [
522
+ "import os\n",
523
+ "\n",
524
+ "def delete_bad_uids(t2_dir, dwi_dir, adc_dir, bad_uids_list, dry_run=True):\n",
525
+ " # The folders we need to check\n",
526
+ " directories = {\n",
527
+ " \"T2\": t2_dir,\n",
528
+ " \"DWI\": dwi_dir,\n",
529
+ " \"ADC\": adc_dir\n",
530
+ " }\n",
531
+ " \n",
532
+ " total_deleted = 0\n",
533
+ " total_not_found = 0\n",
534
+ " \n",
535
+ " print(f\"--- Running in {'DRY RUN (Safe)' if dry_run else 'ACTIVE DELETE'} mode ---\\n\")\n",
536
+ " \n",
537
+ " # Loop through every bad UID in your list\n",
538
+ " for uid in bad_uids_list:\n",
539
+ " filename = f\"{uid}.nrrd\"\n",
540
+ " print(f\"Targeting: {filename}\")\n",
541
+ " \n",
542
+ " # Check all three folders for this specific file\n",
543
+ " for folder_name, folder_path in directories.items():\n",
544
+ " file_path = os.path.join(folder_path, filename)\n",
545
+ " \n",
546
+ " if os.path.exists(file_path):\n",
547
+ " if dry_run:\n",
548
+ " print(f\" [{folder_name}] -> [Would Delete]: {file_path}\")\n",
549
+ " else:\n",
550
+ " try:\n",
551
+ " os.remove(file_path)\n",
552
+ " print(f\" [{folder_name}] -> [Deleted]: {file_path}\")\n",
553
+ " total_deleted += 1\n",
554
+ " except Exception as e:\n",
555
+ " print(f\" [{folder_name}] -> [Error deleting]: {file_path} - {e}\")\n",
556
+ " else:\n",
557
+ " # Optional: Uncomment the line below if you want to know when a file was already missing\n",
558
+ " # print(f\" [{folder_name}] -> Not found (already gone)\")\n",
559
+ " total_not_found += 1\n",
560
+ " \n",
561
+ " # Final Summary\n",
562
+ " print(\"\\n\" + \"=\"*40)\n",
563
+ " if dry_run:\n",
564
+ " print(\"🛑 This was a DRY RUN. No files were actually deleted.\")\n",
565
+ " print(\"To permanently delete these files, change 'dry_run=False' in the script.\")\n",
566
+ " else:\n",
567
+ " print(f\"✅ Cleanup complete. {total_deleted} files permanently deleted.\")\n",
568
+ " print(\"=\"*40)\n",
569
+ "\n",
570
+ "\n",
571
+ "\n",
572
+ "# Paste your list of bad UIDs here\n",
573
+ "# (e.g., from the 'bad_uids = list(tracker.problematic_uids)' step earlier)\n",
574
+ "\n",
575
+ "bad_uids = list(tracker.problematic_uids)\n",
576
+ "\n",
577
+ "# Run it once with True to verify. \n",
578
+ "# Change to False to actually delete the files.\n",
579
+ "delete_bad_uids(t2_folder, dwi_folder, adc_folder, bad_uids, dry_run=False)"
580
+ ]
581
+ },
582
+ {
583
+ "cell_type": "code",
584
+ "execution_count": 26,
585
+ "id": "9f58e561",
586
+ "metadata": {},
587
+ "outputs": [
588
+ {
589
+ "name": "stderr",
590
+ "output_type": "stream",
591
+ "text": [
592
+ "100%|██████████| 353/353 [12:23<00:00, 2.11s/it]"
593
+ ]
594
+ },
595
+ {
596
+ "name": "stdout",
597
+ "output_type": "stream",
598
+ "text": [
599
+ "1.3.6.1.4.1.14519.5.2.1.271349975011933739358676771067980247539\n",
600
+ "1.3.6.1.4.1.14519.5.2.1.157054200734545334178920696903308865130\n",
601
+ "1.3.6.1.4.1.14519.5.2.1.200600558595197166260928361613464269449\n",
602
+ "1.3.6.1.4.1.14519.5.2.1.289285689423372767351515144958159282808\n",
603
+ "1.3.6.1.4.1.14519.5.2.1.35974516785743444930073912740842262500\n",
604
+ "1.3.6.1.4.1.14519.5.2.1.222692088368162168440753904825013091532\n",
605
+ "1.3.6.1.4.1.14519.5.2.1.293474077433499282588478960568109869597\n",
606
+ "1.3.6.1.4.1.14519.5.2.1.27532522792473057810687373197700121309\n",
607
+ "1.3.6.1.4.1.14519.5.2.1.239133116807588836296851847147700495752\n",
608
+ "1.3.6.1.4.1.14519.5.2.1.227398582376562514609189345768801704404\n",
609
+ "1.3.6.1.4.1.14519.5.2.1.17858146857447950947031599871374548190\n",
610
+ "1.3.6.1.4.1.14519.5.2.1.58794500493878684077452076491488634390\n",
611
+ "1.3.6.1.4.1.14519.5.2.1.81532906654688928393462620176242817061\n",
612
+ "1.3.6.1.4.1.14519.5.2.1.191423027298795057608214686303929880649\n",
613
+ "1.3.6.1.4.1.14519.5.2.1.126258218767968455484960185246643285805\n",
614
+ "1.3.6.1.4.1.14519.5.2.1.269756171143806913587962183077398983517\n",
615
+ "1.3.6.1.4.1.14519.5.2.1.2559995703676043679243885739443956302\n",
616
+ "1.3.6.1.4.1.14519.5.2.1.303594905040699125673449924926620511136\n",
617
+ "1.3.6.1.4.1.14519.5.2.1.180804642082221780467908983684463723846\n",
618
+ "1.3.6.1.4.1.14519.5.2.1.66056987725403634915688248148006143729\n",
619
+ "1.3.6.1.4.1.14519.5.2.1.166203233136016003612123639659775561310\n",
620
+ "1.3.6.1.4.1.14519.5.2.1.316568402619756678511945455287211834297\n",
621
+ "1.3.6.1.4.1.14519.5.2.1.61883652307704129385239767933223238210\n",
622
+ "1.3.6.1.4.1.14519.5.2.1.76984882504559873118066683047314715566\n",
623
+ "1.3.6.1.4.1.14519.5.2.1.6472933400809907963632821901296644146\n",
624
+ "1.3.6.1.4.1.14519.5.2.1.123852469207623629143713323014693546787\n",
625
+ "1.3.6.1.4.1.14519.5.2.1.139333718917371128605552042413390118594\n",
626
+ "1.3.6.1.4.1.14519.5.2.1.193542470393177903430906454740944922059\n"
627
+ ]
628
+ },
629
+ {
630
+ "name": "stderr",
631
+ "output_type": "stream",
632
+ "text": [
633
+ "\n"
634
+ ]
635
+ },
636
+ {
637
+ "data": {
638
+ "text/plain": [
639
+ "'\\n\\nst_uid = os.listdir(os.path.join(data_dir, file))[0]\\nprint(st_uid)\\nseqs = os.listdir(os.path.join(data_dir, file, st_uid))\\nseqs = os.listdir(os.path.join(data_dir, file, st_uid))\\nprint(seqs)\\nseq = os.path.join(data_dir, file, st_uid, seqs[1])\\nlen(os.listdir(seq))\\n'"
640
+ ]
641
+ },
642
+ "execution_count": 26,
643
+ "metadata": {},
644
+ "output_type": "execute_result"
645
+ }
646
+ ],
647
+ "source": [
648
+ "tracker = SimpleITKWarningTracker()\n",
649
+ "tracker.SetAsGlobalITKLogger()\n",
650
+ "for file in tqdm(os.listdir(data_dir)):\n",
651
+ " if not os.path.isfile(os.path.join(data_dir, file)):\n",
652
+ " for st_uid in os.listdir(os.path.join(data_dir, file)):\n",
653
+ " tracker.current_uid = st_uid\n",
654
+ " for seq in os.listdir(os.path.join(data_dir, file, st_uid)):\n",
655
+ " seq_path = os.path.join(data_dir, file, st_uid, seq)\n",
656
+ " seq_type, _ = identify_mri_sequence(seq_path)\n",
657
+ " output_nrrd_path = os.path.join(out_dir,seq_type, f\"{st_uid}.nrrd\") \n",
658
+ "\n",
659
+ " dicom_to_nrrd(seq_path, output_nrrd_path)\n",
660
+ " bool_ = True\n",
661
+ "\n",
662
+ " \n",
663
+ " \n",
664
+ "bad_uids = list(tracker.problematic_uids)\n",
665
+ "for uid in bad_uids:\n",
666
+ " print(uid) \n",
667
+ "\n",
668
+ "\n",
669
+ "'''\n",
670
+ "\n",
671
+ "st_uid = os.listdir(os.path.join(data_dir, file))[0]\n",
672
+ "print(st_uid)\n",
673
+ "seqs = os.listdir(os.path.join(data_dir, file, st_uid))\n",
674
+ "seqs = os.listdir(os.path.join(data_dir, file, st_uid))\n",
675
+ "print(seqs)\n",
676
+ "seq = os.path.join(data_dir, file, st_uid, seqs[1])\n",
677
+ "len(os.listdir(seq))\n",
678
+ "'''"
679
+ ]
680
+ },
681
+ {
682
+ "cell_type": "code",
683
+ "execution_count": null,
684
+ "id": "0cef4bfd",
685
+ "metadata": {},
686
+ "outputs": [],
687
+ "source": []
688
+ },
689
+ {
690
+ "cell_type": "code",
691
+ "execution_count": null,
692
+ "id": "3d4dc04d",
693
+ "metadata": {},
694
+ "outputs": [],
695
+ "source": []
696
+ },
697
+ {
698
+ "cell_type": "code",
699
+ "execution_count": null,
700
+ "id": "42734001",
701
+ "metadata": {},
702
+ "outputs": [],
703
+ "source": []
704
+ },
705
+ {
706
+ "cell_type": "markdown",
707
+ "id": "57a302e3",
708
+ "metadata": {},
709
+ "source": [
710
+ "### Extract JSON"
711
+ ]
712
+ },
713
+ {
714
+ "cell_type": "code",
715
+ "execution_count": 2,
716
+ "id": "656c529e",
717
+ "metadata": {},
718
+ "outputs": [
719
+ {
720
+ "name": "stdout",
721
+ "output_type": "stream",
722
+ "text": [
723
+ "True\n"
724
+ ]
725
+ }
726
+ ],
727
+ "source": [
728
+ "data_dir = '/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/'\n",
729
+ "meta_folder = \"/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/manifest-1777460989222/metadata\"\n",
730
+ "t2_dir = os.path.join(data_dir, \"t2\")\n",
731
+ "adc_dir = os.path.join(data_dir, \"adc\")\n",
732
+ "dwi_dir = os.path.join(data_dir, \"dwi\")\n",
733
+ "print(os.listdir(t2_dir) == os.listdir(adc_dir) == os.listdir(dwi_dir))"
734
+ ]
735
+ },
736
+ {
737
+ "cell_type": "code",
738
+ "execution_count": 3,
739
+ "id": "40a75bd8",
740
+ "metadata": {},
741
+ "outputs": [],
742
+ "source": [
743
+ "st_id = os.listdir(t2_dir)\n",
744
+ "\n",
745
+ "df_parent = pd.read_excel(os.path.join(meta_folder, \"Prostate-MRI-US-Biopsy-NBIA-manifest_v2_20231020-nbia-digest.xlsx\"))\n",
746
+ "df = pd.read_excel(os.path.join(meta_folder, \"TCIA-Biopsy-Data_2020-07-14.xlsx\"))\n"
747
+ ]
748
+ },
749
+ {
750
+ "cell_type": "code",
751
+ "execution_count": 4,
752
+ "id": "991f96b3",
753
+ "metadata": {},
754
+ "outputs": [
755
+ {
756
+ "data": {
757
+ "text/plain": [
758
+ "51"
759
+ ]
760
+ },
761
+ "execution_count": 4,
762
+ "metadata": {},
763
+ "output_type": "execute_result"
764
+ }
765
+ ],
766
+ "source": [
767
+ "exclude = []\n",
768
+ "test_list = []\n",
769
+ "for file in st_id:\n",
770
+ " \n",
771
+ " id = file.split(\".nrrd\")[0]\n",
772
+ " filtered_parent = df_parent[df_parent[\"Study Instance UID\"] == id]\n",
773
+ " patient_ids = filtered_parent[\"Patient ID\"].unique()\n",
774
+ " if len(patient_ids) != 1:\n",
775
+ " print(f\"Warning: Multiple patient IDs found for Study Instance UID {id}: {patient_ids}\")\n",
776
+ " else:\n",
777
+ " patient_id = patient_ids[0]\n",
778
+ " \n",
779
+ " t2_id = filtered_parent[filtered_parent[\"Series Description\"].str.contains(\"t2\", case=False, na=False)][\"Series Instance UID\"].iloc[0]\n",
780
+ " filtered_df = df[df[\"Series Instance UID (MRI)\"] == t2_id]\n",
781
+ " assert filtered_df[\"Patient Number\"].unique()[0] == patient_id, f\"Mismatch: Patient ID from parent manifest ({patient_id}) does not match Patient Number in biopsy data ({filtered_df['Patient Number'].unique()[0]}) for Study Instance UID {id}\"\n",
782
+ " if filtered_df[\"Series Instance UID (US)\"].unique().shape[0] == 1:\n",
783
+ " assert filtered_df[\"PSA (ng/mL)\"].unique().shape[0] == 1, f\"Expected 1 unique PSA value for Study Instance UID {id}, but found {filtered_df['PSA (ng/mL)'].unique().shape[0]}\"\n",
784
+ " assert filtered_df[\"Prostate Volume (CC)\"].unique().shape[0] == 1, f\"Expected 1 unique Volume value for Study Instance UID {id}, but found {filtered_df['Volume (cc)'].unique().shape[0]}\"\n",
785
+ " gg = (filtered_df['Primary Gleason'].fillna(0) + filtered_df['Secondary Gleason'].fillna(0)).max()\n",
786
+ " temp = {}\n",
787
+ " temp[\"image\"] = file\n",
788
+ " temp[\"psa\"] = [filtered_df[\"PSA (ng/mL)\"].unique()[0], filtered_df[\"Prostate Volume (CC)\"].unique()[0] ]\n",
789
+ " temp[\"dwi\"] = os.path.join(\"/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/processed/DWI_registered\", file)\n",
790
+ " temp[\"adc\"] = os.path.join(\"/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/processed/ADC_clipped\", file)\n",
791
+ " temp[\"heatmap\"] = os.path.join(\"/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/processed/heatmaps\", file)\n",
792
+ " temp[\"mask\"] = os.path.join(\"/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/processed/prostate_mask\", file)\n",
793
+ " temp[\"smooth_mask\"] = os.path.join(\"/sc-projects/sc-proj-cc06-ag-ki-radiologie/TCIA_prostate/nrrd_files/processed/smooth_prostate_mask\", file)\n",
794
+ " temp[\"label\"] = 1.0 if gg>=7 else 0.0\n",
795
+ " test_list.append(temp)\n",
796
+ " else:\n",
797
+ " exclude.append(id)\n",
798
+ "len(exclude)"
799
+ ]
800
+ },
801
+ {
802
+ "cell_type": "code",
803
+ "execution_count": 8,
804
+ "id": "791947ae",
805
+ "metadata": {},
806
+ "outputs": [],
807
+ "source": [
808
+ "test_data = {\"test\": test_list}\n",
809
+ "with open(\"dataset/tcia_test_data.json\", \"w\") as f:\n",
810
+ " json.dump(test_data, f, indent=4)"
811
+ ]
812
+ },
813
+ {
814
+ "cell_type": "code",
815
+ "execution_count": 9,
816
+ "id": "e6b71ff5",
817
+ "metadata": {},
818
+ "outputs": [
819
+ {
820
+ "data": {
821
+ "text/plain": [
822
+ "285"
823
+ ]
824
+ },
825
+ "execution_count": 9,
826
+ "metadata": {},
827
+ "output_type": "execute_result"
828
+ }
829
+ ],
830
+ "source": [
831
+ "len(test_list)"
832
+ ]
833
+ },
834
+ {
835
+ "cell_type": "code",
836
+ "execution_count": 10,
837
+ "id": "ccd43996",
838
+ "metadata": {},
839
+ "outputs": [
840
+ {
841
+ "data": {
842
+ "text/plain": [
843
+ "(array([0., 1.]), array([130, 155]))"
844
+ ]
845
+ },
846
+ "execution_count": 10,
847
+ "metadata": {},
848
+ "output_type": "execute_result"
849
+ }
850
+ ],
851
+ "source": [
852
+ "labs = [i['label'] for i in test_list ]\n",
853
+ "np.unique(np.array(labs), return_counts=True)\n"
854
+ ]
855
+ },
856
+ {
857
+ "cell_type": "code",
858
+ "execution_count": null,
859
+ "id": "87e48c41",
860
+ "metadata": {},
861
+ "outputs": [],
862
+ "source": []
863
+ }
864
+ ],
865
+ "metadata": {
866
+ "kernelspec": {
867
+ "display_name": "foundation",
868
+ "language": "python",
869
+ "name": "python3"
870
+ },
871
+ "language_info": {
872
+ "codemirror_mode": {
873
+ "name": "ipython",
874
+ "version": 3
875
+ },
876
+ "file_extension": ".py",
877
+ "mimetype": "text/x-python",
878
+ "name": "python",
879
+ "nbconvert_exporter": "python",
880
+ "pygments_lexer": "ipython3",
881
+ "version": "3.9.21"
882
+ }
883
+ },
884
+ "nbformat": 4,
885
+ "nbformat_minor": 5
886
+ }
temp copy.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
temp_2.ipynb CHANGED
The diff for this file is too large to render. See raw diff