def try_stirtonifti(): time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Starting STIR to Nifti test...\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n' ) time.sleep(0.5) import pSTIR # Input filenames nifti_filename = SIRF_PATH + '/data/examples/Registration/test2.nii.gz' # Load the image as a NiftiImageData3D image_nifti = pReg.NiftiImageData3D(nifti_filename) # Read as STIRImageData, convert to NiftiImageData3D and save to file image_stir = pSTIR.ImageData(nifti_filename) image_nifti_from_stir = pReg.NiftiImageData3D(image_stir) image_nifti_from_stir.write('results/stir_to_nifti.nii', image_nifti.get_original_datatype()) # Compare the two if image_nifti != image_nifti_from_stir: raise AssertionError("Conversion from STIR to Nifti failed.") time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Finished STIR to Nifti test.\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n' ) time.sleep(0.5)
def try_niftiimage(): time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Starting NiftiImageData test...\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n' ) time.sleep(0.5) # default constructor a = pReg.NiftiImageData() if a.handle is None: raise AssertionError() # Read from file b = pReg.NiftiImageData(ref_aladin_filename) # Save to file b.write(save_nifti_image) # Fill b.fill(100) # Get max if b.get_max() != 100: raise AssertionError('NiftiImageData fill()/get_max() failed.') # Get min if b.get_min() != 100: raise AssertionError('NiftiImageData fill()/get_min() failed.') # Deep copy d = b.deep_copy() if d.handle == b.handle: raise AssertionError('NiftiImageData deep_copy failed.') if d != b: raise AssertionError("NiftiImageData deep_copy failed.") # Addition e = d + d if abs(e.get_max() - 2 * d.get_max()) > 0.0001: raise AssertionError('NiftiImageData __add__/get_max() failed.') # Subtraction e = d - d if abs(e.get_max()) > 0.0001: raise AssertionError('NiftiImageData __sub__ failed.') # Sum if abs(e.get_sum()) > 0.0001: raise AssertionError('NiftiImageData get_sum() failed.') # Add num to image q = e + 1 if q.get_max() != e.get_max() + 1: raise AssertionError('NiftiImageData __add__ val failed.') # Subtract num from image r = e - 1 if r.get_max() != e.get_max() - 1: raise AssertionError('NiftiImageData __sub__ val failed.') # Multiply image by num s = e * 10 if s.get_max() != e.get_max() * 10: raise AssertionError('NiftiImageData __mul__ val failed.') # Dimensions f = e.get_dimensions() if not np.array_equal(f, [3, 64, 64, 64, 1, 1, 1, 1]): raise AssertionError('NiftiImageData get_dimensions() failed.') # Get as array arr = d.as_array() if arr.max() != 100: raise AssertionError('NiftiImageData as_array().max() failed.') if arr.ndim != 3: raise AssertionError('NiftiImageData as_array() ndims failed.') if arr.shape != (64, 64, 64): raise AssertionError('NiftiImageData as_array().shape failed.') # Test saving to datatype ref_aladin.write(output_float, 16) # float ref_aladin_float = pReg.NiftiImageData3D(output_float) arr1 = ref_aladin.as_array() arr2 = ref_aladin_float.as_array() if not np.array_equal(arr1, arr2): raise AssertionError( "NiftiImageData::write()/change_datatype() failed.") # Test print methods q.print_header() pReg.NiftiImageData.print_headers([q, s]) # Crop image min_ = [] max_ = [] for i in range(0, 7): min_.append(0) max_.append(f[i + 1] - 1) max_[2] = 62 s = e s.crop(min_, max_) if s.as_array().shape != (64, 64, 63): raise AssertionError("NiftiImageData crop() failed.") # Get voxel sizes s = b.get_voxel_sizes() if not all( numpy.equal(s, numpy.array([0, 4.0625, 4.0625, 4.0625, 0, 0, 0, 0 ]))): raise AssertionError("NiftiImageData get_voxel_sizes() failed.") # Check upsampling/downsampling u = pReg.NiftiImageData(ref_aladin_filename) original_spacing = u.get_voxel_sizes() original_spacing = original_spacing[1:4] upsampled_spacing = [ original_spacing[0] / 2, original_spacing[1] / 4, original_spacing[2] ] downsampled_spacing = [ original_spacing[0] * 2, original_spacing[1] * 4, original_spacing[2] ] # Downsample v = u.deep_copy() v.set_voxel_spacing(downsampled_spacing, 3) v.write(save_nifti_image_downsample) # Upsample then downsample, check nothing has changed w = u.deep_copy() w.set_voxel_spacing(upsampled_spacing, 0) w.write(save_nifti_image_upsample) x = w.deep_copy() x.set_voxel_spacing(original_spacing, 0) x.write(save_nifti_image_up_downsample) pReg.NiftiImageData.print_headers([u, v, w, x]) if x != u: raise AssertionError('NiftiImageData::upsample()/downsample() failed.') # Check get_contains_nans x_arr = x.as_array() x_arr.fill(0) x.fill(x_arr) if x.get_contains_nans(): raise AssertionError('NiftiImageData::get_contains_nans() 1 failed.') x_arr[1] = np.nan x.fill(x_arr) if not x.get_contains_nans(): raise AssertionError('NiftiImageData::get_contains_nans() 2 failed.') time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Finished NiftiImageData test.\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n' ) time.sleep(0.5)
def try_niftiimage3d(): time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Starting NiftiImageData3D test...\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n' ) time.sleep(0.5) # default constructor a = pReg.NiftiImageData3D() if a.handle is None: raise AssertionError() # Read from file b = pReg.NiftiImageData3D(ref_aladin_filename) # Save to file b.write(save_nifti_image_3d) # Fill b.fill(100) # Get max if b.get_max() != 100: raise AssertionError('NiftiImageData3D fill()/get_max() failed.') # Get min if b.get_min() != 100: raise AssertionError('NiftiImageData3D fill()/get_min() failed.') # Deep copy d = b.deep_copy() if d.handle == b.handle: raise AssertionError('NiftiImageData3D deep_copy failed.') if d != b: raise AssertionError("NiftiImageData3D deep_copy failed.") # Addition e = d + d if abs(e.get_max() - 2 * d.get_max()) > 0.0001: raise AssertionError('NiftiImageData3D __add__/get_max() failed.') # Subtraction e = d - d if abs(e.get_max()) > 0.0001: raise AssertionError('NiftiImageData3D __sub__ failed.') # Sum if abs(e.get_sum()) > 0.0001: raise AssertionError('NiftiImageData3D get_sum() failed.') # Dimensions f = e.get_dimensions() if not np.array_equal(f, [3, 64, 64, 64, 1, 1, 1, 1]): raise AssertionError('NiftiImageData3D get_dimensions() failed.') # Get as array arr = d.as_array() if arr.max() != 100: raise AssertionError('NiftiImageData3D as_array().max() failed.') if arr.ndim != 3: raise AssertionError('NiftiImageData3D as_array() ndims failed.') if arr.shape != (64, 64, 64): raise AssertionError('NiftiImageData3D as_array().shape failed.') # try linear algebra h = d / 10000 if abs(h.get_max() - d.get_max() / 10000) > 1e-4: raise AssertionError('NiftiImageData3D linear algebra failed.') time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Finished NiftiImageData3D test.\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n' ) time.sleep(0.5)
aladin_def_inverse = output_prefix + "aladin_def_inverse_%s.nii" aladin_disp_forward = output_prefix + "aladin_disp_forward.nii" aladin_disp_inverse = output_prefix + "aladin_disp_inverse_%s.nii" f3d_def_forward = output_prefix + "f3d_disp_forward.nii" f3d_def_inverse = output_prefix + "f3d_disp_inverse_%s.nii" f3d_disp_forward = output_prefix + "f3d_disp_forward.nii" f3d_disp_inverse = output_prefix + "f3d_disp_inverse_%s.nii" rigid_resample = output_prefix + "rigid_resample.nii" nonrigid_resample_disp = output_prefix + "nonrigid_resample_disp.nii" nonrigid_resample_def = output_prefix + "nonrigid_resample_def.nii" output_weighted_mean = output_prefix + "weighted_mean.nii" output_weighted_mean_def = output_prefix + "weighted_mean_def.nii" output_float = output_prefix + "reg_aladin_float.nii" ref_aladin = pReg.NiftiImageData3D(ref_aladin_filename) flo_aladin = pReg.NiftiImageData3D(flo_aladin_filename) ref_f3d = pReg.NiftiImageData3D(ref_f3d_filename) flo_f3d = pReg.NiftiImageData3D(flo_f3d_filename) # NiftiImageData def try_niftiimage(): time.sleep(0.5) sys.stderr.write( '\n# --------------------------------------------------------------------------------- #\n' ) sys.stderr.write( '# Starting NiftiImageData test...\n') sys.stderr.write( '# --------------------------------------------------------------------------------- #\n'