code: def circ_corrcc(x, y, correction_uniform=False):
      """Correlation coefficient between two circular variables.
  
      Parameters
      ----------
      x : 1-D array_like
          First circular variable (expressed in radians).
      y : 1-D array_like
          Second circular variable (expressed in radians).
      correction_uniform : bool
          Use correction for uniform marginals.
  
      Returns
      -------
      r : float
          Correlation coefficient.
      pval : float
          Uncorrected p-value.
  
      Notes
      -----
      Adapted from the CircStats MATLAB toolbox [1]_.
  
      The range of ``x`` and ``y`` must be either
      :math:`[0, 2\\pi]` or :math:`[-\\pi, \\pi]`. If ``angles`` is not
      expressed in radians (e.g. degrees or 24-hours), please use the
      :py:func:`pingouin.convert_angles` function prior to using the present
      function.
  
      Please note that NaN are automatically removed.
  
      If the ``correction_uniform`` is True, an alternative equation from
      [2]_ (p. 177) is used. If the marginal distribution of ``x`` or ``y`` is
      uniform, the mean is not well defined, which leads to wrong estimates
      of the circular correlation. The alternative equation corrects for this
      by choosing the means in a way that maximizes the positive or negative
      correlation.
  
      References
      ----------
      .. [1] Berens, P. (2009). CircStat: A MATLAB Toolbox for Circular
             Statistics. Journal of Statistical Software, Articles, 31(10), 1–21.
             https://doi.org/10.18637/jss.v031.i10
  
      .. [2] Jammalamadaka, S. R., & Sengupta, A. (2001). Topics in circular
             statistics (Vol. 5). world scientific.
  
      Examples
      --------
      Compute the r and p-value of two circular variables
  
      >>> from pingouin import circ_corrcc
      >>> x = [0.785, 1.570, 3.141, 3.839, 5.934]
      >>> y = [0.593, 1.291, 2.879, 3.892, 6.108]
      >>> r, pval = circ_corrcc(x, y)
      >>> print(round(r, 3), round(pval, 4))
      0.942 0.0658
  
      With the correction for uniform marginals
  
      >>> r, pval = circ_corrcc(x, y, correction_uniform=True)
      >>> print(round(r, 3), round(pval, 4))
      0.547 0.2859
      """
      x = np.asarray(x)
      y = np.asarray(y)
      assert x.size == y.size, "x and y must have the same length."
  
      # Remove NA
      x, y = remove_na(x, y, paired=True)
      n = x.size
  
      # Compute correlation coefficient
      x_sin = np.sin(x - circ_mean(x))
      y_sin = np.sin(y - circ_mean(y))
  
      if not correction_uniform:
          # Similar to np.corrcoef(x_sin, y_sin)[0][1]
          r = np.sum(x_sin * y_sin) / np.sqrt(
              np.sum(x_sin**2) * np.sum(y_sin**2)
          )
      else:
          r_minus = np.abs(np.sum(np.exp((x - y) * 1j)))
          r_plus = np.abs(np.sum(np.exp((x + y) * 1j)))
          denom = 2 * np.sqrt(np.sum(x_sin**2) * np.sum(y_sin**2))
          r = (r_minus - r_plus) / denom
  
      # Compute T- and p-values
      tval = (
          np.sqrt(
              (n * (x_sin**2).mean() * (y_sin**2).mean())
              / np.mean(x_sin**2 * y_sin**2)
          )
          * r
      )
  
      # Approximately distributed as a standard normal
      pval = 2 * norm.sf(abs(tval))
      return r, pval
  
file_path: pingouin/pingouin/circular.py
imports: import numpy
  from scipy.stats import norm
  from .utils import remove_na
label_desc: Use image node_id 6 for calling a global function with example usage: circ_corrcc(x, y, correction_uniform) and returns: r,  pval