code: def fit_shifts(xy, uv):
      
      diff_pts = xy - uv
      Pcoeffs = np.array([1.0,0.0,diff_pts[:,0].mean(dtype=np.float64)])
      Qcoeffs = np.array([0.0,1.0,diff_pts[:,1].mean(dtype=np.float64)])
  
      fit = build_fit(Pcoeffs, Qcoeffs, 'shift')
      resids = diff_pts - fit['offset']
      fit['resids'] = resids
      fit['rms'] = resids.std(axis=0)
      fit['rmse'] = float(np.sqrt(np.mean(2 * resids**2)))
      fit['mae'] = float(np.mean(np.linalg.norm(resids, axis=1)))
  
      return fit
docs: Performs a simple fit for the shift only between
          matched lists of positions 'xy' and 'uv'.
  
          Output: (same as for fit_arrays)
          =================================
          DEVELOPMENT NOTE:
              Checks need to be put in place to verify that
              enough objects are available for a fit.
          =================================