Spaces:
Sleeping
Sleeping
Anirudh Balaraman commited on
Commit ·
f1a8b97
1
Parent(s): a1cc9d3
push latest changes
Browse files- .gitignore +2 -0
- check_tum_datatset.ipynb +0 -0
- config/config_cspca_test.yaml +4 -3
- config/config_cspca_train.yaml +7 -8
- config/config_pirads_test.yaml +1 -1
- config/config_pirads_train.yaml +3 -3
- config/config_preprocess.yaml +4 -4
- dataset/TCIA_test_data.json +0 -0
- dataset/TCIA_test_data_updated_mask.json +0 -0
- dataset/TUM_test.json +0 -0
- dataset/TUM_test_updated.json +953 -0
- dataset/cspca_train.json +0 -0
- dataset/cspca_train_tcia.json +0 -0
- dataset/cspca_train_tcia_tum.json +0 -0
- job_scripts/preprocess.sh +1 -1
- job_scripts/test_cspca.sh +1 -1
- job_scripts/train_cspca.sh +1 -1
- job_scripts/train_pirads.sh +1 -1
- run_cspca.py +27 -29
- run_pirads.py +11 -0
- src/data/custom_transforms.py +33 -0
- src/data/data_loader.py +82 -2
- src/model/cspca_model.py +0 -3
- src/model/mil.py +2 -3
- src/preprocessing/clip_intensity.py +4 -0
- src/train/train_cspca.py +106 -6
- src/train/train_pirads.py +1 -4
- tcia_dataset.ipynb +886 -0
- temp copy.ipynb +0 -0
- temp_2.ipynb +0 -0
.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:
|
| 2 |
-
dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/
|
| 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/
|
|
|
|
| 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:
|
| 2 |
-
dataset_json: /sc-scratch/sc-scratch-cc06-ag-ki-radiologie/prostate_foundation/WSAttention-Prostate/dataset/
|
| 3 |
mil_mode: att_trans
|
| 4 |
tile_count: !!int 40
|
| 5 |
tile_size: !!int 48
|
| 6 |
depth: !!int 3
|
| 7 |
-
|
| 8 |
-
|
| 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
|
| 13 |
-
|
|
|
|
| 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/
|
| 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 |
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
|
| 10 |
epochs: !!int 100
|
| 11 |
batch_size: !!int 8
|
| 12 |
-
optim_lr: !!float 2e-
|
| 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/
|
| 2 |
-
dwi_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/
|
| 3 |
-
adc_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/
|
| 4 |
-
output_dir: /sc-projects/sc-proj-cc06-ag-ki-radiologie/prostate_test/
|
| 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=
|
| 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=
|
| 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=
|
| 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=
|
| 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['
|
| 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 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 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 |
-
|
| 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=
|
| 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 |
-
|
| 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.
|
|
|
|
|
|
|
|
|
|
| 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 =
|
| 22 |
output = output.squeeze(1)
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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.
|
| 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.
|
| 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
|
|
|