def save_load_save_load(self, dimensions): path = self.dir / f'img{dimensions}d.nii' shape = [4] for _ in range(dimensions - 1): shape.append(6) shape = *shape[1:4], shape[0] # save channels in last dim nii = nib.Nifti1Image(np.random.rand(*shape), np.eye(4)) nii.to_filename(path) read_nii_tensor, _ = io.read_image(path) assert read_nii_tensor.shape == shape assert read_nii_tensor.ndim == dimensions image = ScalarImage(path) image.save(path) read_tio_tensor, _ = io.read_image(path) assert tuple(read_tio_tensor.shape) == shape assert read_tio_tensor.ndim == dimensions, read_tio_tensor.shape
def apply_transform(self, subject): corrupted_query = subject.filename.split(".")[0] + "*" files = glob(self.path_corrupt + "/**/" + corrupted_query, recursive=True) corrupt_path = files[random.randint(0, len(files) - 1)] transformed, _ = read_image(corrupt_path) vol = subject['im'][tio.DATA].float() transformed = transformed.float() if self.norm_mode == 1: vol = vol / vol.max() transformed = transformed / transformed.max() elif self.norm_mode == 2: vol = (vol - vol.min()) / (vol.max() - vol.min()) transformed = (transformed - transformed.min()) / ( transformed.max() - transformed.min()) subject['im'][tio.DATA] = torch.cat([vol, transformed], 0) return subject
def test_4d_not_supported(self): path = self.dir / 'img4d.nii' nii = nib.Nifti1Image(np.random.rand(4, 5, 6, 7), np.eye(4)) nii.to_filename(str(path)) with self.assertRaises(ValueError): io.read_image(path)
def test_read_dicom_dir(self): io.read_image(self.dicom_dir)
def test_read_dicom_file(self): io.read_image(self.dicom_path)
def test_read_image(self): # I need to find something readable by nib but not sitk io.read_image(self.nii_path) io.read_image(self.nii_path, itk_first=True)
def test_read_dicom_dir(self): tensor, _ = io.read_image(self.dicom_dir) self.assertEqual(tuple(tensor.shape), (1, 88, 128, 17))