| import shutil |
| from pathlib import Path |
|
|
| from nnunetv2.dataset_conversion.Dataset027_ACDC import make_out_dirs |
| from nnunetv2.dataset_conversion.generate_dataset_json import generate_dataset_json |
|
|
|
|
| def copy_files(src_data_dir: Path, src_test_dir: Path, train_dir: Path, labels_dir: Path, test_dir: Path): |
| """Copy files from the EMIDEC dataset to the nnUNet dataset folder. Returns the number of training cases.""" |
| patients_train = sorted([f for f in src_data_dir.iterdir() if f.is_dir()]) |
| patients_test = sorted([f for f in src_test_dir.iterdir() if f.is_dir()]) |
|
|
| |
| for patient in patients_train: |
| train_file = patient / "Images" / f"{patient.name}.nii.gz" |
| label_file = patient / "Contours" / f"{patient.name}.nii.gz" |
| shutil.copy(train_file, train_dir / f"{train_file.stem.split('.')[0]}_0000.nii.gz") |
| shutil.copy(label_file, labels_dir) |
|
|
| |
| for patient in patients_test: |
| test_file = patient / "Images" / f"{patient.name}.nii.gz" |
| shutil.copy(test_file, test_dir / f"{test_file.stem.split('.')[0]}_0000.nii.gz") |
|
|
| return len(patients_train) |
|
|
|
|
| def convert_emidec(src_data_dir: str, src_test_dir: str, dataset_id=27): |
| out_dir, train_dir, labels_dir, test_dir = make_out_dirs(dataset_id=dataset_id, task_name="EMIDEC") |
| num_training_cases = copy_files(Path(src_data_dir), Path(src_test_dir), train_dir, labels_dir, test_dir) |
|
|
| generate_dataset_json( |
| str(out_dir), |
| channel_names={ |
| 0: "cineMRI", |
| }, |
| labels={ |
| "background": 0, |
| "cavity": 1, |
| "normal_myocardium": 2, |
| "myocardial_infarction": 3, |
| "no_reflow": 4, |
| }, |
| file_ending=".nii.gz", |
| num_training_cases=num_training_cases, |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| import argparse |
|
|
| parser = argparse.ArgumentParser() |
| parser.add_argument("-i", "--input_dir", type=str, help="The EMIDEC dataset directory.") |
| parser.add_argument("-t", "--test_dir", type=str, help="The EMIDEC test set directory.") |
| parser.add_argument( |
| "-d", "--dataset_id", required=False, type=int, default=115, help="nnU-Net Dataset ID, default: 115" |
| ) |
| args = parser.parse_args() |
| print("Converting...") |
| convert_emidec(args.input_dir, args.test_dir, args.dataset_id) |
| print("Done!") |
|
|