code: def align_image_with_openpnm(im):
      r
      if im.ndim != im.squeeze().ndim:
          warnings.warn('Input image conains a singleton axis:' + str(im.shape) +
                        ' Reduce dimensionality with np.squeeze(im) to avoid' +
                        ' unexpected behavior.')
      im = sp.copy(im)
      if im.ndim == 2:
          im = (sp.swapaxes(im, 1, 0))
          im = im[-1::-1, :]
      elif im.ndim == 3:
          im = (sp.swapaxes(im, 2, 0))
          im = im[:, -1::-1, :]
      return im
docs: r"""
      Rotates an image to agree with the coordinates used in OpenPNM.  It is
      unclear why they are not in agreement to start with.  This is necessary
      for overlaying the image and the network in Paraview.
  
      Parameters
      ----------
      im : ND-array
          The image to be rotated.  Can be the Boolean image of the pore space or
          any other image of interest.
  
      Returns
      -------
      image : ND-array
          Returns a copy of ``im`` rotated accordingly.