| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| import numpy as np |
| from collections import OrderedDict |
|
|
| from batchgenerators.utilities.file_and_folder_operations import * |
| from nnunet.paths import nnUNet_raw_data |
| import SimpleITK as sitk |
| import shutil |
|
|
|
|
| def copy_BraTS_segmentation_and_convert_labels(in_file, out_file): |
| |
| |
| img = sitk.ReadImage(in_file) |
| img_npy = sitk.GetArrayFromImage(img) |
|
|
| uniques = np.unique(img_npy) |
| for u in uniques: |
| if u not in [0, 1, 2, 4]: |
| raise RuntimeError('unexpected label') |
|
|
| seg_new = np.zeros_like(img_npy) |
| seg_new[img_npy == 4] = 3 |
| seg_new[img_npy == 2] = 1 |
| seg_new[img_npy == 1] = 2 |
| img_corr = sitk.GetImageFromArray(seg_new) |
| img_corr.CopyInformation(img) |
| sitk.WriteImage(img_corr, out_file) |
|
|
|
|
| if __name__ == "__main__": |
| """ |
| REMEMBER TO CONVERT LABELS BACK TO BRATS CONVENTION AFTER PREDICTION! |
| """ |
|
|
| task_name = "Task043_BraTS2019" |
| downloaded_data_dir = "/home/sdp/MLPERF/Brats2019_DATA/MICCAI_BraTS_2019_Data_Training" |
|
|
| target_base = join(nnUNet_raw_data, task_name) |
| target_imagesTr = join(target_base, "imagesTr") |
| target_imagesVal = join(target_base, "imagesVal") |
| target_imagesTs = join(target_base, "imagesTs") |
| target_labelsTr = join(target_base, "labelsTr") |
|
|
| maybe_mkdir_p(target_imagesTr) |
| maybe_mkdir_p(target_imagesVal) |
| maybe_mkdir_p(target_imagesTs) |
| maybe_mkdir_p(target_labelsTr) |
|
|
| patient_names = [] |
| for tpe in ["HGG", "LGG"]: |
| cur = join(downloaded_data_dir, tpe) |
| for p in subdirs(cur, join=False): |
| patdir = join(cur, p) |
| patient_name = tpe + "__" + p |
| patient_names.append(patient_name) |
| t1 = join(patdir, p + "_t1.nii.gz") |
| t1c = join(patdir, p + "_t1ce.nii.gz") |
| t2 = join(patdir, p + "_t2.nii.gz") |
| flair = join(patdir, p + "_flair.nii.gz") |
| seg = join(patdir, p + "_seg.nii.gz") |
|
|
| assert all([ |
| isfile(t1), |
| isfile(t1c), |
| isfile(t2), |
| isfile(flair), |
| isfile(seg) |
| ]), "%s" % patient_name |
|
|
| shutil.copy(t1, join(target_imagesTr, patient_name + "_0000.nii.gz")) |
| shutil.copy(t1c, join(target_imagesTr, patient_name + "_0001.nii.gz")) |
| shutil.copy(t2, join(target_imagesTr, patient_name + "_0002.nii.gz")) |
| shutil.copy(flair, join(target_imagesTr, patient_name + "_0003.nii.gz")) |
|
|
| copy_BraTS_segmentation_and_convert_labels(seg, join(target_labelsTr, patient_name + ".nii.gz")) |
|
|
|
|
| json_dict = OrderedDict() |
| json_dict['name'] = "BraTS2019" |
| json_dict['description'] = "nothing" |
| json_dict['tensorImageSize'] = "4D" |
| json_dict['reference'] = "see BraTS2019" |
| json_dict['licence'] = "see BraTS2019 license" |
| json_dict['release'] = "0.0" |
| json_dict['modality'] = { |
| "0": "T1", |
| "1": "T1ce", |
| "2": "T2", |
| "3": "FLAIR" |
| } |
| json_dict['labels'] = { |
| "0": "background", |
| "1": "edema", |
| "2": "non-enhancing", |
| "3": "enhancing", |
| } |
| json_dict['numTraining'] = len(patient_names) |
| json_dict['numTest'] = 0 |
| json_dict['training'] = [{'image': "./imagesTr/%s.nii.gz" % i, "label": "./labelsTr/%s.nii.gz" % i} for i in |
| patient_names] |
| json_dict['test'] = [] |
|
|
| save_json(json_dict, join(target_base, "dataset.json")) |
|
|
| downloaded_data_dir = "/home/sdp/MLPERF/Brats2019_DATA/MICCAI_BraTS_2019_Data_Validation" |
|
|
| for p in subdirs(downloaded_data_dir, join=False): |
| patdir = join(downloaded_data_dir, p) |
| patient_name = p |
| t1 = join(patdir, p + "_t1.nii.gz") |
| t1c = join(patdir, p + "_t1ce.nii.gz") |
| t2 = join(patdir, p + "_t2.nii.gz") |
| flair = join(patdir, p + "_flair.nii.gz") |
|
|
| assert all([ |
| isfile(t1), |
| isfile(t1c), |
| isfile(t2), |
| isfile(flair), |
| ]), "%s" % patient_name |
|
|
| shutil.copy(t1, join(target_imagesVal, patient_name + "_0000.nii.gz")) |
| shutil.copy(t1c, join(target_imagesVal, patient_name + "_0001.nii.gz")) |
| shutil.copy(t2, join(target_imagesVal, patient_name + "_0002.nii.gz")) |
| shutil.copy(flair, join(target_imagesVal, patient_name + "_0003.nii.gz")) |
|
|
| """ |
| #I dont have the testing data |
| downloaded_data_dir = "/home/fabian/Downloads/BraTS2018_train_val_test_data/MICCAI_BraTS_2018_Data_Testing_FIsensee" |
| |
| for p in subdirs(downloaded_data_dir, join=False): |
| patdir = join(downloaded_data_dir, p) |
| patient_name = p |
| t1 = join(patdir, p + "_t1.nii.gz") |
| t1c = join(patdir, p + "_t1ce.nii.gz") |
| t2 = join(patdir, p + "_t2.nii.gz") |
| flair = join(patdir, p + "_flair.nii.gz") |
| |
| assert all([ |
| isfile(t1), |
| isfile(t1c), |
| isfile(t2), |
| isfile(flair), |
| ]), "%s" % patient_name |
| |
| shutil.copy(t1, join(target_imagesTs, patient_name + "_0000.nii.gz")) |
| shutil.copy(t1c, join(target_imagesTs, patient_name + "_0001.nii.gz")) |
| shutil.copy(t2, join(target_imagesTs, patient_name + "_0002.nii.gz")) |
| shutil.copy(flair, join(target_imagesTs, patient_name + "_0003.nii.gz"))""" |
|
|