code: def image_physical_space_consistency(image1, image2, tolerance=1e-2, datatype=False):
      
      images = [image1, image2]
  
      img1 = images[0]
      for img2 in images[1:]:
          if (not isinstance(img1, ANTsImage)) or (not isinstance(img2, ANTsImage)):
              raise ValueError('Both images must be of class `AntsImage`')
  
          # image dimension check
          if img1.dimension != img2.dimension:
              return False
  
          # image spacing check
          space_diffs = sum([abs(s1-s2)>tolerance for s1, s2 in zip(img1.spacing, img2.spacing)])
          if space_diffs > 0:
              return False
  
          # image origin check
          origin_diffs = sum([abs(s1-s2)>tolerance for s1, s2 in zip(img1.origin, img2.origin)])
          if origin_diffs > 0:
              return False
  
          # image direction check
          origin_diff = np.allclose(img1.direction, img2.direction, atol=tolerance)
          if not origin_diff:
              return False
  
          # data type
          if datatype == True:
              if img1.pixeltype != img2.pixeltype:
                  return False
  
              if img1.components != img2.components:
                  return False
  
      return True
docs: Check if two or more ANTsImage objects occupy the same physical space
      
      ANTsR function: `antsImagePhysicalSpaceConsistency`
  
      Arguments
      ---------
      *images : ANTsImages
          images to compare
  
      tolerance : float
          tolerance when checking origin and spacing
  
      data_type : boolean
          If true, also check that the image data types are the same
  
      Returns
      -------
      boolean
          true if images share same physical space, false otherwise