code: def get_affine_from_reference(ref):
      """Returns the affine defining the reference space.
  
      Parameters
      ----------
      ref : str or :class:`Nifti1Image` object or ndarray shape (4, 4)
          If str then it's the filename of reference file that will be loaded
          using :func:`nibabel.load` in order to obtain the affine.
          If :class:`Nifti1Image` object then the affine is obtained from it.
          If ndarray shape (4, 4) then it's the affine.
  
      Returns
      -------
      affine : ndarray (4, 4)
          Transformation matrix mapping voxel space to RAS+mm space.
      """
      if hasattr(ref, "affine"):
          return ref.affine
  
      if hasattr(ref, "shape"):
          if ref.shape != (4, 4):
              msg = "`ref` needs to be a numpy array with shape (4, 4)!"
              raise ValueError(msg)
  
          return ref
  
      # Assume `ref` is the name of a neuroimaging file.
      return nibabel.load(ref).affine
  
imports: import itertools
  import nibabel
label_desc: Use image node_id 1 for calling a global function with example usage: get_affine_from_reference(ref) and returns: nibabel, ref, ref